tamaño - Rotación de etiquetas de eje x en R para barra de representación
tamaño de letra en r (7)
Estoy tratando de hacer rotar las etiquetas 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)
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.
Puede usar ggplot2 para rotar la etiqueta del eje x agregando una capa adicional
theme(axis.text.x = element_text(angle = 90, hjust = 1))
Puedes utilizar
par(las=2) # make label text perpendicular to axis
Está escrito aquí: http://www.statmethods.net/graphs/bar.html
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 etiquetas de barra y el texto de trazado de las etiquetas 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)
Si desea rotar las etiquetas 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://.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)
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.
use el parámetro opcional las = 2.
barplot(mytable,main="Car makes",ylab="Freqency",xlab="make",las=2)