J'essaie d'obtenir une rotation de 45 degrés des étiquettes de l'axe des abscisses sur un diagramme en barres sans succès. C'est le code que j'ai ci-dessous:
barplot(((data1[,1] - average)/average) * 100,
srt = 45,
adj = 1,
xpd = TRUE,
names.arg = data1[,2],
col = c("#3CA0D0"),
main = "Best Lift Time to Vertical Drop Ratios of North American Resorts",
ylab = "Normalized Difference",
yaxt = 'n',
cex.names = 0.65,
cex.lab = 0.65)
RÉPONSE MODIFIÉE SELON LA RÉPONSE DE DAVID:
Voici une sorte de façon bidon. Je devine qu'il y a un moyen plus facile. Mais vous pouvez supprimer les étiquettes de barre et le texte de tracé des étiquettes en enregistrant les positions de barre de barplot
et faire un petit ajustement de haut en bas. Voici un exemple avec le jeu de données mtcars:
x <- barplot(table(mtcars$cyl), xaxt="n")
labs <- paste(names(table(mtcars$cyl)), "cylinders")
text(cex=1, x=x-.25, y=-1.25, labs, xpd=TRUE, srt=45)
utilisez le paramètre optionnel las = 2.
barplot(mytable,main="Car makes",ylab="Freqency",xlab="make",las=2)
Si vous souhaitez faire pivoter les étiquettes de l'axe x avec un angle égal ou inférieur à 90, essayez l'approche suivante:
Il utilise l'argument du barplot space=1
pour rendre la largeur des colonnes égale à l'espace d'intervalle des colonnes.
De cette façon, il était possible d'adapter le code fourni dans le R FAQ qui avait été identifié par @BenBarnes dans la réponse de Tyler Rinker.
par(mar = c(7, 4, 2, 2) + 0.2) #add room for the rotated labels
#use mtcars dataset to produce a barplot with qsec colum information
mtcars = mtcars[with(mtcars, order(-qsec)), ] #order mtcars data set by column "qsec" (source: http://stackoverflow.com/questions/1296646/how-to-sort-a-dataframe-by-columns-in-r)
end_point = 0.5 + nrow(mtcars) + nrow(mtcars)-1 #this is the line which does the trick (together with barplot "space = 1" parameter)
barplot(mtcars$qsec, col="grey50",
main="",
ylab="mtcars - qsec", ylim=c(0,5+max(mtcars$qsec)),
xlab = "",
space=1)
#rotate 60 degrees, srt=60
text(seq(1.5,end_point,by=2), par("usr")[3]-0.25,
srt = 60, adj= 1, xpd = TRUE,
labels = paste(rownames(mtcars)), cex=0.65)
Vous pouvez utiliser
par(las=2) # make label text perpendicular to axis
Il est écrit ici: http://www.statmethods.net/graphs/bar.html
Vous pouvez simplement passer votre trame de données dans la fonction suivante :
rotate_x <- function(data, column_to_plot, labels_vec, rot_angle) {
plt <- barplot(data[[column_to_plot]], col='steelblue', xaxt="n")
text(plt, par("usr")[3], labels = labels_vec, srt = rot_angle, adj = c(1.1,1.1), xpd = TRUE, cex=0.6)
}
Utilisation:
rotate_x(mtcars, 'mpg', row.names(mtcars), 45)
Vous pouvez modifier l’angle de rotation des étiquettes selon vos besoins.
Vous pouvez utiliser ggplot2 pour faire pivoter l’étiquette de l’axe des x en ajoutant un calque supplémentaire.
theme(axis.text.x = element_text(angle = 90, hjust = 1))
La réponse d’André Silva me convient parfaitement, avec une mise en garde dans la ligne "barplot":
barplot(mtcars$qsec, col="grey50",
main="",
ylab="mtcars - qsec", ylim=c(0,5+max(mtcars$qsec)),
xlab = "",
xaxt = "n",
space=1)
Notez l'argument "xaxt". Sans cela, les étiquettes sont tracées deux fois, la première fois sans rotation à 60 degrés.