R语言新手求助:使用ggplot绘制分组柱状图的若干问题
解决ggplot分组柱状图的三个需求
先给出修正后满足所有需求的完整代码:
# 构造数据 dveR <- data.frame( values = c(3.921, 3.557, 3.793, 3.154, 2.387, 1.906), group = rep(c("Cardia","Anterior","Posterior"), each = 2), subgroup = LETTERS[1:2] ) # 转换group为因子,指定X轴显示顺序 dveR$group <- factor(dveR$group, levels = c("Cardia", "Anterior", "Posterior")) # 转换subgroup为因子,替换分组标签 dveR$subgroup <- factor(dveR$subgroup, levels = c("A", "B"), labels = c("0 hours", "24 hours")) # 绘制图表 library(ggplot2) ggplot(dveR, aes(x = group, y = values, fill = subgroup)) + geom_bar(stat = "identity", position = "dodge") + scale_fill_manual(values = c("springgreen4", "orange2")) + labs(x = "tissue", y = "Log Re")
各需求的解决逻辑:
- 设置轴标签:用
labs()函数直接指定x和y的标签内容,这是ggplot调整轴标签最直接的方式。 - 固定X轴分组顺序:ggplot默认会对字符型x轴变量按字母排序,将
group转为因子并通过levels参数指定顺序,就能强制X轴按需求显示。 - 替换子分组标签:将
subgroup转为因子,通过labels参数把"A""B"替换为目标文本;也可在scale_fill_manual()里通过labels参数直接设置,但提前转换因子能让数据本身的含义更清晰。
注:原始代码中scale_fill_manual()缺少闭合括号,已在修正代码中补上,避免运行报错。
内容的提问来源于stack exchange,提问作者Ali
相关产品推荐
相关产品推荐

