旋转直方图条的标签 - 显示方式:labels = TRUE

Rotate labels for histogram bars - shown via: labels = TRUE

Here 展示了如何使用 labels = TRUE 用数据值或百分比标记直方图条。是否也可以旋转这些标签?我的目标是将它们旋转 90 度,因为现在条形图上的标签会相互覆盖并且不可读。

PS:请注意,我的目标不是像显示的那样旋转 y 轴标签,例如here

使用 mtcars,这是一个 brute-force 解决方案(虽然不是很粗鲁):

h <- hist(mtcars$mpg)
maxh <- max(h$counts)
strh <- strheight('W')
strw <- strwidth(max(h$counts))
hist(mtcars$mpg, ylim=c(0, maxh + strh + strw))
text(h$mids, strh + h$counts, labels=h$counts, adj=c(0, 0.5), srt=90)

这里的srt=90是关键,旋转90度counter-clockwise(anti-clockwise?).

maxhstrhstrw 用于 (1) 确定将 y-axis 扩展多少,以便文本不被裁剪到可见图,和 (2) 在栏和旋转文本的开头之间提供一个小垫。 (第一个原因可以通过 xpd=TRUE 来缓解,但它 可能 影响主标题,如果您将上边距设置为 0,这将是一个因素。)

注意:如果使用密度而不是频率,则应使用 h$density 而不是 h$counts

编辑:更改adj,我总是忘记它上面的x/y轴无论旋转如何都保持相对于文本。

编辑 #2:将第一次调用更改为 hist,因此字符串 height/width 为 calculate-able。不幸的是,需要绘制两次才能知道实际的 height/width.