R:如何停止在绘图图表上将百分比四舍五入到 0 位小数?

问题描述

我正在尝试向我闪亮的仪表板添加一个绘图。 y 轴变量是一个比例,我想将其格式化为百分比。我发现我可以使用布局的 yaxis 设置中的 tickformat 功能来做到这一点。但是,由于我图表中的百分比都很低,我注意到了一些怪癖。

首先,当您将鼠标悬停在数据点上时,y 轴和实际值都会四舍五入到 0 位小数。因此,例如 0.0287 和 0.275 都显示为 0.3,即使它们在图表上的实际位置略有不同,反映了真实的潜在价值。

其次,当y轴范围太小,认也四舍五入到小数点0位时,在多个刻度处显示相同的值,刻度间隔也不直观。

我在下面提供了示例代码,改编自 plotly 站点上的示例。 (我只是将值更改为较小的值)。

您可以看到它生成的图表给出了刻度线显示 2%、3%、3%、4%、4%、5%、5%、5%、6%。第一个问题是它具有误导性,其次你可以看到那里有 3x 5%,但只有其他 2x,所以看起来它甚至没有像 4.5%、5%、5.5% 等这样的合理差距,但是而是基于数据值的一些不直观的东西。

library(plotly)

fig <- plot_ly(
  type = "scatter",x = c(1,2,3,4,5,6,7,8,9,10,11,12),y = c(0.0185,0.0382,0.0561,0.0463,0.0596,0.048,0.0287,0.0275,0.0243,0.0429,0.0450,0.0391),mode = "markers+lines") 
fig <- fig %>%
  layout(
    yaxis = list(
      tickformat = "%"
    ))

fig

总结:

我该如何...

  1. 指定如何舍入百分比?
  2. 确保它不会以相同的舍入值多次出现的间隔间隔刻度线?
  3. 确保它在查看小数位时选择一个直观的刻度间隔(例如 0.5 或 0.25,而不是像 0.37 这样愚蠢的东西)

解决方法

在您的情况下,使用 .item { width: calc(25% - 15px); background: teal; } 可以解决(1. 和 2.)。

明确定义 tickformat = ".2%"(例如 tickvals)会回答 (3.)。

有关更多参数,请参阅 https://plotly.com/r/reference/#Layout_and_layout_style_objects

简而言之,您可以尝试:

tickvals = seq(.02,.06,.01)

例如,或根据您的喜好进行修改。

,

另一种方法是手动指定 tickvals 并格式化 ticktext

library(plotly)

fig <- plot_ly(
  type = "scatter",x = c(1,2,3,4,5,6,7,8,9,10,11,12),y = c(0.0185,0.0382,0.0561,0.0463,0.0596,0.048,0.0287,0.0275,0.0243,0.0429,0.0450,0.0391),mode = "markers+lines") 
fig <- fig %>%
  layout(
    yaxis = list(
      tickvals=seq(0,max(y),.005),ticktext=paste0(seq(0,.005)*100,"%")
    ))

fig