web-dev-qa-db-fra.com

Comment augmenter la taille de police dans un tracé en R?

Je suis confus. Quelle est la bonne façon d’augmenter la taille de la police du texte dans le titre, les étiquettes et d’autres endroits d’un tracé? 

Par exemple

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

L'argument ps ne modifie pas la taille de la police (mais il est indiqué dans l'aide de R pour ?par qu'il correspond à "la taille en points du texte (mais pas des symboles)".

Est-il également possible de séparer le changement de la taille de la police de la fonction de traçage telle que hist?

124
Tim

Vous voulez quelque chose comme l'argument cex=1.5 pour mettre les polices à l'échelle à 150%. Mais voyez help(par) car il y a aussi cex.lab, cex.axis, ...

126
Dirk Eddelbuettel

Ainsi, pour résumer la discussion existante, en ajoutant

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

à votre tracé, où 1,5 pourrait être 2, 3, etc. et une valeur de 1 par défaut augmentera la taille de la police.

x <- rnorm(100)

cex ne change pas les choses

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

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

enter image description here

110
Jeromy Anglim

Notez que "cex" change les choses lorsque le tracé est créé avec du texte. Par exemple, le tracé d’une classification hiérarchique agglomérative:

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

produira un tracé avec du texte de taille normale:

enter image description here

et plot(agn1, which.plots=2, cex=0.5) produira celui-ci:

enter image description here

21
OskrSaSi

Par essais et erreurs, j'ai déterminé ce qui suit pour définir la taille de la police:

  1. cex ne fonctionne pas dans hist(). Utilisez cex.axis pour les nombres sur les axes, cex.lab pour les étiquettes.
  2. cex ne fonctionne pas non plus dans axis(). Utilisez cex.axis pour les nombres sur les axes.
  3. Au lieu de définir des étiquettes avec hist(), vous pouvez les définir avec mtext(). Vous pouvez définir la taille de la police en utilisant cex, mais en utilisant une valeur de 1 définit la police à 1,5 fois la valeur par défaut !!! Vous devez utiliser cex=2/3 pour obtenir la taille de police par défaut. À tout le moins, c'est le cas sous R 3.0.2 pour Mac OS X, en utilisant la sortie PDF.
  4. Vous pouvez modifier la taille de police par défaut pour la sortie PDF à l'aide de pointsize dans pdf().

Je suppose qu'il serait beaucoup trop logique de s'attendre à ce que R (a) fasse ce que sa documentation indique qu'il devrait faire, (b) se comporte comme prévu.

19
Urban Vagabond

Je me suis rendu compte de cela quand je voulais réduire les étiquettes d'axe, mais que tout le reste avait la même taille. La commande qui a fonctionné pour moi était de mettre:

par(cex.axis=0.5)

Avant la commande de l'intrigue. Rappelez-vous juste de mettre:

par(cex.axis=1.0)

Après le tracé, assurez-vous que les polices reviennent à la taille par défaut. 

2
Odysseus Ithaca

Pour être complet, si vous réduisez le texte à 150% avec cex = 1.5, voici une solution complète:

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

Je recommande d’emballer des objets comme celui-ci pour réduire le nombre de points chauds, par exemple:

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 vous pouvez ensuite utiliser comme ceci:

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

Les ... sont appelés ellipses dans R et servent à transmettre des paramètres supplémentaires aux fonctions. Par conséquent, ils sont couramment utilisés pour le traçage. Donc, les travaux suivants fonctionnent comme prévu:

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

Si vous souhaitez augmenter la police des libellés de l'histogramme lors de la définition des libellés = VRAI

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