Я собрал 3 графика ggplot2 в одну фигуру, используя функциональные возможности пакета patchwork. Я попытался собрать легенды, и они появились одна за другой. Но все же это 3 отдельные легенды, и я ожидал, что это будет одна легенда. Итак, как я могу объединить легенды, содержащие идентичные значения одной и той же факторной переменной, в одну легенду?
Примечания:
- И я не хочу убирать легенды отдельных графиков, используя, например,
theme(legend.position = "none")
в случае появления некоторого дополнительного уровня фактора. Я ожидаю конкретного лоскутного решения. - На аналогичный вопрос был дан ответ в Объедините и объедините легенды в ggplot2 с помощью пэчворка но данные были непрерывными. А в моем случае у меня есть категоричные данные.
Код:
library(ggplot2)
library(patchwork)
iris_1 <-
ggplot(iris, aes(x = Sepal.Length, fill = Species, color = Species)) +
geom_density(alpha = 0.3, adjust = 1.5)
iris_2 <-
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species)) +
geom_point()
iris_3 <-
ggplot(iris, aes(x = Species, y = Sepal.Width, fill = Species)) +
geom_boxplot()
(iris_1 + iris_2 + iris_3) + plot_layout(guides = "collect")
Создано 14 октября 2020 г. пакетом REPEX (v0.3.0)
Обновить
Я попытался использовать те же эстетические сопоставления (fill = Species
и color = Species
), как это было предложено в комментариях ниже, но это не дало результата:
library(tidyverse)
library(patchwork)
iris_1 <-
ggplot(iris, aes(x = Sepal.Length, color = Species, fill = Species)) +
geom_density(alpha = 0.3, adjust = 1.5)
iris_2 <-
ggplot(iris, aes(x = Sepal.Length, y = Sepal.Width, color = Species, fill = Species)) +
geom_point()
iris_3 <-
ggplot(iris, aes(x = Species, y = Sepal.Width, color = Species, fill = Species)) +
geom_boxplot(color = "black")
(iris_1 + iris_2 + iris_3) + plot_layout(guides = "collect")
Создано 14 октября 2020 г. пакетом REPEX (v0.3.0)