Estoy tratando de hacer que las etiquetas del eje x se giren 45 grados en una gráfica de barras sin suerte. Este es el código que tengo a continuación:
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)
beside = TRUE
, probablemente desee usar encolMeans(x)
lugar de solox
si desea solo una etiqueta por grupo.use el parámetro opcional las = 2.
barplot(mytable,main="Car makes",ylab="Freqency",xlab="make",las=2)
fuente
Gire las etiquetas del eje x con un ángulo igual o menor a 90 grados utilizando gráficos base. Código adaptado de las preguntas frecuentes de R :
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" 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)
fuente
Simplemente puede pasar su marco de datos a la siguiente función :
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) }
Uso:
rotate_x(mtcars, 'mpg', row.names(mtcars), 45)
Puede cambiar el ángulo de rotación de las etiquetas según sea necesario.
fuente
Puedes utilizar
par(las=2) # make label text perpendicular to axis
Está escrito aquí: http://www.statmethods.net/graphs/bar.html
fuente
Puede usar ggplot2 para rotar la etiqueta del eje x agregando una capa adicional
theme(axis.text.x = element_text(angle = 90, hjust = 1))
fuente
La respuesta de Andre Silva funciona muy bien para mí, con una advertencia en la línea "barplot":
barplot(mtcars$qsec, col="grey50", main="", ylab="mtcars - qsec", ylim=c(0,5+max(mtcars$qsec)), xlab = "", xaxt = "n", space=1)
Observe el argumento "xaxt". Sin él, las etiquetas se dibujan dos veces, la primera vez sin la rotación de 60 grados.
fuente
En la documentación de Bar Plots podemos leer sobre los parámetros adicionales (
...
) que se pueden pasar a la llamada a la función:... arguments to be passed to/from other methods. For the default method these can include further arguments (such as axes, asp and main) and graphical parameters (see par) which are passed to plot.window(), title() and axis.
En la documentación de parámetros gráficos (documentación de
par
) podemos ver:las numeric in {0,1,2,3}; the style of axis labels. 0: always parallel to the axis [default], 1: always horizontal, 2: always perpendicular to the axis, 3: always vertical. Also supported by mtext. Note that string/character rotation via argument srt to par does not affect the axis labels.
Es por eso que pasar
las=2
es la respuesta correcta.fuente