Zmień rozmiar tytułu osi i etykiet w ggplot2

145

Mam naprawdę proste pytanie, na które usiłuję znaleźć odpowiedź. Miałem nadzieję, że ktoś tutaj może mi pomóc.

Przykładową ramkę danych przedstawiono poniżej:

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

Chcę się tylko dowiedzieć, jak zmieniam rozmiar tekstu tytułów osi i etykiet osi.

KT_1
źródło

Odpowiedzi:

313

Możesz zmienić tekst osi i rozmiar etykiety za pomocą argumentów axis.text=i axis.title=funkcji theme(). Jeśli potrzebujesz, na przykład, zmień tylko rozmiar tytułu osi x, a następnie użyj axis.title.x=.

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

Istnieją dobre przykłady ustawiania różnych theme()parametrów na stronie ggplot2 .

Didzis Elferts
źródło
8
Jest teraz również bardzo intuicyjna funkcja rel(). np.size = rel(2.0)
HongboZhu
2
jak można zmienić labs(x = "x axis")rozmiar tekstu bez zmiany wartości znaczników osi x?
baxx
53

Myślę, że lepszym sposobem na to jest zmiana base_sizeargumentacji. Spowoduje to konsekwentne zwiększenie rozmiarów tekstu.

g + theme_grey(base_size = 22)

Jak widać tutaj .

chunjiw
źródło
5
Jeśli masz już inne themeinstancje, może to powodować konflikty.
Adam Erickson,
10

Jeśli tworzysz wiele wykresów, możesz być zmęczony wpisywaniem dla każdego wykresu linii kodu kontrolujących rozmiar tytułów i tekstów. Zwykle tworzę obiekt (klasy „theme” „gg”), który definiuje pożądane cechy motywu. Możesz to zrobić na początku swojego kodu.

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

Następnie wszystko, co musisz zrobić, to dodać My_Theme do swoich wykresów.

g + My_Theme
jeśli masz inny wykres, g1, po prostu napisz:
g1 + My_Theme 
i tak dalej.
Rtist
źródło
4

Zmiana rozmiaru (prawie) wszystkich elementów tekstowych w jednym miejscu i synchronicznie rel()jest dość wydajna:
g+theme(text = element_text(size=rel(3.5))

Możesz nieco zmienić liczbę, aby uzyskać optymalny wynik. Ustawia etykiety i tytuły na osi poziomej i pionowej oraz inne elementy tekstowe w tej samej skali. Jedynym wyjątkiem są tytuły siatek fasetkowych, które należy ręcznie ustawić na tę samą wartość, na przykład jeśli na wykresie używane są zarówno aspekty x, jak i 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)))

Zainteresowany
źródło