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)]
#對數(shù)據(jù)整合后計算均值與標準差aggregate(計算數(shù)值向量,by=list(分組折疊因子),計算函數(shù))
mean.pain=aggregate(pain[,c(1,2,3,4,5)],by=list(pain$手術(shù)方式),mean)
sd.pain=aggregate(pain[,c(1,2,3,4,5)],by=list(pain$手術(shù)方式),sd)
data2=rbind(mean.pain,sd.pain)
colnames(data2)[1]=c("手術(shù)方式")
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`~手術(shù)方式,data = pain)
t.test(pain$`12h`~手術(shù)方式,data = pain)
t.test(pain$`24h`~手術(shù)方式,data = pain)
t.test(pain$`48h`~手術(shù)方式,data = pain)
t.test(pain$`72h`~手術(shù)方式,data = pain)
ggthemr('fresh')
#柱形圖排序
sub=factor(data5$手術(shù)方式,levels = c("胸腔鏡","機器人"))
ggplot(data5,aes(x=疼痛,y=均值,fill=sub))+ #fill填寫排序
geom_bar(stat="identity",position='dodge',width = 0.7)+
ylim(0,10)+#設(shè)置y軸范圍
labs(x='疼痛', y='VAS評分', fill='手術(shù)方式')+
theme(axis.text.x = element_text(size=WORD_SIZE), # 設(shè)置x軸字體大小
axis.text.y = element_text(size=WORD_SIZE), # 設(shè)置y軸字體大小
axis.title.x = element_text(size=WORD_SIZE), # 設(shè)置x軸總標題字體大小,
axis.title.y = element_text(size=WORD_SIZE),# 設(shè)置y軸總標題字體大小
legend.title = element_text(size=WORD_SIZE),# 設(shè)置圖例標題字體大小
legend.text = element_text(size=WORD_SIZE)) + # 設(shè)置圖例文字標簽字體大小
geom_errorbar(aes(ymin=均值-標準差, ymax=均值+標準差),
width=0.2,color='black',
position=position_dodge(0.7))+#設(shè)置誤差線分組間間距大小
geom_signif(y_position=c(7.5), xmin=c(2.8), xmax=c(3.1), # 設(shè)置顯著性說明,y_position是誤差線所在y軸位置,xmin和xmax是誤差線在x軸位置,可傳入多個值
annotation=c("*"), tip_length=0.1, size=0.8, textsize = 10, # 顯著性標識;顯著性括號下延長度;大小設(shè)置;字體大小
vjust = 0.2) +# 調(diào)整顯著性標識和顯著性括號之間的距離
theme(text = element_text(family='STXihei'))#顯示中文

輸出