如何在直方图 x 轴上显示频率为零的值?
How to display values with zero frequency on plotly histogram x-axis?
我有下面的简单数据框 d
,我想根据其值的频率创建直方图。我正在尝试将初始值设置为 0
,然后按 5
在 x 轴上显示值,但这些值似乎都不起作用,因为值从 1
开始,然后显示 8
。我发现发生这种情况是因为我的数据框没有 2
和 3
作为值,因此计数停止在 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))
)
)
此处输出:
我有下面的简单数据框 d
,我想根据其值的频率创建直方图。我正在尝试将初始值设置为 0
,然后按 5
在 x 轴上显示值,但这些值似乎都不起作用,因为值从 1
开始,然后显示 8
。我发现发生这种情况是因为我的数据框没有 2
和 3
作为值,因此计数停止在 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))
)
)
此处输出: