Изменение размера шрифта и направления текста осей в 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())

Я пошел на это решение в моем случае, поскольку у меня было много баров на гистограмме, и я не смог найти подходящий размер шрифта, который является читаемым и также достаточно мал, чтобы не перекрывать друг друга.