ggplot2 marginesy obszaru kreślenia?


86

Czy istnieje łatwy sposób na zwiększenie odstępu między tytułem wykresu a obszarem wykresu pod nim (ramką z danymi)? Podobnie wolałbym mieć trochę odstępu między tytułem osi a etykietami osi.

Innymi słowy, czy istnieje sposób na „przesunięcie tytułu nieco w górę, tytuł osi y nieco w lewo, a tytuł osi x nieco w dół”?


1
Zawsze możesz wkleić kilka "\n"znaków do tytułów, aby wymusić nowe wiersze.
joran

Odpowiedzi:


113

Możesz dostosować marginesy wydruku za pomocą plot.marginin, theme()a następnie przenieść etykiety osi i tytuł za pomocą vjustargumentu element_text(). Na przykład :

library(ggplot2)
library(grid)
qplot(rnorm(100)) +
    ggtitle("Title") +
    theme(axis.title.x=element_text(vjust=-2)) +
    theme(axis.title.y=element_text(angle=90, vjust=-0.5)) +
    theme(plot.title=element_text(size=15, vjust=3)) +
    theme(plot.margin = unit(c(1,1,1,1), "cm"))

da ci coś takiego:

wprowadź opis obrazu tutaj

Jeśli chcesz uzyskać więcej informacji o różnych theme()parametrach i ich argumentach, możesz po prostu wpisać ?themew wierszu polecenia R.


4
Dzięki! Nie byłem pewien, co mam podać, żeby grid::unitsta plot.marginargumentacja zadziałała . Okazuje się, że musisz podać długość od-4 do units. Szkoda, że xargument unitsnie został w żaden sposób przetworzony. Prawdopodobnie już to wiesz, ale warto zauważyć / zaktualizować, które optsjest obecnie przestarzałe w najnowszej wersji ggplot2 (0.9.2+), zastąpione przez theme, które jest theme_textteraz zastępowane przez element_text.
Paul McMurdie,

44
Kolejność krawędzi dla plot.margin to jednostka (c (góra, prawa, dół, lewa), jednostki), jeśli ktoś inny chce zaoszczędzić czas na szukaniu tego.
mightypile

16
@generic_user: być może łatwiejsze do zapamiętania, jak wspomniano tutaj :t, r, b, l (To remember order, think trouble).
Tung

3
Alternatywnie, aby pamiętać ... to tylko do ruchu wskazówek zegara od góry: top, right, bottom, left.
spops

1
także:margin(t, r, l, b)
Brian D
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.