Как сделать так, чтобы заголовок левой оси был ближе к ggmap-графикам, расположенным с помощью Patchwork?

Вопрос или проблема

Я попробовал множество способов разместить заголовок оси 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.

Вот пошаговая инструкция:

  1. Убедитесь, что у вас установлены необходимые библиотеки:

    install.packages("ggplot2")
    install.packages("ggmap")
    install.packages("patchwork")
    install.packages("grid")
  2. Загрузите необходимые пакеты:

    library(ggplot2)
    library(ggmap)
    library(patchwork)
    library(grid)
  3. Создайте ваш ggmap график (Pb1, Pb2 и т.д.) и затем добавьте заголовок для оси y с помощью grid.text, при этом не забывая о параметре смещения vjust. Также стоит учитывать наличия маргинов у всех графиков.

  4. Пример кода, который приближает заголовок оси к графикам:

    # Предположим, что 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")
  5. Настройка отступов:
    Попробуйте изменить значения отступов (например, vjust, hjust, widths, heights), чтобы улучшить расположение заголовка по своему усмотрению. Важно экспериментировать с различными значениями для достижения наилучшего визуального результата.

  6. Если после этих изменений заголовок всё ещё кажется далёким от графиков, проверьте другие параметры ваших графиков и layout’ов, чтобы убедиться, что они не создают лишнего пространства.

Такая стратегия поможет вам добиться нужного результата, переместив заголовок оси y ближе к вашим графикам.

Оцените материал
Добавить комментарий

Капча загружается...