R语言处理Excel文件并绘制多组箱线图

如果需要,你可以提供数据格式、想要的数据处理结果、想使用的语言,我尽力提供帮助,你提供给我练手的机会!!!

本人R语言的使用方式处于边学边用的状态,代码可能不太简洁,后续会逐步改进。

同时选择两种语言进行箱线图生成式因为两者绘制的箱线图的图例是有差别的(左图Python,右图R语言),而Python又无法生成这样的图例

         

数据格式:

两组对比数据合并在一起进行绘制

代码示例:

library(ggplot2)
library(readxl)
library(dplyr)
library(ggpubr)
library(patchwork)

# 读取数据
data <- read_xlsx('E:/马老师文章数据-红树林秋茄/细菌_alpha_非根际-根际/数据文件.xlsx', sheet = 'data')

# 定义颜色
colors <- c("data1" = "#F8766D", "data2" = "#619CFF")

value_l <- c('ACE', 'Simpson', 'Chao1', 'Shannon')

plots <- list()  # 创建一个列表来存储所有的图形对象

for (j in seq_along(value_l)) {
  i <- value_l[j]
  
  # 根据指标名称设置纵轴范围
  ylim_lower <- if (i == 'ACE') 4000 else if (i == 'Simpson') 0.94 else if (i == 'Chao1') 4000 else 8
  ylim_upper <- if (i == 'ACE') 25000 else if (i == 'Simpson') 1.01 else if (i == 'Chao1') 18000 else 12.5
  stst_strats_position <- if (i == 'ACE') 24000 else if (i == 'Simpson') 1.007 else if (i == 'Chao1') 17500 else 12.2
  p <- ggplot(data, aes_string(x = "Group", y = i, fill = "Type")) +
    geom_boxplot(width = 0.5) +
    scale_fill_manual(values = colors, name = "") +
    labs(y = paste(i, " index"), x = "") +
    scale_x_discrete(limits = c('A', 'B', 'C')) +
    theme_minimal() +
    theme(
      panel.grid.major = element_blank(), 
      panel.grid.minor = element_blank(),
      panel.background = element_rect(fill = "white", colour = "white"),
      panel.border = element_rect(colour = "black", fill = NA, linewidth = 1),
      text = element_text(family = "serif", colour = "black", size = 25),
      axis.title = element_text(colour = "black"),
      axis.text = element_text(colour = "black"),
      legend.text = element_text(colour = "black"),
      legend.title = element_text(colour = "black")
    ) +
    scale_color_manual(values = colors, name = "") +
    ylim(ylim_lower, ylim_upper) +
    stat_compare_means(method = "t.test", label = "p.signif", 
                     label.x = 1.5, label.y = stst_strats_position, vjust = 0.5, hjust = 0.5, size = 10, hide.ns = TRUE)
  
  # 只在第一个子图中显示图例
  if (j == 1) {
    p <- p + theme(legend.position = "right")
  } else {
    p <- p + theme(legend.position = "none")
  }
  
  plots[[i]] <- p  # 将图形对象添加到列表中
}

# 合并图形
combined_plot1 <- wrap_plots(plots, ncol = 1)

# 打印合并后的图形
print(combined_plot1)

箱线图示例:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值