Повернуть переключенные подписи фасетов в ggplot2 facet_grid

Я хотел бы построить несколько штриховых диаграмм друг над другом, используя facet_grid:

library(ggplot2)

df <- group_by(mpg, manufacturer) %>%
  summarise(cty = mean(cty), hwy = mean(hwy)) %>%
  ungroup()

df <- melt(df, id.vars = "manufacturer")

ggplot() +
  geom_bar(data =df, aes(x = variable, y = value), stat = "identity") +
  facet_grid(manufacturer ~ ., switch = "y")

Я использую switchаргумент ggplot2::facet_grid(), чтобы метки фасетов отображались на оси Y, а не поверх каждого фасета. Проблема в том, что метки фасетов отображаются вертикально и поэтому обрезаются. Есть ли способ построить метки фасетов по горизонтали? Все вопросы, которые я нашел до сих пор, относились только к повороту меток оси x, а не меток фасетов.


person roming    schedule 08.11.2016    source источник


Ответы (1)


Вам просто нужно добавить theme() и указать угол в strip.text.y.left.

library(tidyverse)
library(reshape2)

df <- group_by(mpg, manufacturer) %>%
  summarise(cty = mean(cty), hwy = mean(hwy)) %>%
  ungroup()

df <- melt(df, id.vars = "manufacturer")

ggplot() +
  geom_bar(data =df, aes(x = variable, y = value), stat = "identity") +
  facet_grid(manufacturer ~ ., switch = "y")+
  theme(strip.text.y.left = element_text(angle = 0))

Создано 15 марта 2020 г. пакетом REPEX (v0.3.0)

Обратите внимание, что strip.text.y.left был добавлен в ggplot2 3.3.0. Для более ранних версий нужно написать strip.text.y = element_text(angle = 180).

person joel.wilson    schedule 08.11.2016
comment
О проблеме сообщается как о проблеме №3888, здесь в репозитории ggplot: - person Fierr; 15.03.2020