Обложка канала

R4marketing | канал Алексея Селезнёва | Язык R

Автор канала Алексей Селезнёв, руководитель отдела аналитики в Netpeak, автор R пакетов: ryandexdirect, rfacebookstat и др. В канале публикуются статьи, доклады, новости, заметки по языку R.

R4marketing | канал Алексея Селезнёва | Язык R

3 года назад
Открыть в
ggplot2: Перенос строк в длинных подписях осей Далеко не всегда подписи значений оси легко помещаются на график при дефолтных настройках темы в ggplot2. Если ваши подписи накладываются друг на друга (самый левый пример на изображении к посту) то у вас есть несколько вариантов их исправить: 1. Добавить перенос строки в длинные подписи; 2. Изменить угол наклона текста подписи Пример:
library(ggplot2)

# тестовые данные
df = data.frame(x = c("label", "long label", "very, very long label"), 
                y = c(10, 15, 20))

# дефолтные настройки
ggplot(df, aes(x, y)) + 
  xlab("") + ylab("Number of Participants") +
  geom_bar(stat = "identity") 

Добавить перенос строк можно с помощью функции str_wrap() из пакета stringr. Данная функция принимает строку, и количество символов ,которое должно помещаться в одну строку, далее добавляется в нужных местах подписи перенос строки. Добавить эту функции в ggplot2 можно в сочетании с функцией scale_x_discrete().На изображении к посту результат этой функции по центру.
library(stringr)

# перенос троки
ggplot(df, aes(x, y)) + 
  xlab("") + ylab("Number of Participants") +
  geom_bar(stat = "identity") +
  scale_x_discrete(labels = function(x) str_wrap(x, width = 10))

Изменить угол наклона (на изображении к посту самый правый график) можно добавив слой theme(), и настроив наклон на 90 градусов (angle = 90), сделать горизонтальное центрирование к оси X (hjust = 1), b и вертикальное (vjust = 0.5).
# изменяем угол наклона текста подписей
p3 <- ggplot(df, aes(x, y)) + 
  xlab("") + ylab("Number of Participants") +
  geom_bar(stat = "identity") +
  theme(axis.text.x = element_text(angle = 90, hjust = 1, vjust = 0.5))

Смотрите так же: - Как исправить перекрывающие друг друга текстовые метки в ggplot2 #заметки_по_R