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

一、导入数据集

        1        数据集介绍

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

        2        导入数据集

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

library(ggplot2)
library(ggsignif) #添加显著性
library(Hmisc)    #利用该包的SPSS.get函数从SPSS导入数据到R dataframe
ExpData <- spss.get("F:/Desktop/wxy/Score2.sav",use.value.labels = T,reencode = T)    #导入数据函数,第一个参数为文件所在文字,use.value.labels = T,为直接读取spss的标签,reencode重新编码,防止不同格式中文出现乱码

>ExpData #查看导入的数据集
  性别   年龄 吸引力评分    SD
1 男性 青少年      7.167 1.115
2 男性   中年      6.325 2.104
3 男性   老年      3.423 2.621
4 女性 青少年      3.838 2.408
5 女性   中年      3.722 2.334
6 女性   老年      3.721 2.416

        3        ggplot2绘图

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

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

                2 ggplot绘图代码如下:

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

        4        绘图结果展示

              记一次用ggplot2做双因素条形(Bar)图+显著性p值+errorbar_第1张图片  

你可能感兴趣的:(R,r语言,docker,流程图,数据分析)