当前位置:   article > 正文

记一次用ggplot2做双因素条形(Bar)图+显著性p值+errorbar_条形图加组间p值

条形图加组间p值

一、导入数据集

        1        数据集介绍

                采用一个自己创建的数据集其中包括两个因素,因素1为性别分为男性和女性2水平,因素2为年龄阶段,三水平:青少年、中年、老年,因变量为不同组对于某一照片新引力的评分。

        2        导入数据集

                从spss导入数据集,同时加载相关R包,代码如下:

  1. library(ggplot2)
  2. library(ggsignif) #添加显著性
  3. library(Hmisc) #利用该包的SPSS.get函数从SPSS导入数据到R dataframe
  4. ExpData <- spss.get("F:/Desktop/wxy/Score2.sav",use.value.labels = T,reencode = T) #导入数据函数,第一个参数为文件所在文字,use.value.labels = T,为直接读取spss的标签,reencode重新编码,防止不同格式中文出现乱码
  5. >ExpData #查看导入的数据集
  6. 性别 年龄 吸引力评分 SD
  7. 1 男性 青少年 7.167 1.115
  8. 2 男性 中年 6.325 2.104
  9. 3 男性 老年 3.423 2.621
  10. 4 女性 青少年 3.838 2.408
  11. 5 女性 中年 3.722 2.334
  12. 6 女性 老年 3.721 2.416

        3        ggplot2绘图

                1 新建一个名字为ggplotBar的脚本,方面我们写代码和后期修改代码,以及以后需要做图时,只需要修改变量直接套用模板。然后再该脚本内写我们绘制的图像的代码。

                file > new file >Script  ctrl +s 保存为 ggplotbar.R

                2 ggplot绘图代码如下:

  1. #ExpData为我们导入的数据框的名字,aex(x = , y=, fill= )分别为我们数据框的变量,在本例中x为变量1性别,fill为标量2年龄,y为因变量吸引力评分
  2. ggplot(ExpData,aes(x=性别,y=吸引力评分,fill = 年龄)) +
  3. #geom_bar参数介绍:position为bar图的位置信息,有效值为stack、dodge和fill,其中三种方式为bar的摆放方式,stack为堆叠、dodge为单独成条(主要应用),fill也为堆叠,但是与stack有所不同。
  4. #stat为设置统计方法,有效值是count(默认值) 和 identity,其中,count表示条形的高度是变量的数量,identity表示条形的高度是变量的值;这里我们是平均值,所有用stat。
  5. geom_bar(position=position_dodge(0.5), width=0.5,stat="identity") +
  6. #添加errorBar
  7. #参数介绍,aes为errorbar范围,与我们数据框的均值:评分±SD,width:为errorbar的宽度,position与上面保持一致确保每个errorbar添加到指定的bar图上面。
  8. geom_errorbar(aes(ymin = 评分-SD,ymax = 评分+SD),width = 0.1,position=position_dodge(.5)) +
  9. #修改笛卡尔坐标x,y轴范围,可根据xy取值进行适当修改coord_cartesian(ylim = c(ymin,ymax),xlim = c(xmin,xmax))
  10. coord_cartesian(ylim = c(0,10))+
  11. #修改图的背景,去除网格线panel.grid=element_blank()
  12. theme(panel.grid=element_blank())+
  13. #geom:创建自定义的注解,为每个bar添加均值标签
  14. #参数介绍:aes 为添加的值,本例为添加吸引力评分到bar顶部,size/vjust对位置进行调整,position对位置进行调整,与前面设置的保持一致
  15. geom_text(aes(label=吸引力评分),size=4,vjust=-0.5,position =position_dodge(0.5))+
  16. #添加显著性
  17. #参数介绍:y_position为添加显性的位置,xmin、ymax为显著性对应的bar的位置,这里我们要添加的为青少年男性与老年男性(xmin=0.833,xmax=12)、中年男性和老年男性(xmin=1.0,xmax=1.2)分别对应bar的x轴坐标,annotation同上添加自定义p表达式,也可根据需求改成‘*’,tip_length为显著性小角的长度。
  18. geom_signif(y_position=c(8.7,9.2),xmin=c(0.833,1.0), xmax=c(1.2,1.2), annotation=c("p<.001","p=.001"), tip_length=0.03) +
  19. #修改fillbar的颜色
  20. scale_fill_manual(values = c("#006A72", "8FBFC6","#7FBDB0"))+
  21. #设置图里位置
  22. #参数介绍 position为整个面板的相对位置,原点为0.0,右上角为1.1根据要求我们添加到左上角,legend.direction为图例排列的方式、水平还是垂直
  23. theme(legend.position = c(0.3,0.9),legend.direction = "horizontal")+
  24. #添加y轴的标题
  25. scale_y_continuous(name='吸引力评分' ) +
  26. #添加x轴标题
  27. scale_x_discrete(name='被试性别') +
  28. #调整x(被试性别),y(吸引力评分),text(男性/女性)的大小颜色等属性
  29. theme(axis.text.x = element_text(size=15,color = "black"))+
  30. theme(axis.title.y = element_text(size=15,color = "black"))+
  31. theme(axis.title.x = element_text(size=15,color = "black"))

        4        绘图结果展示

                

声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号