Zwiększ odległość między tekstem a tytułem na osi y

108

Tytuł osi Y pojawia się zbyt blisko tekstu osi.

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

ggplot wyjście

Próbowałem zmienić wartości wielu parametrów, theme()ale żaden z nich nie pomaga.

Ernest A.
źródło

Odpowiedzi:

171

Od ggplot2 2.0.0można użyć margin =argumentu element_text(), aby zmienić odstęp między tytułem osi i numery. Ustaw wartości marginon top, right, bottom i left elementu.

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

marginmoże być również używany do innych element_textelementów (zobacz ?theme), takich jak axis.text.x, axis.text.yi title.

Didzis Elferts
źródło
4
Ta metoda wydaje się nie działać facet_grid, podczas gdy odpowiedź sugerowana przez Adama B działa (tj. Podział wiersza za pomocą \ n)
Anonimowy
@ Anonimowy Czy możesz podać przykład, w którym ten margin =argument nie jest wokr?
Didzis Elferts
Próbowałem tego z theme_bw. Przepraszamy, wysyłanie całego kodu jest nieczytelne / niechlujne ...
Anonimowy
3
@Anonymous Jeśli używasz, theme_bw()to theme_bw()powinno być używane przed theme()funkcją, ponieważ w predefiniowanych motywach jest już argument dla tytułów osi.
Didzis Elferts,
Dziękuję za wyjaśnienie!
Anonimowy
97

Na podstawie tego posta na forum: https://groups.google.com/forum/#!topic/ggplot2/mK9DR3dKIBU

Wygląda na to, że najłatwiejszą rzeczą do zrobienia jest dodanie końca linii (\ n) przed osią x i po etykietach osi y. Wydaje się dużo prostsze (choć głupsze) niż powyższe rozwiązania.

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

Mam nadzieję, że to pomoże!

Adam B.
źródło
4
Zwykle używam tej metody, jest znacznie szybsza i nie wymaga dodawania kolejnej opcji do ggplot, chyba że potrzebuję konkretnych poprawek.
R. Prost