library(ggplot2)
library(reshape2)
library(ggthemr)
library(ggsignif)
WORD_SIZE="15"
data=read.table("data.csv",sep=",",header = T,row.names = 1,check.names = F)
pain=data[,c(1,2,3,4,5,13)]
#对数据整合后计算均值与标准差aggregate(计算数值向量,by=list(分组折叠因子),计算函数)
mean.pain=aggregate(pain[,c(1,2,3,4,5)],by=list(pain$手术方式),mean)
sd.pain=aggregate(pain[,c(1,2,3,4,5)],by=list(pain$手术方式),sd)
data2=rbind(mean.pain,sd.pain)
colnames(data2)[1]=c("手术方式")
data2[,1]=c("胸腔镜","机器人","胸腔镜","机器人")
data3=melt(data2[c(1,2),])
data4=melt(data2[c(3,4),])
data5=cbind(data3,data4$value)
colnames(data5)[2:4]=c("疼痛","均值","标准差")
#做T检验
t.test(pain$`8h`~手术方式,data = pain)
t.test(pain$`12h`~手术方式,data = pain)
t.test(pain$`24h`~手术方式,data = pain)
t.test(pain$`48h`~手术方式,data = pain)
t.test(pain$`72h`~手术方式,data = pain)
ggthemr('fresh')
#柱形图排序
sub=factor(data5$手术方式,levels = c("胸腔镜","机器人"))
ggplot(data5,aes(x=疼痛,y=均值,fill=sub))+ #fill填写排序
geom_bar(stat="identity",position='dodge',width = 0.7)+
ylim(0,10)+#设置y轴范围
labs(x='疼痛', y='VAS评分', fill='手术方式')+
theme(axis.text.x = element_text(size=WORD_SIZE), # 设置x轴字体大小
axis.text.y = element_text(size=WORD_SIZE), # 设置y轴字体大小
axis.title.x = element_text(size=WORD_SIZE), # 设置x轴总标题字体大小,
axis.title.y = element_text(size=WORD_SIZE),# 设置y轴总标题字体大小
legend.title = element_text(size=WORD_SIZE),# 设置图例标题字体大小
legend.text = element_text(size=WORD_SIZE)) + # 设置图例文字标签字体大小
geom_errorbar(aes(ymin=均值-标准差, ymax=均值+标准差),
width=0.2,color='black',
position=position_dodge(0.7))+#设置误差线分组间间距大小
geom_signif(y_position=c(7.5), xmin=c(2.8), xmax=c(3.1), # 设置显著性说明,y_position是误差线所在y轴位置,xmin和xmax是误差线在x轴位置,可传入多个值
annotation=c("*"), tip_length=0.1, size=0.8, textsize = 10, # 显著性标识;显著性括号下延长度;大小设置;字体大小
vjust = 0.2) +# 调整显著性标识和显著性括号之间的距离
theme(text = element_text(family='STXihei'))#显示中文
输出
网友评论