如何在ggplot中绘制带误差棒的配对分组条形图并调整x轴顺序
ggplot分组配对条形图问题解决方案
调整X轴浓度顺序
R中字符型变量默认按字典序排序,2的ASCII编码小于4,所以20 ng/mL会默认排在40 ng/mL前面,你只需要将Concs列转为自定义顺序的因子即可修正排序:
data$Concs <- factor(data$Concs, levels = c("40 ng/mL", "20 ng/mL"))
添加分组配对误差棒
使用geom_errorbar()图层实现误差棒绘制,需要设置和条形完全一致的position_dodge参数,避免误差棒和对应条形错位,误差范围直接使用你数据中的sd1列计算即可。
完整可运行代码
library(tidyverse) data <- data.frame(Group=rep(c("Control", "Experimental"),each=2), Concs=rep(c("40 ng/mL", "20 ng/mL"), 2), Absorbance=c(0.24396666, 0.186266667, 0.1942, 0.1627), sd1=c(0.01490671, 0.013587617, 0.008195324, 0.016703143)) # 自定义浓度列排序规则 data$Concs <- factor(data$Concs, levels = c("40 ng/mL", "20 ng/mL")) ggplot(data, aes(x=Concs, y=Absorbance, fill=Group)) + geom_bar(stat="identity", position=position_dodge(width = 0.9), width = 0.8) + # 绘制误差棒 geom_errorbar(aes(ymin = Absorbance - sd1, ymax = Absorbance + sd1), position = position_dodge(width = 0.9), width = 0.2)
可调整参数说明
position_dodge(width = 0.9):控制分组元素的偏移宽度,条形和误差棒的该参数必须一致才能保证对齐- 误差棒的
width = 0.2:控制误差棒两端横向短杠的宽度,可根据视觉效果自行修改数值 - 条形的
width = 0.8:控制单个条形的宽度,可自行调整
内容的提问来源于stack exchange,提问作者Brian
相关产品推荐
相关产品推荐

