使用patchwork在ggplot2中合并图例

2025-09-18 22:51:46

我希望将两个或多个图表合并,同时合并它们的图例。

例如,我可以创建以下数据和两种情景。

# 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包(v0.3.0)于2020年04月07日创建的。