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


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

    如下图所示:

    代码如下:

    1. for (i in 1:(5*6)) {
    2. create_subplots <- function() {
    3. library(ggplot2)
    4. library(dplyr)
    5. library(tidyr)
    6. # 创建一个随机的数据框
    7. simulated_data <- data.frame(
    8. V1 = rnorm(100, mean = 0, sd = sqrt(0.5)), # 生成均值为 mean,标准差为 sd 的正态分布随机值
    9. V2 = rgamma(100, shape = 2, scale = 1), # 生成伽马分布随机值,shape 为形状参数,scale 为尺度参数
    10. V3 = runif(100, min = 0, max = 1), # 生成均值为 mean,标准差为 sd 的正态分布随机值
    11. V4 = rpois(100, lambda = 5), # 生成泊松分布随机值,lambda 为泊松分布的参数
    12. V5 = rexp(100, rate = 0.5), # 生成指数分布随机值,rate 为指数分布的参数
    13. V6 = rbinom(100, size = 10, prob = 0.1) # 生成二项分布随机值,size 为试验次数,prob 为成功的概率
    14. )
    15. simulated_data <- simulated_data %>%
    16. rename(
    17. Case1 = V1,
    18. Case2 = V2,
    19. Case3 = V3,
    20. Case4 = V4,
    21. Case5 = V5,
    22. Case6 = V6
    23. )
    24. simulated_data_long <- gather(simulated_data, key = "variable", value = "value")
    25. # 创建一个含有多个琴图的图表,每个琴图对应数据的一个列
    26. p1 <- ggplot(simulated_data_long, aes(x = variable, y = value)) +
    27. geom_violin(alpha = 0.5, size = 0.1) +# 调整透明度和线条宽度
    28. geom_boxplot(fill = "gray", alpha = 0.04, width = 0.02) +# 调整透明度和线条宽度
    29. geom_jitter(aes(color = variable), width = 0.02, alpha = 0.7, size = 0.03) +# 调整透明度和点的大小
    30. labs(
    31. x = " ",
    32. y = "",
    33. title = " "
    34. ) +
    35. scale_color_discrete(name = " ") +
    36. theme_minimal() +
    37. facet_wrap(~ variable, scales = "free")+
    38. theme(
    39. strip.text = element_blank(),
    40. legend.text = element_text(size = 0.12), # 调整图例文本大小
    41. legend.title = element_text(size = 0.15), # 调整图例标题大小
    42. legend.key.size = unit(1.5, "lines"), # 调整图例间距大小
    43. axis.title.y = element_text(size = 0.18) # 调整Y轴标签的字体大小
    44. ) +
    45. theme(legend.position = "none",
    46. axis.title.x = element_blank(),
    47. axis.title.y = element_blank(),
    48. axis.text.x = element_blank(),
    49. axis.text.y = element_blank(),
    50. axis.ticks.x = element_blank(),
    51. axis.ticks.y = element_blank() )
    52. library(ggstatsplot)
    53. # 绘制分组箱线图
    54. p2 <- ggplot(iris, aes(x = Species, y = Sepal.Length)) +
    55. geom_boxplot() +
    56. theme(legend.position = "none",
    57. axis.title.x = element_blank(),
    58. axis.title.y = element_blank(),
    59. axis.text.x = element_blank(),
    60. axis.text.y = element_blank(),
    61. axis.ticks.x = element_blank(),
    62. axis.ticks.y = element_blank() )
    63. subplot <- p1 / p2
    64. return(subplot)
    65. }
    66. main_plot_list[[i]] <- create_subplots()
    67. }
    68. main_plot <- wrap_plots(main_plot_list, ncol = 6)
    69. print(main_plot)

     

  • 相关阅读:
    控制输入框弹出弹窗 和不弹出窗口
    grafana InfluxDB returned error: error reading influxDB 400错误解决
    软件测试基础知识详解
    破解仓储难题?WMS仓储管理系统解决方案
    Linux.14_多线程(重点总结)
    RabbitMQ系列【10】死信队列
    有效利用云测试的关键要素是什么
    「分辨率比拼」还不够,4D成像雷达进入“软”竞争时代
    【ESD专题】3.ESD防护器件(TVS管的原理和选型)
    深度学习入门(三十八)计算性能——多GPU训练
  • 原文地址:https://blog.csdn.net/a11113112/article/details/139838074