2010-09-23 19 views

Répondre

51

ucfagls est juste, fournissant vous utilisez la commande plot(). Sinon, donnez-nous plus de détails.

Dans tous les cas, vous pouvez contrôler chaque axe séparément en utilisant la commande axis() et les xaxt/yaxt options 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é des parcelles de l'axe y sans changer. Pour l'axe des x, cela fonctionne exactement le même:

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

Voir aussi les fichiers d'aide par et axe


Edit:? Comme pour un barplot, regardez les options CEX .axis et cex.noms:

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

+0

Salut, désolé d'être imprécis (encore). En fait, je cours un barplot avec l'axe X numérique, mais avec des chaînes pour les étiquettes d'axe y. Je suppose que le cex.axis dans barplot ne peut pas gérer le texte puisque dans l'aide pour le par il dit "cex.axis = facteur d'expansion pour les étiquettes d'axe numérique." Je suppose que je dois utiliser votre approche avec la commande d'axe supplémentaire pour modifier mon axe y. Merci beaucoup – Jens

+0

@Jens; Si vous utilisez 'barplot()', les appels distincts 'axis()' ne fonctionneront pas car les étiquettes de la barre ne sont pas un "axe". Pour utiliser 'axis()', vous devez avoir au milieu les points de la barre (ceux-ci sont retournés par 'barplot()'). L'utilisation d'un appel 'text()' avec l'écrêtage désactivé peut également être un moyen de faire un "axe" personnalisé pour un barplot. –

+0

@ucfagls Sur mon système, cela fonctionne réellement pour l'axe Y. Pour l'axe X, il donne un mauvais résultat. J'ai adapté ma réponse pour le barplot. –

7

Je ne sais pas ce que vous faites (utile pour montrer ce que vous avez essayé qui ne fonctionne pas), mais votre affirmation selon laquelle cex.axis affecte uniquement l'axe x est pas vrai:

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 

, cex.axis affecte également l'étiquetage des marques de tiques. cex.lab est utilisé pour contrôler ce que R appellent les étiquettes d'axe.

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

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


Après le commentaire de Jens sur l'utilisation de barplot(). Consultez l'argument cex.names-barplot(), ce qui vous permet de contrôler les étiquettes de la barre:

dat < - rpois (10, 3) noms (dat) < - LETTRES [01:10] barplot (dat, CEX. noms = 3, cex.axis = 2)

comme vous le mentionnez que cex.axis était seulement ayant une incidence sur l'axe des x Je présume que vous aviez dans votre horiz = TRUEbarplot() appel aussi bien? Comme les étiquettes de la barre ne sont pas dessinés avec un appel axis(), l'application de Joris (par ailleurs très utile) réponse à des appels individuels axis() ne sera pas utile dans cette situation avec vous utilisez barplot()

HTH

13

Comme le suggère le titre que nous voulons régler la taille des étiquettes et non pas les marques de tiques je me suis dit que je pourrais effectivement ajouter quelque chose à la question, vous devez utiliser la mtext() si vous voulez 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é 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 régler l'option line= pour obtenir le positionnement optimal du texte, mais à part ça, il est vraiment facile à utiliser.