【R语言】对一个Plot绘制多个图,并且每个图单元也包含多个图

以一个Plot绘制五行六列共30个图,然后每30个图单元包含两个图为例:

如下图所示:

代码如下:

for (i in 1:(5*6)) {
  create_subplots <- function() {

    library(ggplot2)
    library(dplyr)
    library(tidyr)
    
    # 创建一个随机的数据框
    simulated_data <- data.frame(
      V1 = rnorm(100, mean = 0, sd = sqrt(0.5)),  # 生成均值为 mean,标准差为 sd 的正态分布随机值
      V2 = rgamma(100, shape = 2, scale = 1), # 生成伽马分布随机值,shape 为形状参数,scale 为尺度参数
      V3 = runif(100, min = 0, max = 1), # 生成均值为 mean,标准差为 sd 的正态分布随机值
      V4 = rpois(100, lambda = 5), # 生成泊松分布随机值,lambda 为泊松分布的参数
      V5 = rexp(100, rate = 0.5), # 生成指数分布随机值,rate 为指数分布的参数
      V6 = rbinom(100, size = 10, prob = 0.1) # 生成二项分布随机值,size 为试验次数,prob 为成功的概率
    )
    
    simulated_data <- simulated_data %>%
      rename(
        Case1 = V1,
        Case2 = V2,
        Case3 = V3,
        Case4 = V4,
        Case5 = V5,
        Case6 = V6
      )
    
    simulated_data_long <- gather(simulated_data, key = "variable", value = "value")
    # 创建一个含有多个琴图的图表,每个琴图对应数据的一个列
    p1 <- ggplot(simulated_data_long, aes(x = variable, y = value)) +
      geom_violin(alpha = 0.5, size = 0.1) +# 调整透明度和线条宽度
      geom_boxplot(fill = "gray", alpha = 0.04, width = 0.02) +# 调整透明度和线条宽度
      geom_jitter(aes(color = variable), width = 0.02, alpha = 0.7, size = 0.03) +# 调整透明度和点的大小
      labs(
        x = " ",
        y = "",
        title = " "
      ) +
      scale_color_discrete(name = " ") +
      theme_minimal() +
      facet_wrap(~ variable, scales = "free")+
      theme(
        strip.text = element_blank(),
        legend.text = element_text(size = 0.12),  # 调整图例文本大小
        legend.title = element_text(size = 0.15),  # 调整图例标题大小
        legend.key.size = unit(1.5, "lines"),  # 调整图例间距大小
        axis.title.y = element_text(size = 0.18) # 调整Y轴标签的字体大小
      ) + 
      theme(legend.position = "none",    
            axis.title.x = element_blank(),  
            axis.title.y = element_blank(),  
            axis.text.x = element_blank(),   
            axis.text.y = element_blank(),   
            axis.ticks.x = element_blank(),  
            axis.ticks.y = element_blank()   )
      

    library(ggstatsplot)
    # 绘制分组箱线图
    p2 <- ggplot(iris, aes(x = Species, y = Sepal.Length)) +
      geom_boxplot() +
      theme(legend.position = "none",    
            axis.title.x = element_blank(),
            axis.title.y = element_blank(), 
            axis.text.x = element_blank(),   
            axis.text.y = element_blank(),   
            axis.ticks.x = element_blank(),  
            axis.ticks.y = element_blank()   )

    subplot <- p1 / p2 
    
    return(subplot)
  }
  
  
  
  main_plot_list[[i]] <- create_subplots()
}

main_plot <- wrap_plots(main_plot_list, ncol = 6)

print(main_plot)

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值