Изменение размера шрифта и направления текста осей в ggplot2
Я рисую график с категориальной переменной на оси x и числовую переменную на оси y.
Для оси x, учитывая, что существует много точек данных, форматирование по умолчанию приводит к тому, что метка для каждой метки метки перекрывается с другими метками. Как (а) изменить размер шрифта для моего текста оси и (б) изменить ориентацию текста так, чтобы текст перпендикулярен оси?
Ответы
Ответ 1
Используйте theme()
:
d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
theme(text = element_text(size=20),
axis.text.x = element_text(angle=90, hjust=1))
#vjust adjust the vertical justification of the labels, which is often useful
![enter image description here]()
Здесь есть много хорошей информации о том, как отформатировать ваши ggplots здесь. Вы можете увидеть полный список параметров, которые вы можете изменить (в основном, все из них) с помощью ?theme
.
Ответ 2
То же @Дрю Стин об использовании theme()
. Вот общие атрибуты темы для текста оси и заголовков.
ggplot(mtcars, aes(x = factor(cyl), y = mpg))+
geom_point()+
theme(axis.text.x = element_text(color = "grey20", size = 20, angle = 90, hjust = .5, vjust = .5, face = "plain"),
axis.text.y = element_text(color = "grey20", size = 12, angle = 0, hjust = 1, vjust = 0, face = "plain"),
axis.title.x = element_text(color = "grey20", size = 12, angle = 0, hjust = .5, vjust = 0, face = "plain"),
axis.title.y = element_text(color = "grey20", size = 12, angle = 90, hjust = .5, vjust = .5, face = "plain"))
Ответ 3
Использовать тему():
d <- data.frame(x=gl(10, 1, 10, labels=paste("long text label ", letters[1:10])), y=rnorm(10))
ggplot(d, aes(x=x, y=y)) + geom_point() +
theme(text = element_text(size=20))
Ответ 4
Добавляя к предыдущим решениям, вы также можете указать размер шрифта по отношению к base_size
, включенному в такие темы, как theme_bw()
(где base_size
равно 11) с помощью функции rel()
.
Например:
ggplot(mtcars, aes(disp, mpg)) +
geom_point() +
theme_bw() +
theme(axis.text.x=element_text(size=rel(0.5), angle=90))
Ответ 5
Использование атрибута "fill" помогает в таких случаях. Вы можете удалить текст с оси с помощью element_blank()
и показать многоцветную гистограмму с легендой. Я рисую частоту удаления части в ремонтной мастерской ниже
ggplot(data=df_subset,aes(x=Part,y=Removal_Frequency,fill=Part))+geom_bar(stat="identity")+theme(axis.text.x = element_blank())
Я пошел на это решение в моем случае, поскольку у меня было много баров на гистограмме, и я не смог найти подходящий размер шрифта, который является читаемым и также достаточно мал, чтобы не перекрывать друг друга.