Rotación de tags de eje x en R para barra de representación

Estoy tratando de hacer rotar las tags del eje x 45 grados en una barra 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) 

RESPUESTA EDITADA POR LA RESPUESTA DE DAVID:

Aquí hay una especie de camino de hackeo. Supongo que hay una manera más fácil. Pero puede suprimir las tags de barra y el texto de trazado de las tags guardando las posiciones de barra de barplot y hacer un pequeño ajuste hacia arriba y hacia abajo. Aquí hay un ejemplo con el conjunto de datos 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) 

use el parámetro opcional las = 2.

 barplot(mytable,main="Car makes",ylab="Freqency",xlab="make",las=2) 

enter image description here

Si desea rotar las tags del eje x con un ángulo igual o inferior a 90, pruebe el siguiente enfoque:

Utiliza el argumento de barra de barras space=1 para hacer que el ancho de las columnas sea igual al espacio de intervalo de las columnas.

De esta forma, fue posible adaptar el código provisto en las preguntas frecuentes de R que @BenBarnes identificó con la respuesta 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) 

enter image description here

Puedes utilizar

 par(las=2) # make label text perpendicular to axis 

Está escrito aquí: http://www.statmethods.net/graphs/bar.html

Simplemente puede pasar su dataframe 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) 

enter image description here

Puede cambiar el ángulo de rotación de las tags según sea necesario.

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 tags se dibujan dos veces, la primera vez sin la rotación de 60 grados.

Puede usar ggplot2 para rotar la etiqueta del eje x agregando una capa adicional

 theme(axis.text.x = element_text(angle = 90, hjust = 1)) 
Intereting Posts