如何调整ggplot分组条形图顺序,使before红色条位于after蓝色条之前
解决方案
你需要先修正原有代码的两处语法问题,再通过指定因子水平的方式调整分组条形的顺序,具体修改如下:
- 原有代码的两个问题:
- 构造数据框时误用了未定义的
type变量,应该替换为你已经声明的treatment变量 geom_bar的position参数取值dodge需要加引号
- 构造数据框时误用了未定义的
- 调整条形顺序的核心逻辑:ggplot的分组展示顺序由对应变量的因子水平决定,你只要把
treatment列转为因子,手动指定before为第一个水平即可,同时调整填充色的映射顺序保证颜色匹配需求。
完整可运行代码:
library(ggplot2) variable = c("stage", "stage", "type", "type") R2 = c(3.25, 4.21, 5.66,8.90) treatment = c("before","after", "before", "after") # 构造数据框同时设置treatment的因子顺序 df <- data.frame(variable, R2, treatment) df$R2 <- as.numeric(df$R2) df$treatment <- factor(df$treatment, levels = c("before", "after")) p <- ggplot(data = df, aes(x = variable, y = R2, fill=treatment)) + geom_bar(stat = "identity", position = "dodge", color = "black") + # 颜色顺序和因子水平一一对应:before用红色,after用蓝色 scale_fill_manual(values=c("#F8766D", "#00BFC4")) + theme(axis.text = element_text(size=11), axis.title = element_text(size=13)) p
内容的提问来源于stack exchange,提问作者serfsrg
相关产品推荐
相关产品推荐

