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

标签 r plotly rounding yaxis rounding-error

我正在尝试向我 Shiny 的仪表板添加一个绘图。 y 轴变量是一个比例,我想将其格式化为百分比。我发现我可以使用布局的 yaxis 设置中的刻度格式功能来完成此操作。然而,由于我的图表中的百分比都很低,我注意到了一些怪癖。

首先,当您将鼠标悬停在数据点上时,y 轴和实际值都会四舍五入到小数点后 0 位。例如,0.0287 和 0.275 都显示为 0.3,尽管它们在图表上的实际位置略有不同,反射(reflect)了真实的基础值(value)。

其次,当 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 这样愚蠢的值)

最佳答案

使用 tickformat = ".2%" 可以解决您的情况(1.和2.)。

显式定义 tickvals(例如 tickvals = seq(.02,.06, .01))将得到 (3.) 的答案。

参见https://plotly.com/r/reference/#Layout_and_layout_style_objects了解更多参数。

简单来说,您可以尝试:

  layout(
    yaxis = list(
      tickformat = ".1%",
      tickvals = seq(.02,.06, .005)
    ))

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

关于R:如何停止在绘图图表上将百分比四舍五入到小数点后 0 位?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68007438/

相关文章:

swift - 向负无穷大舍入负整数商

r - R 中的数据透视表不均匀(长度列)

r - 在 R 3.0.0 for Windows 中使用 {diagram} 的流程图

r - get 中的错误(as.character(FUN),模式= "function",envir = envir)

python - 如何在 python 中创建交互式绘图,根据我单击的位置生成新绘图?

python - 在 Plotly 中,使用 HTML,为什么一些希腊字母可以使用小数而不是实体名称?

linux - R 在 shell 脚本 sh 中处理的文本数据

r - Plotly:如何删除工具提示中的置信区间值(从误差栏中)?

python-2.7 - Python 2.7 round 1 decimal 不正确

c++ - 这是 Clang 的错误还是我的错误?