繁体   English   中英

在 R 中为条形图旋转 x 轴标签

[英]Rotating x axis labels in R for barplot

我试图让 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)

在此处输入图片说明

根据大卫的回复编辑答案:

这是一种骇人听闻的方式。 我猜有一个更简单的方法。 但是您可以通过从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)

使用基本图形以等于或小于 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)

在此处输入图片说明

您可以简单地将数据框传递到以下函数中

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)

在此处输入图片说明

您可以根据需要更改标签的旋转角度

您可以使用

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))

在 Bar Plots 的文档中,我们可以了解可以传递给函数调用的附加参数 ( ... ):

...    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是正确的答案。

安德烈席尔瓦的回答对我很有用,在“barplot”行中有一个警告:

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM