Увеличить расстояние между текстом и заголовком по оси Y

108

Заголовок оси Y отображается слишком близко к тексту оси.

ggplot(mpg, aes(cty, hwy)) + geom_point()

вывод ggplot

Я пытался изменить значение многих параметров, theme()но, похоже, ничего не помогает.

Эрнест А
источник

Ответы:

171

Из ggplot2 2.0.0вы можете использовать margin =аргумент element_text()для изменения расстояния между названием оси и цифрой. Установка значений marginна tоп, rпролете, bottom и lEFT стороны элемента.

ggplot(mpg, aes(cty, hwy)) + geom_point()+
  theme(axis.title.y = element_text(margin = margin(t = 0, r = 20, b = 0, l = 0)))

marginтакже может использоваться для других element_textэлементов (см. ?theme), таких как axis.text.x, axis.text.yи title.

Дидзис Эльфертс
источник
4
Этот метод, похоже, не работает facet_grid, в то время как ответ, предложенный Адамом Б, работает (например, разрыв строки с использованием \ n)
Anonymous
@Anonymous Вы можете привести пример, когда этот margin =аргумент не работает?
Didzis Elferts
Я пробовал с theme_bw. Извините, размещение всего кода нечитабельно / беспорядочно ...
Аноним,
3
@Anonymous Если вы используете, theme_bw()то theme_bw()следует использовать перед theme()функцией, потому что в предопределенных темах для заголовков осей уже есть аргумент.
Дидзис Эльфертс
Спасибо за разъяснения!
Anonymous
97

На основе этого сообщения на форуме: https://groups.google.com/forum/#!topic/ggplot2/mK9DR3dKIBU

Похоже, что проще всего добавить разрыв строки (\ n) перед осью x и после меток оси y. Кажется, намного проще (хотя и глупее), чем решения, опубликованные выше.

ggplot(mpg, aes(cty, hwy)) + 
    geom_point() + 
    xlab("\nYour_x_Label") + ylab("Your_y_Label\n")

Надеюсь, это поможет!

Адам Б
источник
4
Я обычно использую этот метод, он намного быстрее и не требует добавления еще одной опции в ggplot, если мне не нужны какие-то особые настройки.
Р. Прост