Il s'agit d'une question élémentaire mais je ne parviens pas à trouver de réponse. Je génère environ 9 graphiques à barres dans un panneau et chaque graphique à barres comporte environ 12 barres. Je fournis les 12 étiquettes dans mon entrée mais R ne nomme que les barres alternées. Cela est évidemment dû à un paramètre par défaut de R qui doit être modifié, mais je ne parviens pas à le trouver.
Réponses
Trop de publicités?Vous pourrez peut-être faire apparaître toutes les étiquettes si vous utilisez la fonction las=2
à l'intérieur de la plot()
appeler. Cet argument et les autres mentionnés ci-dessous sont décrits dans le document ?par
qui définit les paramètres graphiques pour les dispositifs de traçage. Cela fait pivoter le texte de 90 degrés. Sinon, vous devrez utiliser xaxt="n"
(pour supprimer les tics et les étiquettes) et ensuite mettre les étiquettes avec un appel séparé à axis(1, at= <some numerical vector>, labels=<some character vector>)
.
# midpts <- barplot( ... ) # assign result to named object
axis(1, at = midpts, labels=names(DD), cex.axis=0.7) # shrinks axis labels
Une autre méthode consiste à collecter d'abord les points médians et à utiliser ensuite text()
con xpd
=TRUE pour permettre au texte d'apparaître en dehors de la zone de tracé et srt
être un angle pour la rotation du texte comme arguments nommés pour contrôler le degré de rotation du texte :
text(x=midpts, y=-2, names(DD), cex=0.8, srt=45, xpd=TRUE)
La valeur y doit être choisie en utilisant les coordonnées de la zone tracée.
Copie d'un commentaire utile : Pour les futurs lecteurs qui ne savent pas ce que font ces arguments : las=2 fait tourner les étiquettes de 90 degrés dans le sens inverse des aiguilles d'une montre. De plus, si vous avez besoin de réduire la police, vous pouvez utiliser cex.names=.5 pour réduire la taille de la police.
Pour obtenir des étiquettes tournées sur un graphique à barres R de base, vous pouvez (comme je le fais ici) adapter l'une des fonctions de l'outil exemples donnés dans la vignette du gridBase paquet :
library(grid)
library(gridBase)
## Make some data with names long enough that barplot won't print them all
DD <- table(rpois(100, lambda=5))
names(DD) <- paste("long", names(DD), sep="_")
## Plot, but suppress the labels
midpts <- barplot(DD, col=rainbow(20), names.arg="")
## Use grid to add the labels
vps <- baseViewports()
pushViewport(vps$inner, vps$figure, vps$plot)
grid.text(names(DD),
x = unit(midpts, "native"), y=unit(-1, "lines"),
just="right", rot=50)
popViewport(3)
R n'étiquettera pas chaque barre si les étiquettes sont trop grandes.
Je vous suggère d'essayer de faire pivoter les étiquettes verticalement en passant l'argument las=2 à votre fonction de traçage.
Si les étiquettes sont toujours trop grandes, vous pouvez essayer de réduire la police en utilisant l'argument cex.names=.5.
Exemple de données pour la parcelle
sample_curve <- c(2.31,2.34,2.37,2.52,2.69,2.81,2.83,2.85,2.94, 3.03, 3.21, 3.33) # create a sample curve
names(sample_curve)<-c("1 MO","2 MO","3 MO","6 MO","1 YR","2 YR","3 YR","5 YR","7 YR","10 YR","20 YR","30 YR") # label the curve
Exemple de graphique avec des étiquettes trop grandes
barplot(sample_curve) # labels too big for the plot
Exemple de graphique avec des étiquettes tournées et petites
barplot(sample_curve, las=2, cex.names=.5) # lables are rotated and smaller, so they fit
Avant de tracer le barplot()
Vous pouvez simplement augmenter les marges avec par()
et vos valeurs de marges (votre parcelle a 4 marges) mar = c(v1,v2,v3,V4)
par(mar=c(10,4,4,4))
par exemple :
par(mar=c(10,4,4,4))
barplot(height=c(1,5,8,19,7),
names.arg=c("very long label 1","very long label 2",
"very long label 3","very long label 4",
"very long label 5"), las=2 )