Jak zwiększyć rozmiar czcionki na działce w R?

146

Jestem zdezorientowany. Jaki jest właściwy sposób na zwiększenie rozmiaru czcionki tekstu w tytule, etykietach i innych miejscach wątku?

Na przykład

x <- rnorm(100)
hist(x, xlim=range(x), xlab= "Variable Label", 
     ylab="density", main="Title of plot", prob=TRUE, ps=30)

psArgument nie zmienić rozmiar czcionki (ale mówi w R Pomocy ?parże do „rozmiaru punktu tekstu (ale nie symboli)”.

Czy można również oddzielić zmianę rozmiaru czcionki od funkcji kreślenia, takiej jak hist?

Tim
źródło
Możliwy duplikat Jak zmienić rozmiar etykiety wykresu R
Waldir Leoncio

Odpowiedzi:

140

Chcesz czegoś takiego jak cex=1.5argument skalowania czcionek o 150 procent. Ale widzę help(par), ponieważ istnieją również cex.lab, cex.axis...

Dirk Eddelbuettel
źródło
1
Dzięki! Jaka jest różnica z „ps = 1,5”?
Tim
5
dlaczego cex = 1,5 nie działa? Ale czy dla każdej części trzeba określić cex.lab, cex.axis, cex.main? Po co jest cex = 1,5?
Tim
2
Czytałeś help(par)o ps? O ile wiem, nie wydaje się być związany z tekstem.
Dirk Eddelbuettel
2
Tak właśnie jest, po części na pewno dla wstecznej kompatybilności z wcześniejszymi implementacjami języka S.
Dirk Eddelbuettel
3
cex to współczynnik powiększenia. Wartość domyślna to 1. Jeśli chcesz określić rozmiary czcionek, lepiej przygotuj się do zagłębienia się w dokumentację zaczynającą się od? Devices,? PdfFonts,? Pdf,? EmbedFonts i wielu innych.
IRTFM
124

Tak więc podsumowując dotychczasową dyskusję dodając

cex.lab=1.5, cex.axis=1.5, cex.main=1.5, cex.sub=1.5

do wykresu, gdzie 1,5 może oznaczać 2, 3 itd., a wartość domyślna 1 spowoduje zwiększenie rozmiaru czcionki.

x <- rnorm(100)

cex niczego nie zmienia

hist(x, xlim=range(x),
     xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE)

hist(x, xlim=range(x),
     xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE, 
     cex=1.5)

wprowadź opis obrazu tutaj

Dodaj cex.lab = 1,5, cex.axis = 1,5, cex.main = 1,5, cex.sub = 1,5

hist(x, xlim=range(x),
     xlab= "Variable Lable", ylab="density", main="Title of plot", prob=TRUE, 
     cex.lab=1.5, cex.axis=1.5, cex.main=1.5, cex.sub=1.5)

wprowadź opis obrazu tutaj

Jeromy Anglim
źródło
2
BTW, jeśli próbujesz zmodyfikować oś na wykresie słupkowym (powiedzmy dla wykresu ważności zmiennej w randomForest lub GBM), musisz użyć cex.names(jeśli jesteś człowiekiem, który czyta rzeczy z pozycji pionowej, możesz również want las=2)
geneorama
22

Zauważ, że " cex " zmienia rzeczy, gdy wykres jest tworzony za pomocą tekstu. Na przykład wykres aglomeracyjnego skupienia hierarchicznego:

library(cluster)
data(votes.repub)
agn1 <- agnes(votes.repub, metric = "manhattan", stand = TRUE)
plot(agn1, which.plots=2)

utworzy wykres z tekstem o normalnym rozmiarze:

wprowadź opis obrazu tutaj

i plot(agn1, which.plots=2, cex=0.5)wyprodukuje ten:

wprowadź opis obrazu tutaj

OskrSaSi
źródło
Pracuj faces2też (z twarzy Chernoffa )
Galled
W moim przykładzie musiałem zastosować cex nie do kreślenia, ale bezpośrednio do obiektu wewnętrznego, aby uzyskać efekt:plot(ci(roc(data$a, data$b, auc=TRUE, of="auc", print.auc=TRUE, print.auc.cex=1.5, plot=TRUE), of="thresholds", thresholds="best")))
Tapper
21

Metodą prób i błędów ustaliłem, że do ustawienia rozmiaru czcionki wymagane są następujące elementy:

  1. cexnie działa hist(). Użyj cex.axisdla liczb na osiach, cex.labdla etykiet.
  2. cexnie działa w axis()obu. Użyj cex.axisdla liczb na osiach.
  3. Zamiast ustawiania etykiet za pomocą hist(), możesz ustawić je za pomocą mtext(). Możesz ustawić rozmiar czcionki za pomocą cex, ale użycie wartości 1 spowoduje ustawienie czcionki na 1,5 raza domyślnej !!! Musisz użyć, cex=2/3aby uzyskać domyślny rozmiar czcionki. Przynajmniej tak jest w przypadku wersji R 3.0.2 dla systemu Mac OS X, przy użyciu formatu PDF.
  4. Możesz zmienić domyślny rozmiar czcionki dla pliku PDF, używając pointsizew formacie pdf().

Przypuszczam, że byłoby zbyt logiczne oczekiwać, że R (a) faktycznie zrobi to, co wskazuje jego dokumentacja, (b) zachowa się w oczekiwany sposób.

Urban Vagabond
źródło
2

Natknąłem się na to, gdy chciałem zmniejszyć etykiety osi, ale zostawiłem wszystko inne w tym samym rozmiarze. Polecenie, które zadziałało dla mnie, brzmiało:

par(cex.axis=0.5)

Przed komendą działki. Pamiętaj tylko, aby umieścić:

par(cex.axis=1.0)

Po wydruku, aby upewnić się, że czcionki wróciły do ​​domyślnego rozmiaru.

Odyseusz Itaka
źródło
2

Aby uzyskać kompletność, skalując tekst o 150% cex = 1.5, oto pełne rozwiązanie:

cex <- 1.5
par(cex.lab=cex, cex.axis=cex, cex.main=cex)
plot(...)
par(cex.lab=1, cex.axis=1, cex.main=1)

Zalecam owijanie rzeczy takich jak ten, aby zredukować kocioł, np .:

plot_cex <- function(x, y, cex=1.5, ...) {
  par(cex.lab=cex, cex.axis=cex, cex.main=cex)
  plot(x, y, ...)
  par(cex.lab=1, cex.axis=1, cex.main=1)
  invisible(0)
}

którego możesz następnie użyć w ten sposób:

plot_cex(x=1:5, y=rnorm(5), cex=1.3)

W języku ...R znane są jako elipsy i służą do przekazywania dodatkowych parametrów do funkcji. Dlatego są powszechnie używane do kreślenia. Tak więc, działa zgodnie z oczekiwaniami:

plot_cex(x=1:5, y=rnorm(5), cex=1.5, ylim=c(-0.5,0.5))
Adam Erickson
źródło
1

W przypadku, gdy chcesz zwiększyć czcionkę etykiet na histogramie, gdy ustawisz etykiety = TRUE

bp=hist(values, labels = FALSE, 
 main='Histogram',
 xlab='xlab',ylab='ylab',  cex.main=2, cex.lab=2,cex.axis=2)

text(x=bp$mids, y=bp$counts, labels=bp$counts ,cex=2,pos=3)
yeinhorn
źródło