gpt4 book ai didi

r - 将多图 ggplots 与拼凑图和单个图例对齐

转载 作者:行者123 更新时间:2023-12-04 14:52:43 24 4
gpt4 key购买 nike

我在 R 中使用 patchwork 创建一个多图图形。它们共享一个图例,因此我使用 ggpubr::get_legend() 在右上角的面板中包含图例(注意:我不能使用 patchwork::plot_layout() 因为图例具有不同的基础值)。

basemap

library(ggplot2)
library(patchwork)
library(ggpubr)

p <- ggplot(data = mtcars %>% mutate(cyl = as.factor(cyl)),
mapping = aes(x = wt, y = mpg, group = cyl, color = cyl)) +
geom_smooth(method = "lm")

当顶行和底行有 6 个相同的图时,图对齐:

(p | p | p | p | p | p) /
(p | p | p | p | p | p) &
theme(legend.position = "none")

enter image description here

当顶行的第 5 个图是图例时,它们不对齐:

leg <- as_ggplot(get_legend(p))

(p | p | p | p | p | leg) /
(p | p | p | p | p | p) &
theme(legend.position = "none")

enter image description here

最佳答案

实现您想要的结果的一个选择是将所有图(包括图例)放在一个列表中并利用 patchwork::wrap_plots:

library(ggplot2)
library(patchwork)
library(ggpubr)

p <- ggplot(data = mtcars %>% mutate(cyl = as.factor(cyl)),
mapping = aes(x = wt, y = mpg, group = cyl, color = cyl)) +
geom_smooth(method = "lm")

leg <- as_ggplot(get_legend(p))

p_list <- lapply(1:12, function(x) if (x == 6) leg else p)
wrap_plots(p_list, nrow = 2) &
theme(legend.position = "none")

关于r - 将多图 ggplots 与拼凑图和单个图例对齐,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68788141/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com