赞
踩
采用一个自己创建的数据集其中包括两个因素,因素1为性别分为男性和女性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
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"))

Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。