标签: patchwork

组合ggplot2对象时在拼凑中设置轴限制

ggplot2使用拼凑组合对象时,我希望能够有一个选项,我可以轻松地为所有图设置一个选项,使其具有相同的 x 轴和/或 y 轴范围。

代表:

library(patchwork)
library(ggplot2)
library(dplyr)
#> 
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#> 
#>     filter, lag
#> The following objects are masked from 'package:base':
#> 
#>     intersect, setdiff, setequal, union

p1 <- mtcars %>% 
  ggplot() + 
  geom_point(aes(mpg, disp)) + 
  ggtitle('Plot 1')

p2 <- mtcars %>% 
  filter(disp < 300) %>% 
  ggplot() + 
  geom_point(aes(mpg, disp)) + 
  ggtitle('Plot 2')

p1 + p2
Run Code Online (Sandbox Code Playgroud)

reprex 包(v0.3.0)于 2020 年 2 …

r ggplot2 patchwork

4
推荐指数
2
解决办法
1247
查看次数

Patchwork 不会为组合图分配通用图例

我使用组合了三个图patchwork

在此输入图像描述

我已经关注了这个SO线程,其中解决了类似的问题。但是,在我的脚本上应用该特定方法并不能解决问题。我想要所有三个图都有一个共同的图例:

预期产出 在此输入图像描述

脚本

library(ggplot2)
tti_type <- ggplot(p %>%
         bind_rows(., mutate(., type = "all")), 
       aes(x = type, y = logtti, color = corona, fill = corona)) + 
  geom_boxplot() + 
  scale_color_manual(name="", 
                     values = c("#8B3A62", "#6DBCC3"),
                     label = c("Before", "During lockdown")) + 
  scale_fill_manual(name = "",
                    values = c("#8B3A6220", "#6DBCC320"),
                    label = c("Before", "During lockdown")) +
  ggtitle("Time to treatment initiation") +
  theme(legend.position = "bottom")


los_type <- ggplot(p %>%
                     bind_rows(., mutate(., type = "all")), 
                   aes(x = type, y = loglos, …
Run Code Online (Sandbox Code Playgroud)

plot r legend ggplot2 patchwork

4
推荐指数
1
解决办法
2118
查看次数

在 R 中使用 ggtext 和 gridtext 在 R 中绘制具有跨越图形图例的多面板图

我即将通过下面的跨越 textgrob 图形图例实现这个多面板图。但是我继续在人物和人物图例之间获得意想不到的空间。在下面的 reprex 中尝试。

# Library calls
library(tidyverse)
library(grid)
library(gridtext)
library(ggtext)
library(patchwork)

# make dummy figures
d1 <- runif(500)
d2 <- rep(c("Treatment", "Control"), each=250)
d3 <- rbeta(500, shape1=100, shape2=3)
d4 <- d3 + rnorm(500, mean=0, sd=0.1)
plotData <- data.frame(d1, d2, d3, d4)
str(plotData)
#> 'data.frame':    500 obs. of  4 variables:
#>  $ d1: num  0.0177 0.2228 0.5643 0.4036 0.329 ...
#>  $ d2: Factor w/ 2 levels "Control","Treatment": 2 2 2 2 2 2 2 2 2 2 ... …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 patchwork ggtext

3
推荐指数
1
解决办法
434
查看次数

使用 patchwork 来注释在不同位置具有标签的图

我使用 patchwork 来组装用 ggplot2 制作的图。我还使用 patchwork 的plot_annotation()命令自动注释组装好的图\xe2\x80\x94,例如自动将“A”、“B”等放置在每个图的右上角。在大多数情况下,这很容易做到。但是,当绘图的轴标签位于不同位置时,很难在正确的位置获得注释。这是问题的最小说明:

\n
library(ggplot2)\nlibrary(patchwork)\n\npLeft <- ggplot(mtcars) + \n  geom_point(aes(mpg, disp)) + \n  scale_y_continuous("Left-hand panel", position = "left")\n\npRight <- pLeft + \n  scale_y_continuous("Right-hand panel", position = "right")\n\npLeft + pRight + \n  plot_layout(nrow = 1) & \n  plot_annotation(tag_levels = "A") & \n  theme(plot.tag.position  = c(.935, .96))\n
Run Code Online (Sandbox Code Playgroud)\n

该代码生成一个两面板图。第一个面板的标签“A”位于正确的位置。但第二个面板的标签“B”不是:\n标签位置错误的绘图

\n

有多种方法可以解决该问题。例如,我可以plot.tag.position为每个面板单独指定:

\n
pLeft + theme(plot.tag.position  = c(.935, .96)) +\n  pRight + theme(plot.tag.position  = c(.785, .96)) + \n  plot_layout(nrow = 1) & \n  plot_annotation(tag_levels = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 patchwork

3
推荐指数
1
解决办法
3978
查看次数

R中的plot_annotations通过拼凑消失

我正在尝试将两个patchwork objects一起绘制。该代码有效但plot_annotations消失了。

如何解决这个问题?

数据+代码:

library(tidyverse)
library(patchwork)

#Plot 1
GG1 = ggplot(iris,aes(x=Sepal.Length,y=Sepal.Width))+
  geom_point()
#Plot 2
GG2 = ggplot(iris,aes(y=Sepal.Length,x=Sepal.Width))+
  geom_point()
#Plot 3
GG3 = ggplot(iris,aes(y=Petal.Width,x=Sepal.Width))+
  geom_point()
#Plot 4
GG4 = ggplot(iris,aes(y=Petal.Length,x=Petal.Width))+
  geom_point()


combine_1 =  GG1 + GG2 +
  plot_annotation(title = 'Combine plot 1',
                  theme = theme(plot.title = element_text(hjust = 0.5)))

combine_2 =  GG3 + GG4 +
  plot_annotation(title = 'Combine plot 2',
                  theme = theme(plot.title = element_text(hjust = 0.5)))

combine_1/combine_2
Run Code Online (Sandbox Code Playgroud)

输出

在此输入图像描述

r ggplot2 patchwork

3
推荐指数
1
解决办法
1189
查看次数

使用拼凑将组合子图(拼凑?)注释为单个图

我试图弄清楚如何注释组合拼凑物,就好像它们是单独的图一样。

我有一个由三个组合图和另一个单个图组成的拼凑而成。最终的复合图是顶部的第一个拼凑物和底部的单独图。我可以毫无问题地获得我想要的布局,但是当我使用 时plot_annotation,它会为每个图提供字母,而我想看到的是顶部图(三个子图拼凑而成)的 A 和底部图的 B (只是一个情节)

这是我目前正在做的事情:

library(ggplot2)
library(patchwork)

p1 <- ggplot(mtcars) + 
  geom_point(aes(mpg, disp)) + 
  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')

p4 <- ggplot(mtcars) + 
  geom_bar(aes(gear)) + 
  facet_wrap(~cyl) + 
  ggtitle('Plot 4')

top_plot = (p1 + p2 + p3)
bottom_plot = p4
combined_plot <- (top_plot / bottom_plot) + plot_annotation(tag_levels="A")
combined_plot
Run Code Online (Sandbox Code Playgroud)

我希望看到的不是 AD 注释,而是顶部图(图 1-3)的 A 和底部图(图 4)的 …

graphics plot r ggplot2 patchwork

3
推荐指数
1
解决办法
874
查看次数

如何允许公共中心 y 轴标签延伸到底部图形?

使用 ggplot,我生成了三个图形,我想使用包 patchworks 以打包方式(在彼此之上)组合这些图形。

这可以通过键入以下内容轻松实现:

graph1/graph2/graph3

但是,我遇到的问题是,对于这三个图形,我有一个共同的 y 轴,我自然希望将其放置在中心图形处(因此,当我制作时,我只为图形 2 创建了 y 轴标签ggplot 中的图表)。这个 y 轴标签文本相当长。因此,我想将它扩展到“超出其他图表的边界”。但是,我的结果如下图所示。

在此处输入图片说明

可以看出,y轴标签允许延伸到顶部图但不允许延伸到底部图(这里多余的标签文本被简单地删除,就像底部图放在文本顶部一样)。

我怎样才能让我的 y 轴标签也延伸到底部图形中?之后简单地更改图片的尺寸以使中心图形足够大以容纳标签不是一种选择(然后图形会太大而无法放在一页上)。

r ggplot2 patchwork

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

标签 统计

ggplot2 ×7

patchwork ×7

r ×7

plot ×2

ggtext ×1

graphics ×1

legend ×1