我试图让 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)
使用可选参数 las=2 。
barplot(mytable,main="Car makes",ylab="Freqency",xlab="make",las=2)
https://i.stack.imgur.com/6IUTS.jpg
根据大卫的回应编辑答案:
这是一种骇人听闻的方式。我猜有一个更简单的方法。但是您可以通过保存 barplot
中的条形位置来抑制条形标签和标签的绘图文本,并进行一些上下调整。这是 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)
beside = TRUE
,如果您希望每个组只有一个标签,则可能需要使用 colMeans(x)
而不是仅使用 x
。
使用基本图形以等于或小于 90 度的角度旋转 x 轴标签。改编自 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"
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)
https://i.stack.imgur.com/AJLFk.jpg
text()
有什么用? axis()
不起作用?
您可以简单地将数据框传递给以下函数:
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)
}
用法:
rotate_x(mtcars, 'mpg', row.names(mtcars), 45)
https://i.stack.imgur.com/XFPYR.png
您可以根据需要更改标签的旋转角度。
您可以使用
par(las=2) # make label text perpendicular to axis
它写在这里:http://www.statmethods.net/graphs/bar.html
您可以使用 ggplot2 旋转 x 轴标签添加一个附加层
theme(axis.text.x = element_text(angle = 90, hjust = 1))
在条形图的文档中,我们可以了解可以传递给函数调用的附加参数 (...
):
... 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.
在图形参数的文档(par
的文档)中我们可以看到:
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.
这就是为什么通过 las=2
会使标签垂直,尽管不是 45°。
安德烈席尔瓦的回答对我很有用,在“条形图”行中有一个警告:
barplot(mtcars$qsec, col="grey50",
main="",
ylab="mtcars - qsec", ylim=c(0,5+max(mtcars$qsec)),
xlab = "",
xaxt = "n",
space=1)
注意“xaxt”参数。没有它,标签会被绘制两次,第一次没有 60 度旋转。