Выравнивание заголовка фасета с помощью facet_wrap () в ggplot2? - PullRequest
0 голосов
/ 25 мая 2020

Я делаю сюжет с фасетами и пытаюсь исправить выравнивание заголовка фасета / полосы. Прямо сейчас кажется, что панель выровнена по левому краю, что помещает ее поверх промежутка между основанием столбца и отметкой оси. В идеале я бы выровнял его с основанием графика или полностью выровнял по левому краю и переместил основание столбца ближе к метке оси Y. Представлено ниже.

library(tidyverse)

tibble(ToothGrowth) %>% 
  mutate(dose = as_factor(dose),
         supp = as_factor(supp)) %>% 
  group_by(supp, dose) %>% 
  summarise(x = median(len)) %>% 
  ggplot(aes(y = supp, x = x)) +
  geom_col(fill = "grey55") +
  facet_wrap(~dose, ncol = 1) +
  labs(title = "Growing Teeth are less interesting than Irises") +
  theme_minimal() +
  theme(strip.placement = "inside",
        strip.text = element_text(hjust = 0),
        strip.background = element_blank(),
        panel.background = element_rect(fill = "grey95",
                                        color = NA))

Создано 25.05.2020 с помощью пакета REPEX (v0.3.0)

Ответы [ 2 ]

1 голос
/ 25 мая 2020

Это то, что вы ищете?

По сути, мы помещаем полосы фасетов слева от панелей и настраиваем (недокументированный) элемент темы strip.text.y.left.

Я мог бы image вы также хотели бы, чтобы текст полосы был даже за пределами заголовка оси Y, но я боюсь, что это невозможно без углубления в таблицу / таблицы графика.

library(tidyverse)

tibble(ToothGrowth) %>% 
  mutate(dose = as_factor(dose),
         supp = as_factor(supp)) %>% 
  group_by(supp, dose) %>% 
  summarise(x = median(len)) %>% 
  ggplot(aes(y = supp, x = x)) +
  geom_col(fill = "grey55") +
  facet_wrap(~dose, ncol = 1, strip.position = "left") +
  labs(title = "Growing Teeth are less interesting than Irises") +
  theme_minimal() +
  theme(strip.placement = "outside",
        strip.text.y.left = element_text(angle = 0, vjust = 1),
        strip.background = element_blank(),
        panel.background = element_rect(fill = "grey95",
                                        color = NA))

Создано 25.05.2020 пакетом REPEX (v0.3.0)

0 голосов
/ 25 мая 2020

Вот альтернатива @teunbrand с использованием expand = c(0,0) и небольшого подталкивания с помощью hjust = -0.01:

plot.data <- tibble(ToothGrowth) %>% 
  mutate(dose = as_factor(dose),
         supp = as_factor(supp)) %>% 
  group_by(supp, dose) %>% 
  summarise(x = median(len)) %>%
ggplot(aes(y = supp, x = x)) +
  geom_col(fill = "grey55") +
  scale_x_continuous(expand = c(0, 0)) +
  facet_wrap(~dose, ncol = 1) +
  labs(title = "Growing Teeth are less interesting than Irises") +
  theme_minimal() +
  theme(strip.text.x = element_text(hjust = -0.01),
        panel.background = element_rect(fill = "grey95",
                                        color = NA))

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...