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?


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...


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


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


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.


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.


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))

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)
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.