在Plotly频率图上设置X轴范围

时间:2017-07-20 20:43:18

标签: r plotly frequency

考虑以下图表:

library(dplyr)
library(plotly)

x <- c(1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 5, 6, 8, 8, 8, 10, 10)
y <- as.data.frame(table(x))

y %>%
plot_ly(x = ~ x,
        y = ~ Freq,
        type = 'bar')

Frequency Graph

我想采用这个图并产生一个类似的图,其中列出的值7和9的频率为零。有没有办法获得像seq(0, 10, 1)这样的序列的频率计数,其中7和9将显示为0的频率,或者有一种方法可以将我的绘图图上的x轴设置为从0到0 10即使我的数据中没有所有数字?

我试过了

y %>%
plot_ly(x = ~ x,
        y = ~ Freq,
        type = 'bar') %>%
layout(xaxis = list(autotick = FALSE, tick0 = 0, tickd = seq(0, 10, 1))

以及

layout(xaxis = list(autotick = FALSE, tick0 = 0, tickd = c(0,10))

但似乎都没有改变任何东西。

我希望我想要的输出看起来像这样:

Desired Output

请注意,这只是一个小样本,我的实际数据会更大。因此,循环数据和计算每个数字之类的东西会太慢。

1 个答案:

答案 0 :(得分:3)

一个简单的解决方案是将x转换为级别从1到10的因子。

library(dplyr)
library(plotly)

x <- c(1, 1, 2, 2, 3, 3, 4, 4, 4, 4, 4, 5, 6, 8, 8, 8, 10, 10)
x <- factor(x, levels=1:10)

y <- as.data.frame(table(x))

y %>%
plot_ly(x = ~ x,
        y = ~ Freq,
        type = 'bar')