首页 > 解决方案 > 如何在绘图直方图 x 轴上显示频率为零的值?

问题描述

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

标签: rplotlyr-plotly

解决方案


有一个技巧,在 xaxis 布局中使用categoryorder = "array"and 。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))
                    )
        )

这里的输出:

在此处输入图像描述


推荐阅读