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