Comment afficher toutes les étiquettes x dans barplot R?
C'est une question de base mais je ne trouve pas de réponse. Je génère environ 9 barplots dans un panneau et chaque barplot a environ 12 bars. Je fournis les 12 étiquettes dans mon entrée, mais R ne nomme que des barres alternatives. Cela est évidemment dû à un paramètre par défaut dans R qui doit être modifié, mais je ne le trouve pas.
Vous pourrez peut-être faire apparaître toutes les étiquettes si vous utilisez las=2
Dans l'appel plot()
. Sinon, vous devrez utiliser xaxt="n"
, Puis mettre les étiquettes avec un appel distinct à axis(1, at= ..., labels=...)
.
Une autre méthode consiste à collecter d'abord les points médians, puis à utiliser text () avec xpd et srt 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 dans la zone tracée.
Pour obtenir des étiquettes pivotées sur un barplot de base R, vous pouvez (comme je le fais ici) adapter l'un des exemples donnés dans la vignette du paquet gridBase:
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'étiquetera pas chaque barre si les étiquettes sont trop grandes.
Je 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.
Exemples de données pour le tracé
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 tracé avec des étiquettes trop grandes
barplot(sample_curve) # labels too big for the plot
Exemple de tracé avec des étiquettes tournées et petites
barplot(sample_curve, las=2, cex.names=.5) # lables are rotated and smaller, so they fit