it-swarm.com.de

Wie kann man die Schriftgröße in einem Plot in R erhöhen?

Ich bin verwirrt. Was ist der richtige Weg, um die Schriftgröße des Texts im Titel, in den Beschriftungen und an anderen Stellen eines Diagramms zu erhöhen? 

Zum Beispiel

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

Das Argument ps ändert die Schriftgröße nicht (in der R-Hilfe für ?par wird jedoch angegeben, dass es sich um "Punktgröße für Text (aber keine Symbole)" handelt).

Ist es auch möglich, die Schriftgröße von der Plot-Funktion zu ändern, z. B. hist?

124
Tim

Etwas wie das cex=1.5-Argument soll Schriftarten um 150 Prozent skalieren. Sehen Sie aber help(par), da es auch cex.lab, cex.axis, ... gibt.

126

Um also die bestehende Diskussion zusammenzufassen, fügen Sie hinzu

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

auf Ihrem Plot, wo 1,5 2, 3 usw. sein könnte und der Wert 1 der Standardwert ist, wird die Schriftgröße erhöht.

x <- rnorm(100)

cex ändert nichts

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)

enter image description here

Addiere cex.lab = 1,5, cex.axis = 1,5, cex.main = 1,5, cex = 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)

enter image description here

110
Jeromy Anglim

Beachten Sie, dass sich "cex" ändert, wenn der Plot aus Text besteht. Zum Beispiel die grafische Darstellung eines agglomerativen hierarchischen Clusters:

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

erzeugt ein Diagramm mit normalem Text:

enter image description here

und plot(agn1, which.plots=2, cex=0.5) wird dieses produzieren:

enter image description here

21
OskrSaSi

Durch Ausprobieren habe ich Folgendes festgelegt, um die Schriftgröße festzulegen:

  1. cex funktioniert nicht in hist(). Verwenden Sie cex.axis für die Zahlen auf den Achsen, cex.lab für die Etiketten.
  2. cex funktioniert auch nicht in axis(). Verwenden Sie cex.axis für die Zahlen auf den Achsen.
  3. Anstatt Etiketten mit hist() zu setzen, können Sie sie mit mtext() einstellen. Sie können die Schriftgröße mit cex einstellen, aber mit einem Wert von 1 wird die Schriftart tatsächlich auf das 1,5-fache des Standardwerts gesetzt !!! Sie müssen cex=2/3 verwenden, um die Standardschriftgröße zu erhalten. Zumindest ist dies unter R 3.0.2 für Mac OS X der Fall, wenn die Ausgabe von PDF verwendet wird.
  4. Sie können die Standardschriftgröße für die Ausgabe von PDF mithilfe von pointsize in pdf() ändern.

Ich nehme an, es wäre viel zu logisch zu erwarten, dass R (a) tatsächlich das tut, was in seiner Dokumentation angegeben ist, (b) sich erwartungsgemäß verhält.

19
Urban Vagabond

Ich bin darauf gestoßen, als ich die Achsenbeschriftungen kleiner machen wollte, aber alles andere gleich belassen sollte. Der Befehl, der für mich funktionierte, lautete:

par(cex.axis=0.5)

Vor dem Plotbefehl. Denken Sie daran:

par(cex.axis=1.0)

Stellen Sie nach der Darstellung sicher, dass die Schriftarten auf die Standardgröße zurückgesetzt werden. 

2
Odysseus Ithaca

Der Vollständigkeit halber wird der Text mit cex = 1.5 um 150% skaliert. Hier ist eine vollständige Lösung:

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

Ich empfehle, solche Dinge einzuwickeln, um die Heizplatte zu reduzieren, z. B .:

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

die kannst du dann so benutzen:

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

Die ... werden in R als Ellipsen bezeichnet und dienen dazu, zusätzliche Parameter an Funktionen zu übergeben. Daher werden sie üblicherweise zum Plotten verwendet. So funktioniert folgendes wie erwartet:

plot_cex(x=1:5, y=rnorm(5), cex=1.5, ylim=c(-0.5,0.5))
1
Adam Erickson

Wenn Sie die Schrift der Beschriftungen des Histogramms erhöhen möchten, wenn Sie Beschriftungen auf TRUE setzen

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