最近遇到alpha多样性指数遇见多个不同需求的可视化,先记录一个,后续有再补充
一、alpha多样性组间箱型图绘制
组间箱型图带有差异检验的实现代码:
library(ggplot2)
library(reshape2)
library(ggpubr) ##用于添加误差线的包
diversity <- read.table("alpha_diversity.xls", header = T, row.names = 1) ##行为样本,列为不同alpha多样性指数
metadata <- read.table("metadata.txt", header = F, row.names = 1)
names(metadata) <- c("group") ##行为样本,列为分组,总共两列
df <- merge(diversity, metadata, by = "row.names", all.x = TRUE)
df$group <- gsub("-", "_", df$group)
# 设置每个组的颜色
group_colors <- c("Control" = "#ECA558", "D" = "#C094D9", "C" = "#5B9ED7")
# 首先设置比较的列表
compare_list <- list(
c("D", "Control"),
c("C", "Control"),
c("C", "D"))
# 使用ggplot2创建箱线图
p <- ggplot(df, aes(x = group, y = goods_coverage, fill = group, colour = group)) +
stat_boxplot(linewidth=1,width=0.1,geom = "errorbar",
alpha=1, aes(color=group) )+ ##由于自带的箱形图没有胡须末端没有短横线,使用误差条的方式补上
geom_boxplot(width = 0.15, alpha = 0.6, lwd = 1.15, outlier.shape = NA
) + # 调整箱的大小
geom_jitter(width = 0.3, size = 3, alpha = 0.75) + # 添加散点
labs(y = "Goods Coverage Diversity") +
scale_fill_manual(values = group_colors) + # 设置颜色
scale_color_manual(values = group_colors) +
theme_minimal() +
labs(x = NULL) +
theme(panel.border = element_blank(),
panel.grid = element_blank(),
axis.line = element_line(colour = "black", linewidth = 1),
axis.ticks = element_line(color = "black", linewidth = 1),
axis.text.x = element_text(face = "bold", size=12),
axis.text.y = element_text(face = "bold", size=12),
axis.title.y = element_text(face = "bold", size=14)) +
stat_compare_means(
comparisons = compare_list,
method = "t.test",
label = "p.signif",
hide.ns = F)# 添加检验结果
ggsave(p, file="goods_coverage_index.png", width = 8, height = 7)
ggsave(p, file="goods_coverage_index.pdf", width = 8, height = 7)
##用于添加误差线条的两种方式
stat_boxplot(linewidth=1,width=0.1,geom = "errorbar",alpha=1, aes(color=group) )
geom_errorbar(data=df, aes(ymin=ymin, ymax=ymax), width=.2, size=0.5) + # 添加误差条
##ymin为其中一列,是添加误差线的最小列
#ymax为其中一列,是添加误差线的最大列
##用于组间比较
stat_compare_means(
comparisons = compare_list,
method = "t.test",
label = "p.signif",
hide.ns = F)