7

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

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

# 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

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

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

p1 + p2 + plot_layout(guides = "collect")

reprex 包于 2020-04-07 创建(v0.3.0)

4

2 回答 2

14

我认为只有当它们具有完全相同的属性时才能组合两个图例,即共享限制、标签、中断等。您可以通过共享通用比例来提供通用图例,拼凑而成的一种方法是使用&运算符,哪种意味着“将其应用于所有以前的图”:

p1 + p2 + plot_layout(guides = "collect") & 
  scale_colour_continuous(limits = range(c(data1$z, data2$z)))

在此处输入图像描述

唯一的缺点是您可能必须手动指定限制,因为比例 inp1不知道p2.

于 2020-04-07T11:43:14.853 回答
0

我知道你想要完成什么并且很幸运。也许,R 将这些视为两个独立的传说。您可以尝试手动编辑每个图例(即使将其保留为“z”),然后使用拼凑组合?

我尝试过的另一个故障排除方法是尝试重新排列您的代码,以确保正确读取所有内容:

(p1 + p2) + plot_layout(guides = "collect")

于 2020-04-07T10:53:45.340 回答