r - barplot() 中分组条上的标签
问题描述
我有一个带有分组条的条形图。是否可以为每个 bar包含 al abel ?没有条形标签的绘图示例:
test <- structure(c(0.431031856834624, 0.54498742364355, 0.495317895592119,0.341002949852507, 0.40229990800368, 0.328769657724329,0.258600583090379,0.343181818181818, 0.260619469026549), .Dim = c(3L, 3L), .Dimnames = list(
c("2015", "2016", "2017"), c("a", "b", "c")))
barplot(test,ylim=c(0,1),beside=T)
解决方案
p <- barplot(test, ylim=c(0, 1), beside=T)
text(p, test + .05*sign(test), labels=format(round(test, digits=2), nsmall=2))
最后一行在条形图上添加标签。barplot()
p 获取x 轴条位置的返回值。在本例中,它的格式为 3x3 矩阵。
text()
然后需要 p 作为他的x=
论点。对于他的y=
论点,它需要一个比条形图高度 ( test
) 稍微偏移的值。确定条形sign()
的方向(上方或下方,+1
或),我通过尝试凭经验确定,这取决于您在表格中的值。因此,和是标签的 x 和 y 坐标。最后,确定应该打印哪些文本。和的组合-1
.05
x=
y=
labels=
format()
round()
使您可以完全控制要显示的位数,并且显示的位数绝对是规则的,如果您仅使用round()
.
xpd=T
您可以确定是否允许标签超出区域
。cex=
可以确定标签的字体大小、
col=
颜色和font=
字体。
或者,您可以只test
给出y=
并确定pos=3
它应该在上面以及offset=1
文本的偏移量应该是多少字符宽度。
p <- barplot(test, ylim=c(0, 1), beside=T)
text(x=p, y=test, pos=3, offset=1, labels=format(round(test, digits=2), nsmall=2))
您可以通过查看文档来找到更多说明
?text
# and
?barplot
在 R 控制台中
推荐阅读
- reactjs - 如何在 apollo 客户端中检测订阅(websocket)的断开和重新连接
- c - 验证用户输入
- okhttp - 处理 OkHttp HTTP/2 REFUSED_STREAM 错误
- reactjs - 将后端文件托管到 IIS
- python - 如何在单元测试中从另一个模块捕获自定义异常?
- solr - 使用 SOLRNET 更新 solr 中的字段 - 字段数据更改
- mocha.js - 有没有办法只对选定的数组元素进行断言?
- chromium - 我正在使用 AWS Glue,我正在尝试使用 selenium 和 chrome 驱动器运行脚本。错误消息:“chromedriver”可执行文件需要在 PATH 中
- vue.js - 动态数据分配不适用于 Vue js
- excel - 动态命名范围/公式多久重新计算一次?