R语言绘制双变量分组柱状图异常:所有柱子长度一致问题排查
问题原因与解决方案
问题根源
你使用的geom_bar()默认参数为stat="count",它会统计每个x与fill分组下的数据行数,而非调用数据中的value列作为柱子高度。由于每个dijarn+variable的组合都仅包含1条数据,所有柱子的计数结果均为1,因此视觉上长度完全一致。
修复代码
核心是让ggplot使用value列作为柱子高度,有两种等价实现方式:
方式1:修改geom_bar的stat参数
ggplot(data.m, aes(x = dijarn, y = value, fill = variable)) + geom_bar(stat = "identity", position = position_dodge(preserve = "single"))
方式2:使用geom_col(推荐)
geom_col是geom_bar(stat="identity")的简写,专门用于基于已有数值绘制柱状图:
ggplot(data.m, aes(x = dijarn, y = value, fill = variable)) + geom_col(position = position_dodge(preserve = "single"))
额外优化建议
你的x轴包含37个dijarn标签,默认显示会出现重叠,可添加主题参数调整标签角度:
ggplot(data.m, aes(x = dijarn, y = value, fill = variable)) + geom_col(position = position_dodge(preserve = "single")) + theme(axis.text.x = element_text(angle = 45, hjust = 1))
内容的提问来源于stack exchange,提问作者Marine Bergot
相关产品推荐
相关产品推荐

