web-dev-qa-db-fra.com

Comment ajuster la taille des étiquettes d'axe des y uniquement dans R?

Comment puis-je ajuster uniquement la taille des étiquettes d'axe Y dans R?

Je sais que cex.axis modifie la taille des étiquettes d'axe mais n'affecte que l'axe des x. Pourquoi et comment puis-je ajuster l'axe des y?

39
Jens

ucfagls a raison, à condition que vous utilisiez la commande plot(). Sinon, donnez-nous plus de détails.

Dans tous les cas, vous pouvez contrôler chaque axe séparément à l'aide de la commande axis() et des options xaxt/yaxt de plot(). En utilisant les données de ucfagls, cela devient:

plot(Y ~ X, data=foo,yaxt="n")
axis(2,cex.axis=2)

l'option yaxt = "n" est nécessaire pour éviter que la commande de tracé ne trace l'axe des y sans changer. Pour l'axe des x, cela fonctionne exactement de la même manière:

plot(Y ~ X, data=foo,xaxt="n")
axis(1,cex.axis=2)

Voir aussi les fichiers d’aide? Par et? Axis


Edit: comme pour un barplot, regardez les options cex.axis et cex.names:

tN <- table(sample(letters[1:5],100,replace=T,p=c(0.2,0.1,0.3,0.2,0.2)))

op <- par(mfrow=c(1,2))
barplot(tN, col=Rainbow(5),cex.axis=0.5) # for the Y-axis
barplot(tN, col=Rainbow(5),cex.names=0.5) # for the X-axis
par(op)

alt text

59
Joris Meys

Comme le titre l'indique, nous avons décidé d'ajuster la taille des étiquettes et non les graduations. Je pense que je pourrais ajouter quelque chose à la question. Vous devez utiliser le mtext () si vous souhaitez spécifier l'une des tailles d'étiquettes. ou vous pouvez simplement utiliser par(cex.lab=2) comme alternative simple. Voici un exemple plus avancé de mtext ():

set.seed(123)
foo <- data.frame(X = rnorm(10), Y = rnorm(10))
plot(Y ~ X, data=foo,
     yaxt="n", ylab="", 
     xlab="Regular boring x", 
     pch=16,
     col="darkblue")
axis(2,cex.axis=1.2)
mtext("Awesome Y variable", side=2, line=2.2, cex=2)

enter image description here

Vous devrez peut-être ajuster le line= option pour obtenir le positionnement optimal du texte, mais à part cela, il est vraiment facile à utiliser.

17
Max Gordon

Je ne sais pas ce que vous faites (utile pour montrer ce que vous avez essayé mais cela n'a pas fonctionné), mais votre affirmation selon laquelle cex.axis Affecte uniquement l'axe des abscisses n'est pas vraie:

set.seed(123)
foo <- data.frame(X = rnorm(10), Y = rnorm(10))
plot(Y ~ X, data = foo, cex.axis = 3)

au moins pour moi avec:

> sessionInfo()
R version 2.11.1 Patched (2010-08-17 r52767)
Platform: x86_64-unknown-linux-gnu (64-bit)

locale:
 [1] LC_CTYPE=en_GB.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_GB.UTF-8        LC_COLLATE=en_GB.UTF-8    
 [5] LC_MONETARY=C              LC_MESSAGES=en_GB.UTF-8   
 [7] LC_PAPER=en_GB.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_GB.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
[1] grid      stats     graphics  grDevices utils     datasets  methods  
[8] base     

other attached packages:
[1] ggplot2_0.8.8 proto_0.3-8   reshape_0.8.3 plyr_1.2.1   

loaded via a namespace (and not attached):
[1] digest_0.4.2 tools_2.11.1

En outre, cex.axis Affecte l'étiquetage des graduations. cex.lab Est utilisé pour contrôler ce que R appelle les étiquettes d'axe.

plot(Y ~ X, data = foo, cex.lab = 3)

mais même cela fonctionne pour les axes x et y.


Suite du commentaire de Jens sur l'utilisation de barplot(). Découvrez l'argument cex.names De barplot(), qui vous permet de contrôler les étiquettes:

dat <- rpois (10, 3) noms (dat) <- LETTERS [1:10] barplot (dat, cex.names = 3, cex.axis = 2)

Comme vous mentionnez que cex.axis N'affectait que l'axe des x, je suppose que vous aviez aussi horiz = TRUE Dans votre appel barplot()? Comme les étiquettes de barre ne sont pas dessinées avec un appel axis(), appliquer la réponse de Joris (très utile, autrement) avec des appels individuels axis() ne vous aidera pas dans cette situation, avec barplot()

HTH

8
Gavin Simpson