¿Cómo aumentar el tamaño de fuente en un diagrama en R?


147

Estoy confundido. ¿Cuál es la forma correcta de aumentar el tamaño de fuente del texto en el título, las etiquetas y otros lugares de una trama?

Por ejemplo

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

El psargumento no cambia el tamaño de la fuente (pero en la Ayuda de R dice ?parque es para "el tamaño en puntos del texto (pero no los símbolos)".

Además, ¿es posible separar el cambio del tamaño de fuente de la función de trazado como hist?


Respuestas:


140

Desea algo como el cex=1.5argumento para escalar las fuentes en un 150 por ciento. Pero ver help(par)ya que también hay cex.lab, cex.axis...


1
¡Gracias! ¿Cuál es la diferencia con "ps = 1.5"?
Tim

55
¿Por qué cex = 1.5 no funciona? ¿Pero tiene que especificar para cada parte en términos de cex.lab, cex.axis, cex.main? ¿Para qué sirve cex = 1.5?
Tim

2
¿Leíste help(par)sobre ps? No parece estar relacionado con el texto por lo que puedo decir.
Dirk Eddelbuettel

2
Así es, en parte seguramente para la compatibilidad con versiones anteriores de implementaciones del lenguaje S.
Dirk Eddelbuettel

3
cex es el factor de aumento. El valor predeterminado es 1. Si necesita especificar tamaños de fuente, es mejor que esté preparado para profundizar en la documentación comenzando con "Dispositivos", "pdfFonts", "pdf", "embedFonts" y muchos otros.
IRTFM el

124

Por lo tanto, para resumir la discusión existente, agregue

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

a su trama, donde 1.5 podría ser 2, 3, etc. y un valor de 1 es el predeterminado, aumentará el tamaño de la fuente.

x <- rnorm(100)

cex no cambia las cosas

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)

ingrese la descripción de la imagen aquí

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

ingrese la descripción de la imagen aquí


2
Por cierto, si está tratando de modificar el eje en un gráfico de barras (por ejemplo, para el gráfico de importancia variable en randomForest o GBM), debe usar cex.names(si es un humano que lee cosas desde una posición vertical, también podría querer las=2)
geneorama

22

Tenga en cuenta que " cex " cambia las cosas cuando la trama se realiza con texto. Por ejemplo, la trama de una agrupación jerárquica aglomerativa:

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

producirá una trama con texto de tamaño normal:

ingrese la descripción de la imagen aquí

y plot(agn1, which.plots=2, cex=0.5)producirá este:

ingrese la descripción de la imagen aquí


Trabajar faces2también en (desde caras de Chernoff )
Galled

En mi ejemplo, tuve que aplicar cex no para trazar sino el objeto interno directamente para un efecto: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

Por prueba y error, he determinado que se requiere lo siguiente para establecer el tamaño de fuente:

  1. cexno funciona en hist(). Use cex.axispara los números en los ejes, cex.labpara las etiquetas.
  2. cexno funciona en axis()cualquiera de los dos. Use cex.axispara los números en los ejes.
  3. En lugar de configurar las etiquetas usando hist(), puede configurarlas usando mtext(). ¡Puede establecer el tamaño de fuente usando cex, pero usar un valor de 1 realmente establece la fuente en 1.5 veces la predeterminada! Debe usar cex=2/3para obtener el tamaño de fuente predeterminado. Como mínimo, este es el caso en R 3.0.2 para Mac OS X, con salida PDF.
  4. Puede cambiar el tamaño de fuente predeterminado para la salida PDF utilizando pointsizein pdf().

Supongo que sería demasiado lógico esperar que R (a) realmente haga lo que su documentación dice que debería hacer, (b) se comporte de la manera esperada.


2

Me encontré con esto cuando quería hacer las etiquetas de los ejes más pequeñas, pero dejar todo lo demás del mismo tamaño. El comando que funcionó para mí fue poner:

par(cex.axis=0.5)

Antes del comando de la trama. Solo recuerda poner:

par(cex.axis=1.0)

Después del diagrama para asegurarse de que las fuentes vuelvan al tamaño predeterminado.


2

Para completar, escalando el texto en un 150% con cex = 1.5, aquí hay una solución 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)

Recomiendo envolver cosas como esta para reducir el repetitivo, por ejemplo:

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

que luego puedes usar así:

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

Se ...conocen como elipses en R y se utilizan para pasar parámetros adicionales a las funciones. Por lo tanto, se usan comúnmente para trazar. Entonces, lo siguiente funciona como se esperaba:

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

1

En caso de que desee aumentar la fuente de las etiquetas del histograma al establecer etiquetas = VERDADERO

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)
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.