20221109
一些画图参数:
#方差分析和多重比较
library(multcomp)
for (i in unique(dat$Var)) {
fit <- aov(Value~Group, data = subset(dat, Var == i)) #方差分析(ANOVA)
tuk <- glht(fit, alternative = 'two.sided', linfct = mcp(Group = 'Tukey'))
#多重比较(Tukey HSD)
#alternative(指定备选假设的字符串)
#linfct(待检验线性假设的说明,由函数mcp返回的对象指定的)
Tukey <- cld(tuk, level = 0.1, decreasing = TRUE)$mcletters$Letters
#cld(设置一个紧凑的字母显示所有成对比较)
#level(显著性水平)
#decrasing(递减)
stat[which(stat$Var == i & stat$Group %in% names(Tukey)),'sig'] <- Tukey
#将差异比较的结果添加在统计表中方便绘图
print(i)
print(Tukey)
}
stat
#绘制带有均值±标准差的柱形图并添加多重比较的结果
library(ggplot2)
ggplot(stat, aes(x = Group, y = Value.mean, fill = Group, color = Group)) +
#aes(x.y:坐标轴上的值,fill:填充颜色,color=图形外周颜色)
geom_col(width = 0.5)+
#geom_col针对最常见的柱状图 ,即既给ggplot映射x值(x值一般是因子型的变量,才能成为柱,而没有成为曲线),也映射y值。
geom_errorbar(aes(ymin = Value.mean - Value.sd, ymax = Value.mean + Value.sd), width = 0.2)+
#(误差条)
geom_text(aes(y = Value.mean + Value.sd, label = sig), vjust = -0.5) +
#将文本直接添加到绘图中, geom_text(check_overlap = TRUE)避免字体重叠。
facet_wrap(~Var, ncol = 2)+
#按照行列或者其他方式进行分类
theme(panel.grid = element_blank(), panel.background = element_rect(fill = 'transparent', color = 'gray')) +
#grid在图中加入自定义要素
labs(x = '', y = 'Value', fill = '', color = '') +
scale_y_continuous(expand = expansion(mult = c(0, 0.1)))
#对Y轴标签进行处理
#######绘制箱线图并添加方差分析和多重比较显著性
#读取数据
dat <- read.csv('example_data.csv', stringsAsFactors = FALSE)
dat$Group <- factor(dat$Group)
dat <- dat[order(dat$Var, dat$Group), ]
#获取各变量在每组中的最大值,以便在作图时指定显著性标签在图中的位置
图内上方文字调整:
theme(strip.text.x = element_text(size = 15))