【发布时间】:2018-04-23 19:40:05
【问题描述】:
我为一份报告生成了多个堆叠条形图。每个图表代表一个不同的区域,并且可能有不同数量的 x 轴类别。为了在不同图表之间获得一致的视觉效果,我希望确保条形的宽度在单独的图表之间是恒定的。我目前无法做到这一点,因为 x 轴类别较少的图表具有更宽的条形。似乎dodge 和width 的组合可能适用于标准条形图,但这不适用于堆叠条形图。请注意,有 100 种可能的 x 轴类别,但实际上每个图表上只显示了 3 到 6 个(最多 6 个)。
有谁知道一种指定恒定条形宽度的方法,然后可以将其应用于所有图表?
对于少于 6 个类别的区域,我的一个想法是在图表的右端添加额外的空类别(使总数达到 6 个),然后以某种方式设置绘图面板宽度,以便剪切这些最后的空占位符离开。我不确定如何实现占位符的切断。
这是一个基本问题的简单示例。
df1 <- data.frame(variable_name = c(rep('var1', 3),rep('var2',4), rep('var3', 3), rep('var4', 4)),
var_value = c(1,4,2,4,3,6,2,1,6,3,1,3,2,4),
value_type = c('A','B','C','A','B','C','D','B','C','D','B','D','E','F'))
df2 <- data.frame( variable_name = c(rep('var6',4), rep('var4', 4)),
var_value = c(4,3,6,2,1,3,2,4),
value_type = c('A','B','C','D','B','D','E','F'))
ggplot() +
geom_col(data = df1,
aes(x = variable_name, y =var_value,fill = value_type),
width = 0.8)
ggplot() +
geom_col(data = df2,
aes(x = variable_name, y =var_value,fill = value_type),
width = 0.8)
【问题讨论】: