我希望将不同功能生成的多个图形组合到单个显示中.具体来说,我只想在包装中保留第一个图表的传奇.

以下是该问题的最小版本:

library(ggplot2)
library(patchwork)

plot_histogram <- function() {
    plot_data <- ggplot(mtcars, aes(x = mpg, fill = factor(am))) +
        geom_histogram(binwidth = 2, color = "black") +
        labs(title = "Histo",
             x = "Miles/gallon",
             y = "nb cars",
             fill = "Transmission") +
        scale_fill_manual(values = c("skyblue", "salmon"), 
                          labels = c("Auto", "Man")) +
        theme_minimal() +
        theme(legend.position = "bottom")
    
    return(plot_data)
}

plot_scatter <- function() {
    plot_data <- ggplot(mtcars, aes(x = mpg, y = wt, color = factor(cyl))) +
        geom_point(size = 3) +
        labs(title = "Scatterplot",
             x = "Miles/gallon",
             y = "weight",
             color = "Cyl") +
        theme_minimal() +
        theme(legend.position = "bottom")
    
    return(plot_data)
}

scatter_plot_left <- plot_scatter()
scatter_plot_right <- plot_scatter()
histogram_plot <- plot_histogram()

combined_plots <- wrap_plots(scatter_plot_left + scatter_plot_right,
                             histogram_plot,
                             nrow = 1,
                             widths = c(3, 1)) +
    plot_layout(guides = 'collect') &
    theme(legend.position = "bottom")

combined_plots

有没有办法只保留散布情节的传说?

从现在开始,我找到的最佳"解决方案"是用guides = 'collect'包裹前两个图,然后用另一个图包裹它,而不保留插图.

这并不是一个真正的解决方案,因为传奇没有居中,并且每次都必须调整图形的大小,这在自动生产过程中并不好.

推荐答案

我们可以使用layout design,它适用于奇数和偶数个情节:

scatter_plot_left <- plot_scatter()
scatter_plot_middle <- plot_scatter()
scatter_plot_right <- plot_scatter()
histogram_plot <- plot_histogram() + theme(legend.position = "none") 

custom_lyt <- "AAABBBCCCDD
               AAABBBCCCDD
               AAABBBCCCDD
               AAABBBCCCDD
               AAABBBCCCDD
               AAABBBCCCDD
               AAABBBCCCDD
               AAABBBCCCDD
               ####ZZZ####"

scatter_plot_left + scatter_plot_middle + scatter_plot_right + 
    histogram_plot + 
    guide_area() +
  plot_layout(guides = 'collect', design = custom_lyt)

custom_lyt <- "AAACCCDD
               AAACCCDD
               AAACCCDD
               AAACCCDD
               AAACCCDD
               AAACCCDD
               AAACCCDD
               AAACCCDD
               ###ZZ###"

scatter_plot_left + scatter_plot_right + 
    histogram_plot + 
    guide_area() +
  plot_layout(guides = 'collect', design = custom_lyt)

创建于2024年5月3日,共有reprex v2.0.2

R相关问答推荐

如何使用R以NASAGIBS.ViirsEarthAtNight2012风格绘制自定义 map

从R中的地址提取街道名称

是否有任何解决方案可以优化VSCode中RScript的图形绘制?

按块将载体转换为矩阵-reshape

在通过最大似然估计将ODE模型与数据匹配时,为什么要匹配实际参数的转换值?

基于现有类创建类的打印方法(即,打印tibles更长时间)

咕噜中的元素列表:map

如何从R中的字符串元素中减go 一个数字?

移除仪表板Quarto中顶盖和车身之间的白色区域

使用较长的查询提取具有部分匹配的列表中的较短目标,

找出二叉树中每个 node 在R中的深度?

使用`Watch()`和`renderUI()`时,不再满足仍出现在SHILINY AFTER条件中的条件输入

方法::slotName如何处理非类、非字符的参数?

给定开始日期和月份(数字),如何根据R中的开始日期和月数创建日期列

TreeNode打印 twig 并为其上色

在带有`R`中的`ggmosaic`的马赛克图中使用图案而不是 colored颜色

如何创建累加到现有列累计和的新列?

在点图上绘制置信度或预测区间ggplot2

循环遍历多个变量,并将每个变量插入函数R

在不重复主题的情况下重新排列组