标签: patchwork

拼凑合并两个 y 轴标题

关于如何将两个相同的 y 轴标题“合并”为一个,然后将此 y 轴标题放置在图之间的中间,有什么想法吗?我已经成功地通过使用合并图例 plot_layout(guides = "collect"),但我似乎找不到任何类似的轴。在这种情况下,我会将名为 disp_disp_disp 的两个轴标题合并为一个。

在此输入图像描述

mtcars

library(ggplot2)
library(patchwork)

p1 <- ggplot(mtcars) + 
  geom_point(aes(mpg, disp)) + 
  labs(x = "mpg", y = "disp_disp_disp_disp_disp")

p2 <- ggplot(mtcars) + 
  geom_boxplot(aes(gear, disp, group = gear)) + 
  labs(x = "gear", y = "disp_disp_disp_disp_disp")

p3 <- ggplot(mtcars) + 
  geom_point(aes(hp, wt, colour = mpg)) + 
  ggtitle('Plot 3')

p1 / (p2 | p3)
Run Code Online (Sandbox Code Playgroud)

r ggplot2 patchwork

16
推荐指数
2
解决办法
1万
查看次数

R 包拼凑:行/列标题

有没有办法使用 patchwork 包按行或列添加标题来组合绘图?前任。安排为:拼凑<- (p| p2 | p3)/ (p4| p5| p6),我想要一个标题用于图 1-3,另一个标题用于图 4-6。

r ggplot2 patchwork

10
推荐指数
1
解决办法
1265
查看次数

如何在使用 ggplot2 绘制的图中最小化由 patchwork 包的guide_area()函数创建的空白区域?

我用这个ggplot2包制作了 3 个地块。为了将绘图排列在一个图中,我使用了该patchwork包。在安排中,我将 2 个图放在顶部,在这些图下方放置通用图例,在通用图例下方放置第三个图。我使用该函数创建了公共图例空间guide_area(),但随之创建了一个大的未使用的空白区域。

如何才能将未使用的空白空间保持在最低限度?

library(ggplot2)
library(patchwork)

p1 <- ggplot(data = mpg,
             aes(x = fl,
                 y = displ)) +
  geom_col(aes(fill = cty))

p2 <- ggplot(data = mpg,
             aes(x = year,
                 y = hwy)) +
  geom_point(aes(color = drv))

p3 <- ggplot(data = mpg,
             aes(x = class,
                 y = displ)) +
  geom_col() +
  facet_grid(~year)

((p1+p2)/guide_area()/p3) +
  plot_layout(guides = "collect") &
  theme(legend.position = "bottom")
Run Code Online (Sandbox Code Playgroud)

空白区域保留在图形的不同大小和比例中(空白区域用红色标记)。

在此输入图像描述

whitespace r legend ggplot2 patchwork

10
推荐指数
1
解决办法
1198
查看次数

使用拼凑时如何减少图之间的空间

大家好,我正在使用一个小数据框来构建一些绘图ggplot2。我的数据框是df,我将其包含dput()在最后。我有情节,当我使用时问题就会出现patchwork。我希望最终的图没有空格,以便中间的线(即轴)可以将图连接在一起。这是代码:

library(ggplot2)
library(patchwork)
library(cowplot)
library(ggtext)
#Plot 1
G1 <- ggplot(df,aes(x=Var1,y=Var2))+
  geom_line(aes(color=Group,group=Group),size=1)+
  geom_point(aes(color=Group,group=Group,shape=Group),size=2)+
  scale_y_continuous(limits = c(0,NA),
                     sec.axis = dup_axis(name = '',breaks = NULL,labels = NULL))+
  theme_half_open(12) +
  background_grid() +
  theme(
    strip.background = element_blank(),
    strip.text = element_textbox(
      size = 12,
      face = 'bold',
      color = "white", fill = "#5D729D", box.color = "#4A618C",
      halign = 0.5, linetype = 1, r = unit(5, "pt"), width = unit(1, "npc"),
      padding = margin(2, 0, 1, 0), margin = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 patchwork

10
推荐指数
1
解决办法
1万
查看次数

拼凑而成的图中,如何调整plot_annotation标签的字体样式?

我有一个图形组装patchwork如下:

library(ggplot2)
library(patchwork)

p1 <- ggplot(mtcars) + geom_point(aes(mpg, disp))
p2 <- ggplot(mtcars) + geom_boxplot(aes(gear, disp, group = gear))

p1 + p2 + plot_annotation(tag_levels = 'a')
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如何更改标签的字体以使字母ab以粗体显示?

r ggplot2 patchwork

9
推荐指数
1
解决办法
4443
查看次数

在 Patchwork 中手动定位图例

我想将图例(所有绘图共有)放置在拼凑布局的空白区域中。legend.position从我在网上可以找到的情况来看,如果我也使用的话,我无法手动定位图例guides="collect"(但可以使用左、右等)。

我尝试过使用l <- get.legendthen+ inset_element(l, 0.6, 0.6, 1, 1)但它不明白l。我也尝试过混入,+ inset_element(gridExtra::tableGrob(l))但没有运气。

我的目标是将图例放在空白处。我的实际拼凑图更复杂,但有两个空白空间,我希望图例位于其中。

微量元素

library(patchwork)    
library(ggplot2)
p1 <- ggplot(mtcars) + 
  geom_point(aes(mpg, disp, color = mpg)) + 
  ggtitle('Plot 1')

p2 <- ggplot(mtcars) + 
  geom_boxplot(aes(gear, disp, group = gear)) + 
  ggtitle('Plot 2')

p3 <- ggplot(mtcars) + 
  geom_point(aes(hp, wt, colour = mpg)) + 
  ggtitle('Plot 3')    

design <- "
1111
223#
"    
p1 + p2 + p3  + plot_layout(guides = 'collect') + plot_layout(design=design, guides …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 patchwork

9
推荐指数
1
解决办法
4725
查看次数

在多个 ggplot 的 {patchwork} 中添加纯文本部分的最佳方法?

当使用{patchwork}将单独的 ggplots 组合成同一个图形时,我有时想添加一个或多个根本不是绘图的部分,但基本上是一个文本框。

据我所知,拼凑文档中唯一一次解决这个问题是在这里使用wrap_elements(grid::textGrob('Text on left side')). 然而,这是行不通的,因为我想使用{ggtext}主要是为了(i)自动换行和(ii)混合常规、斜体、粗体和彩色文本(参见例如此处)。

到目前为止,我已经找到了两种不同的方法来实现这项工作,它们在下面的 reprex 中进行了演示。两种方法的共同点是它们基本上隐藏了 ggplot 中不是所需文本的所有部分。

  • 第一种方法(灵感来自此处:绘图相关代码)将文本添加为ggtext::geom_textbox()​​ 。
  • 第二种方法(灵感来自这里:绘图相关代码)将文本添加为subtitle​​ with theme(plot.subtitle = ggtext::element_markdown())

问题

然而,我的问题是,是否有更好/更简单的方法来实现这一点。主要是因为正如您在下面的 reprex 中看到的那样,在文本正确排列之前需要进行一些margin()操作。plot_layout()

我可以想到对于此文本我想要两种不同的垂直对齐方式:

  1. 这样它就从与左图标题相同的高度开始。p2与此接近,但需要手动扭转。此外,它目前为左侧图的标题和副标题添加了不必要的垂直空间。
  2. 这样它就从与左图的绘图区域相同的高度开始。p1与此接近,但需要手动扭转

代表

# setup -------------------------------------------------------------------
library(ggtext)
library(glue)
library(patchwork)
library(tidyverse)

cols <- c(ctrl = "red", trt1 = "blue", trt2 = "purple")

string <- glue("<i style='color:{cols}'>{names(cols)}</i>") …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 patchwork ggtext

8
推荐指数
1
解决办法
1210
查看次数

在拼凑的主标题和情节标题之间添加图例

是否可以使用拼接在“主”标题下方和情节标题上方添加图例?

library(ggplot2)
library(patchwork)

p1 <- ggplot(mtcars, aes(disp, wt, color = factor(gear))) + 
    geom_point() + 
    labs(title = "first plot title")
p2 <- ggplot(mtcars, aes(drat, qsec, color = factor(gear))) + 
    geom_point() + 
    labs(title = "second plot title")

(p1+p2) + 
    plot_layout(guides = "collect") + 
    plot_annotation(title = "main title") & 
    theme(legend.position = "top")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2 patchwork

7
推荐指数
1
解决办法
4236
查看次数

将ggplot2中的图例与拼凑而成

我想结合两个或更多的情节来合并他们的传说。

例如,我可以创建一些数据和两个场景,如下所示。

# packages
library(ggplot2)
library(patchwork)

# first plot
set.seed(07042020)
x <- runif(50)
y <- runif(50)
data1 <- data.frame(x = x, y = y, z = runif(50, 0, 2))
p1 <- ggplot(data1) + geom_point(aes(x, y, col = z))
p1
Run Code Online (Sandbox Code Playgroud)

data2 <- data.frame(x = x, y = y, z = runif(50, -1, 1))
p2 <- ggplot(data2) + geom_point(aes(x, y, col = z))
p2
Run Code Online (Sandbox Code Playgroud)

以下代码是我迄今为止尝试过的代码,但这不是预期的结果。我想将两个图与单个图例合并,即创建一个独特且常见的图例“z”,使两个图的点根据这个图例进行着色。这可能吗?

p1 + p2 + plot_layout(guides = "collect")
Run Code Online (Sandbox Code Playgroud)

reprex 包(v0.3.0)于 2020 年 4 月 7 日创建

r ggplot2 patchwork

6
推荐指数
1
解决办法
3184
查看次数

使用拼凑排列多个图时,如何将图例合并为图大小图?

虚拟代码:

library(ggplot2)
library(patchwork)

plot1 <- mpg %>% ggplot()
plot2 <- mpg %>% ggplot()
plot3 <- mpg %>% ggplot(aes(cyl, displ)) +
  geom_point(aes(colour = manufacturer)) + 
  guides(colour=guide_legend(ncol=4))

(plot1 + plot2) / plot3
Run Code Online (Sandbox Code Playgroud)

我不是在寻找组合的图例,而是看起来像这样的东西:

在此输入图像描述

图例被“视为”情节的一部分。theme()我尝试过使用and添加边距plot_spacer(),但这并不完全是我想要的。这就是我得到的:

在此输入图像描述

r ggplot2 patchwork

6
推荐指数
1
解决办法
230
查看次数

标签 统计

ggplot2 ×10

patchwork ×10

r ×10

ggtext ×1

legend ×1

whitespace ×1