【问题标题】:How to display values with zero frequency on plotly histogram x-axis?如何在绘图直方图 x 轴上显示频率为零的值?
【发布时间】:2019-05-30 02:54:58
【问题描述】:

我在下面有一个简单的数据框d,我想根据其值的频率创建一个直方图。我正在尝试将初始值设置为0,然后通过5 在x 轴上显示这些值,但这些值似乎都不起作用,因为值从1 开始,然后显示8。我发现发生这种情况是因为我的数据框没有 23 作为值,所以计数停止在 1 并且从 4 开始直到 8 因为我的数据框包含 4,5,6,7,8 作为值所以计数正常停止。

解决方案可能是 2。第一个是找到在轴上显示零频率值的方法,第二个是在轴上没有这些值的情况下设置正确的刻度格式。

我宁愿将一个清晰的情节解决方案作为首选,没有ggplot() 干扰。

d<-data.frame(c(1,5,7,5,4,5,6,7,8,9,10,15,13))
x <- list(
  tick0=0,
  dtick=5

)

# Create the plotly histogram

plot_ly(alpha = 0.9) %>%
  add_histogram(x = as.factor(d[,1]),source="subset") %>%
  # Add titles in plot and axes
  layout(barmode = "overlay",xaxis=x,margin=list(b=100))

【问题讨论】:

  • 省略as.factor(): 即add_histogram(x = d[,1],source="subset") %&gt;% 是否有可能得到你想要的?
  • add_histogram(x = d[,1], xbins = list(start=0, end=20, size=1)) %>%
  • 感谢@tasasaki,它的工作原理是这样的,但条形之间没有间隙,但它很好。只是去除 rhe 因子是具有值范围的肌酸条。

标签: r plotly r-plotly


【解决方案1】:

有一个技巧,在 xaxis 布局中使用 categoryorder = "array"categoryarray = x_axis_values。有了这些,您可以手动设置 xaxis 将包含的值。

我已经修改了一些你的代码示例,但这应该可以解决问题:

# yours data
d = c(1,5,7,5,4,5,6,7,8,9,10,15,13)

# Create the plotly histogram

plot_ly(alpha = 0.9) %>%
  add_histogram(x = as.character(d)
                ) %>%
  # Add titles in plot and axes
  layout(barmode = "overlay",
         margin=list(b=100),
         # Set the xaxis values
         xaxis=list(categoryorder="array",
                    categoryarray = as.character(min(d):max(d))
                    )
        )

这里是输出:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-09
    • 2015-10-11
    • 1970-01-01
    • 2021-05-02
    • 2014-04-22
    相关资源
    最近更新 更多