如何修改ggplot2中ref点及对应误差棒的颜色?
如何修改ggplot2中指定数据点及对应误差棒的颜色
需求说明
需要将ggplot2图表中标注为“ref”(对应数据集chan=11)的数据点及其误差棒修改为特定颜色,原绘图代码及数据集如下:
原绘图代码
ggplot(df,aes(x = chan,y = mean)) + geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd)) + geom_point() + theme_bw() + ylab("accuracy") + xlab("permutation channel") + scale_x_continuous(breaks = c(1:11), labels = c(1:10, "ref"))
数据集结构
structure(list(chan = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11), mean = c(0.951002180576324, 0.954477310180664, 0.954147934913635, 0.955366730690002, 0.945781230926514, 0.95714545249939, 0.95810067653656, 0.951051592826843, 0.947444677352905, 0.946522414684296, 0.9573002576828), sd = c(0.00134088819225075, 0.00426092161364007, 0.00461019843766268, 0.00517772940490045, 0.000785548183287362, 0.00274702164693839, 0.004252234407014, 0.00353576303790188, 0.00276008055853283, 0.00427941769453181, 0.00225555534939029)), row.names = c(NA, -11L), class = "data.frame")
两种简便解决方案
方案1:通过颜色映射实现(推荐,逻辑清晰)
先给数据集添加分组标记列区分“ref”和其他数据,再通过scale_color_manual自定义颜色:
# 给数据集添加分组列 df$group <- ifelse(df$chan == 11, "ref", "others") # 修改绘图代码 ggplot(df,aes(x = chan,y = mean, color = group)) + geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd)) + geom_point() + theme_bw() + ylab("accuracy") + xlab("permutation channel") + scale_x_continuous(breaks = c(1:11), labels = c(1:10, "ref")) + # 自定义颜色,others用默认黑色,ref用红色 scale_color_manual(values = c("others" = "black", "ref" = "red")) + guides(color = "none") # 不需要图例可添加此行
方案2:单独绘制目标数据(无需修改原数据集)
直接在原有图层上,单独绘制chan=11对应的误差棒和点并设置指定颜色:
ggplot(df,aes(x = chan,y = mean)) + # 先绘制所有数据的误差棒和点(默认颜色) geom_errorbar(aes(ymin = mean - sd, ymax = mean + sd)) + geom_point() + # 单独绘制ref的误差棒和点,设置红色 geom_errorbar(data = df[df$chan == 11,], aes(ymin = mean - sd, ymax = mean + sd), color = "red") + geom_point(data = df[df$chan == 11,], color = "red") + theme_bw() + ylab("accuracy") + xlab("permutation channel") + scale_x_continuous(breaks = c(1:11), labels = c(1:10, "ref"))
内容的提问来源于stack exchange,提问作者user21573410
相关产品推荐
相关产品推荐

