R:Wilcoxon秩和分析+差异柱状图

今天来学秩和分析了,文章大部分用Wilcoxon需要两个文件metadata注释相对丰度# 导入必要的库library(ggplot2)library(dplyr)library(ggsignif)librar

 今天来学秩和分析了,文章大部分用Wilcoxon

需要两个文件

metadata

注释相对丰度

# 导入必要的库
library(ggplot2)
library(dplyr)
library(ggsignif)
library(tidyverse)
library(Cairo)
library(sysfonts)
library(showtextdb)
library(showtext)
font_add('simhei', 'C:\\Windows\\Fonts\\simhei.ttf')
font_add('arial', 'C:\\Windows\\Fonts\\arial.ttf')
showtext_auto()

# 假设df是你的数据,其中包含了两组的所有重复
setwd("F:/Majing/R/")
data <- read.csv("物种细菌属水平contig相对丰度Lefse.csv")
metadata <- read.csv("metadata.csv")
data_long <- data %>%
  pivot_longer(
    cols = -Taxonomy,
    names_to = "Sample",
    values_to = "Value"
  )

data_merge <- merge(data_long, metadata, by.x = "Sample", by.y = "Sample")

# 创建一个空的数据框来存储结果
result <- data.frame(Taxonomy = character(), p_value = numeric())

# 对每个物种在两个组中进行Wilcoxon秩和检验,并计算每个组的平均丰度
for (TAX in unique(data_merge$Taxonomy)) {
  df <- data_merge[data_merge$Taxonomy == TAX, ]
  p_value <- round(wilcox.test(df$Value ~ df$Group,exact = TRUE,correct = TRUE,paired = FALSE,conf.level = 0.95)$p.value, 4)
  result <- rbind(result, data.frame(Taxonomy = TAX, p_value = p_value)) #rbind()按行添加且合并表格
}

# 筛选出差异显著的物种
significant_TAX <- result %>%
  filter(p_value < 0.05)

# 添加显著性标记
significant_TAX <- significant_TAX %>%
  mutate(signif_mark = ifelse(p_value < 0.01, "**", "*"))

write.csv(significant_TAX, file = "significant_TAX.csv", row.names = FALSE)

# 将原数据表只留下显著的数据
data_merge_new <- merge(data_merge, significant_TAX, by = "Taxonomy", all.x = FALSE)

# 计算每个分类单元在每个组中的平均相对丰度
data_merge_new_summary <- data_merge_new %>%
  group_by(Taxonomy, Group) %>%
  summarise(mean_abundance = mean(Value))

# 创建柱状图
p <- ggplot(data_merge_new_summary, aes(x = Taxonomy, y = mean_abundance, fill = Group)) +
  geom_bar(stat = "identity", position = position_dodge()) + #stat = "identity"意味着条形的高度就是数据框中的数据值。position = position_dodge()意味着条形会被并排放置。
  coord_flip() +
  theme_minimal() +
  theme(panel.background = element_blank(), panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
        axis.line = element_line(colour = "black"),axis.text = element_text(size = 14, face = "bold",family = 'arial')) + # 添加黑色的轴线
  labs(y = "Relative Abundance") # 改变x轴的标签


# 在柱状图上添加点,点有黑色的描边
p <- p + geom_point(data = data_merge_new, aes(x = Taxonomy, y = Value),
                    position = position_dodge(width=0.9), shape=21, colour="black")


# 添加p值和显著性标记
df_signif <- significant_TAX %>%
  select(Taxonomy, p_value, signif_mark) %>%
  rename(Tax = Taxonomy)

for(i in 1:nrow(df_signif)){ 
  p <- p + 
    annotate("text", 
             x = df_signif$Tax[i], 
             y = max(data_merge_new$Value)+1, 
             label = paste0("p=", df_signif$p_value[i], " ", df_signif$signif_mark[i]),
             hjust = 1) 
}

# 显示图形
print(p)
ggsave("属显著.pdf", device = cairo_pdf, width = 10, height = 8)

发布者:admin,转转请注明出处:http://www.yc00.com/web/1754938989a5217821.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信