Это проблема, связанная с этот вопрос. ОП попросил способ расположить части участка на определенных расстояниях. Я думаю, что Тюнбранд дал очень хороший ответ.
Мое собственное предложение (извлечь легенду с коровьим графиком и сшить их с графиком в желаемых пропорциях) не полностью удовлетворительно, потому что в данном примере оно сработало только случайно - метки легенды были достаточно длинными, чтобы центрировать гроб легенды в окне просмотра для третьего участка.
Наличие более коротких этикеток выявляет проблему - при добавлении гроба лоскутное одеяло центрирует этот гроб, в основном равномерно заполняя его со всех сторон.
Мой вопрос: знаете ли вы, как управлять этим поведением заполнения?
Cowplot (или любой другой пакет, объединяющий ggplot для этого) также очень приветствуется.
library(tidyverse)
library(patchwork)
data <- midwest %>%
head(5) %>%
select(2,23:25) %>%
pivot_longer(cols=2:4,names_to="Variable", values_to="Percent") %>%
mutate(Variable=factor(Variable,
levels=c("percbelowpoverty","percchildbelowpovert","percadultpoverty"),
labels = paste0("perc", 1:3)))
p1 <-
ggplot(data=data, mapping=aes(x=county, y=Percent, fill=Variable)) +
geom_col() +
scale_fill_manual(values = c("#CF232B","#942192","#000000")) +
theme(legend.background = element_rect(fill = "grey50"))
p_legend <- cowplot::get_legend(p1)
p_main <- p1 <-
ggplot(data=data, mapping=aes(x=county, y=Percent, fill=Variable)) +
geom_col(show.legend = FALSE) +
scale_fill_manual(values = c("#CF232B","#942192","#000000"))
p_main + plot_spacer() + p_legend +
plot_layout(widths = c(12.5, 1.5, 4)) &
theme(plot.margin = margin(),
plot.background = element_rect(colour = "black"))
Не очень желаемый результат - граница легенды (с серым фоном) должна быть выровнена по левой границе графика (черная линия)
Создано 2021-04-09 пакетом REPEX (v1.0.0)