在R中为barplot旋转x轴标签

我试图让x轴标签在没有运气的条形图上旋转45度。 这是我有下面的代码:

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) 

编辑回答大卫的回应:

这是一种骇人的方式。 我猜是有一个更简单的方法。 但是,您可以通过从barplot保存bar位置并上下稍微调整来压制bar标签和标签的情节文本。 这是一个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) 

使用可选参数las = 2。

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

在这里输入图像说明

如果要以等于或小于90度的angular度旋转x轴标签,请尝试以下方法:

它使用barplot的参数space=1来使列的宽度等于列的间隔空间。

这样,就有可能根据Tyler Rinker的回答,修改@BenBarnes指出的R FAQ中提供的代码。

 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) 

在这里输入图像说明

你可以使用

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

它写在这里: http : //www.statmethods.net/graphs/bar.html

安德烈·席尔瓦的答案对我来说很好,在“barplot”系列中有一个警告:

 barplot(mtcars$qsec, col="grey50", main="", ylab="mtcars - qsec", ylim=c(0,5+max(mtcars$qsec)), xlab = "", xaxt = "n", space=1) 

注意“xaxt”参数。 没有它,标签被绘制两次,第一次没有60度旋转。