Come aumentare la dimensione del carattere in un diagramma in R?


147

Sono confuso. Qual è il modo giusto per aumentare la dimensione del carattere del testo nel titolo, nelle etichette e in altri punti di una trama?

Per esempio

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

L' psargomento non cambia la dimensione del carattere (ma nella Guida R dice ?parche è per "la dimensione in punti del testo (ma non i simboli)".

Inoltre è possibile separare cambiando la dimensione del carattere dalla funzione di stampa come hist?


Risposte:


140

Volete qualcosa come l' cex=1.5argomento per ridimensionare i caratteri del 150 percento. Ma non vedi help(par)come ci sono anche cex.lab, cex.axis, ...


1
Grazie! Qual è la differenza con "ps = 1.5"?
Tim

5
perché cex = 1.5 non funziona? Ma devi specificare per ogni parte in termini di cex.lab, cex.axis, cex.main? A cosa serve cex = 1.5?
Tim

2
Hai letto help(par)su ps? Per quanto ne so, non sembra legato al testo.
Dirk Eddelbuettel,

2
È così, in parte sicuramente per la retrocompatibilità con le precedenti implementazioni del linguaggio S.
Dirk Eddelbuettel,

3
cex è il fattore di ingrandimento. Il valore predefinito è 1. Se è necessario specificare le dimensioni dei caratteri, è meglio essere pronti a scavare nella documentazione a partire da? Dispositivi,? PdfFonts,? Pdf,? EmbedFonts e molti altri.
IRTFM,

124

Quindi, per riassumere la discussione esistente, aggiungendo

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

alla trama, dove 1.5 potrebbe essere 2, 3, ecc. e un valore di 1 è il valore predefinito aumenterà la dimensione del carattere.

x <- rnorm(100)

cex non cambia le cose

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)

inserisci qui la descrizione dell'immagine

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

inserisci qui la descrizione dell'immagine


2
A proposito, se stai provando a modificare l'asse in un grafico a barre (diciamo per il grafico a importanza variabile in randomForest o GBM), devi usare cex.names(se sei un essere umano che legge le cose da una posizione verticale, potresti anche voglio las=2)
geneorama

22

Nota che " cex " cambia le cose quando la trama è fatta con il testo. Ad esempio, la trama di un raggruppamento gerarchico agglomerativo:

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

produrrà una trama con testo di dimensioni normali:

inserisci qui la descrizione dell'immagine

e plot(agn1, which.plots=2, cex=0.5)produrrà questo:

inserisci qui la descrizione dell'immagine


Lavora faces2anche in (dai volti di Chernoff )
Galled

Nel mio esempio ho dovuto applicare il cex non alla trama ma all'oggetto interno direttamente per un effetto: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

Per tentativi ed errori, ho stabilito quanto segue per impostare la dimensione del carattere:

  1. cexnon funziona hist(). Utilizzare cex.axisper i numeri sugli assi, cex.labper le etichette.
  2. cexnon funziona axis()neanche. Utilizzare cex.axisper i numeri sugli assi.
  3. Al posto di impostare le etichette utilizzando hist(), è possibile impostarle utilizzando mtext(). Puoi impostare la dimensione del carattere usando cex, ma usando un valore di 1 in realtà imposta il carattere a 1,5 volte il valore predefinito !!! È necessario utilizzare cex=2/3per ottenere la dimensione del carattere predefinita. Per lo meno, questo è il caso di R 3.0.2 per Mac OS X, utilizzando l'output PDF.
  4. È possibile modificare la dimensione del carattere predefinita per l'output PDF utilizzando pointsizein pdf().

Suppongo che sarebbe troppo logico aspettarsi che R (a) faccia effettivamente ciò che la sua documentazione dice che dovrebbe fare, (b) comportarsi come previsto.


2

Mi sono imbattuto in questo quando volevo ridurre le etichette degli assi, ma lasciare tutto il resto della stessa dimensione. Il comando che ha funzionato per me è stato quello di mettere:

par(cex.axis=0.5)

Prima del comando trama. Ricorda solo di mettere:

par(cex.axis=1.0)

Dopo la trama per assicurarsi che i caratteri tornino alle dimensioni predefinite.


2

Per completezza, ridimensionando il testo del 150% con cex = 1.5, ecco una soluzione completa:

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

Raccomando di avvolgere cose come questa per ridurre la piastra di cottura, ad esempio:

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

che puoi quindi usare in questo modo:

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

La ...sono noti come ellissi in R e vengono usati per passare parametri aggiuntivi per funzioni. Quindi, sono comunemente usati per la stampa. Quindi, il seguente funziona come previsto:

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

1

Nel caso in cui si desideri aumentare il carattere delle etichette dell'istogramma quando si impostano le etichette = 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)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.