Вопрос или проблема
Я попробовал множество способов разместить заголовок оси Y сборника ггкарт рядом с осью, но не смог добиться результата. Вместо этого я получаю что-то подобное:
Кажется разумным предположить, что вокруг изображения есть отступ.
Как мне приблизить этот заголовок?
Я хочу получить этот результат:
Я попробовал это:
library(grid)
library(gridtext)
yleft <- grid.text("Широта (°N)", rot = 90, vjust = 0.50, gp = gpar(fontsize = 12, fontfamily = "serif"))
bottom <- grid.text("Долгота (°E)", hjust = 1.05, gp = gpar(fontsize = 12, fontfamily = "serif"))
{ wrap_elements(yleft) +
{{Pb1 + Pb2 + Pb3 + Pb4 + Pb5 + Pb6 + Pb7 + Pb8+
plot_layout(guides="collect", ncol = 2)}} +
plot_layout(widths=c(1,20,1)) } /
bottom +
plot_layout(heights=c(100,1,1))
Ответ или решение
Для того чтобы переместить заголовок оси y ближе к графикам, сгруппированным с помощью пакета Patchwork и ggmap, можно воспользоваться функцией plot_margin()
из библиотеки patchwork
, а также настройками для текста с помощью grid
.
Вот пошаговая инструкция:
-
Убедитесь, что у вас установлены необходимые библиотеки:
install.packages("ggplot2") install.packages("ggmap") install.packages("patchwork") install.packages("grid")
-
Загрузите необходимые пакеты:
library(ggplot2) library(ggmap) library(patchwork) library(grid)
-
Создайте ваш ggmap график (Pb1, Pb2 и т.д.) и затем добавьте заголовок для оси y с помощью
grid.text
, при этом не забывая о параметре смещенияvjust
. Также стоит учитывать наличия маргинов у всех графиков. -
Пример кода, который приближает заголовок оси к графикам:
# Предположим, что Pb1 - это ваш ggmap график Pb1 <- ggmap::get_map(location = "New York") %>% ggmap::ggmap() # Создайте ваши графики Pb2, Pb3 и т.д. # Добавьте текстовые заголовки с учетом нового положения: y_left <- grid.text("Latitude (°N)", rot = 90, vjust = 1, x = unit(0.05, "npc"), gp = gpar(fontsize = 12, fontfamily = "serif")) bottom <- grid.text("Longitude (°E)", hjust = 1.05, gp = gpar(fontsize = 12, fontfamily = "serif")) # Постройте совместный график (wrap_elements(y_left) + (Pb1 + Pb2 + Pb3 + Pb4 + Pb5 + Pb6 + Pb7 + Pb8 + plot_layout(guides="collect", ncol = 2))) + plot_layout(widths=c(1, 20, 1)) / bottom + plot_layout(heights=c(100, 1, 1), guide_area = "back")
-
Настройка отступов:
Попробуйте изменить значения отступов (например,vjust
,hjust
,widths
,heights
), чтобы улучшить расположение заголовка по своему усмотрению. Важно экспериментировать с различными значениями для достижения наилучшего визуального результата. -
Если после этих изменений заголовок всё ещё кажется далёким от графиков, проверьте другие параметры ваших графиков и layout’ов, чтобы убедиться, что они не создают лишнего пространства.
Такая стратегия поможет вам добиться нужного результата, переместив заголовок оси y ближе к вашим графикам.