Изменить размер заголовка и меток осей в ggplot2

156

У меня очень простой вопрос, на который я пытаюсь найти ответ. Я надеялся, что здесь кто-нибудь сможет мне помочь.

Пример фрейма данных представлен ниже:

a <- c(1:10)
b <- c(10:1)
df <- data.frame(a,b)
library(ggplot2)
g = ggplot(data=df) + geom_point(aes(x=a, y=b)) +
  xlab("x axis")
g

Я просто хочу узнать, как я могу изменить размер текста заголовков осей и меток осей.

КТ_1
источник

Ответы:

328

Вы можете изменить текст оси и размер метки с помощью аргументов axis.text=и axis.title=в функции theme(). Если вам нужно, например, изменить только размер заголовка оси x, используйте axis.title.x=.

g+theme(axis.text=element_text(size=12),
        axis.title=element_text(size=14,face="bold"))

На странице ggplot2 есть хорошие примеры установки различных theme()параметров .

Дидзис Эльфертс
источник
9
Также появилась очень интуитивно понятная функция rel(). напримерsize = rel(2.0)
HongboZhu
2
как изменить labs(x = "x axis")размер текста, не меняя значения отметок оси x?
baxx
56

Я думаю, что лучший способ сделать это - изменить base_sizeаргумент. Это последовательно увеличит размеры текста.

g + theme_grey(base_size = 22)

Как видно здесь .

Chunjiw
источник
5
Если у вас уже есть другие themeэкземпляры, это может вызвать конфликты.
Адам Эриксон
@AdamErickson: Да, вы просто добавляете base_size = 22свою тему по выбору ..
геотеория
11

Если вы создаете много графиков, вы можете устать набирать для каждого графика строки кода, контролирующие размер заголовков и текстов. Обычно я создаю объект (класса "theme" "gg"), который определяет желаемые характеристики темы. Вы можете сделать это в начале вашего кода.

My_Theme = theme(
  axis.title.x = element_text(size = 16),
  axis.text.x = element_text(size = 14),
  axis.title.y = element_text(size = 16))

Затем все, что вам нужно сделать, это добавить My_Theme в ваши графики.

g + My_Theme
если у вас есть другой график, g1, просто напишите:
g1 + My_Theme 
и так далее.
Ртист
источник
4

rel()Достаточно эффективно изменять размер (почти) всех текстовых элементов в одном месте и синхронно :
g+theme(text = element_text(size=rel(3.5))

Возможно, вы захотите немного изменить число, чтобы получить оптимальный результат. Он устанавливает метки и заголовки горизонтальной и вертикальной оси, а также другие текстовые элементы в одном масштабе. Единственное исключение - заголовки фасетных сеток, которые должны быть вручную установлены на одно и то же значение, например, если в графике используются оба фасета x и y:
theme(text = element_text(size=rel(3.5)), strip.text.x = element_text(size=rel(3.5)), strip.text.y = element_text(size=rel(3.5)))

Интересующийся
источник