如何在直方图 x 轴上显示频率为零的值?

How to display values with zero frequency on plotly histogram x-axis?

我有下面的简单数据框 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))

有一个技巧,在 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))
                    )
        )

此处输出: