使用R语言(ggplot2)绘制分组条形图,并添加误差线和显著性说明

最近要处理实验数据,觉得Excel画的图打印出来太不清晰了,所以试了一下R语言的ggplot2。最后画出的图可以导出eps格式,再用adobe illustrator进一步修改。

# 创建一个data.frame
vadility <- c('有效', '有效', '无效', '无效')
valance <- c('中性', '负性', '中性', '负性')
RT <- c(421, 428, 432, 431)
SD <- c(11, 11, 10, 11)

# 字体大小常量
WORD_SIZE = 15

# 命名向量
name <- c('有效性', '图片效价', '反应时', '标准差')

# 导入所需的包
library(ggplot2)
library(ggthemr)
library(ggsignif)

# 创建data.frame并命名
testData <- data.frame(vadility=vadility, valance=valance, RT=RT, SD=SD)
names(testData) <- name

# ggthemr包选择一个主题,主要是方便,也可以手动修改颜色,具体参见ggthemr在github上的说明
# 个人觉得导出eps后,在ai中修改更方便
ggthemr('greyscale')

# 开始画图
ggplot(data = testData, aes(x=vadility, y = RT, fill = valance)) +   # x,y轴数据,分组条形图下将其他离散数据传给fill
  coord_cartesian(ylim=c(300,460)) +  # 设置y轴坐标范围
  labs(x='有效性', y='反应时/毫秒', fill='效价') +  # x,y和图例标签
  theme(axis.text.x = element_text(size=WORD_SIZE),  # 设置x轴字体大小,以下同理
        axis.text.y = element_text(size=WORD_SIZE), 
        axis.title.x = element_text(size=WORD_SIZE), 
        axis.title.y = element_text(size=WORD_SIZE),
        legend.title = element_text(size=WORD_SIZE),
        legend.text = element_text(size=WORD_SIZE)) + 
  geom_col(position = 'dodge', width = 0.5) +  # 分组条形组时,position = 'dodge'
  geom_errorbar(aes(x=vadility, ymin=RT-SD, ymax=RT+SD),  # 添加误差线
                width=0.1, color='black', position = position_dodge(0.5),  # 设置误差线颜色,宽度等
                size=0.8)+
  geom_signif(y_position=c(447), xmin=c(1.88), xmax=c(2.12),  # 设置显著性说明,y_position是误差线所在y轴位置,xmin和xmax是误差线在x轴位置,可传入多个值
              annotation=c("*"), tip_length=0.1, size=0.8, textsize = 7,  # 显著性标识;显著性括号下延长度;大小设置;字体大小
              vjust = 0.3)  # 调整显著性标识和显著性括号之间的距离

效果图如下:


image.png

在Rstudio中导出eps格式,后续修改可以直接使用ai,从而尽量避免重新使用程序作图,减少工作量。

————————————————
原文链接:https://blog.csdn.net/zjjoebloggs/article/details/94831435

你可能感兴趣的:(使用R语言(ggplot2)绘制分组条形图,并添加误差线和显著性说明)