r - 如何在牛图顶部添加文本栏?
问题描述
我有几个使用ggplot中的cowplot函数制作的图。我想添加一个“标题”,即牛图顶部的盒装文本。它们应该是五个盒子,每个盒子的长度都遵循一个精确的时间范围,仅在底部图 x 轴中显示。
我尝试在牛图上使用注释,但我什么也看不到。我已经尝试为每个注释使用随机坐标,只是为了尝试。比,我不知道如何框文本。
解决方案
您不需要使用cowplot
. 您可以tableGrob
使用该包进行 a grid
,然后将其与另一个图通过cowplot::ggdraw()
. 但这是不必要的。
ggplot
自己自定义这样的注释然后在最后组合所有内容要容易得多。
首先,我们为标题横幅制作一个数据框:
library(ggplot2)
rects <- data.frame(x=c(0,2,4), xmax=c(2,4,5), y=c(42, 42, 42), z=c("Flowering", "Fruiting", "Ripening"))
然后我们可以注释一些情节。请注意,我正在设置 x 和 y 轴的限制以匹配rects
数据框(或相反)。
ggplot(iris, aes(x=Sepal.Width)) +
geom_histogram(color="white") +
scale_x_continuous(limits=c(0, 5)) +
scale_y_continuous(limits=c(0, 50)) +
# add tiles
geom_rect(data=rects, aes(xmin=x, ymin=40, ymax=45, xmax=xmax, fill=z), inherit.aes = FALSE) +
# add labels
geom_text(data=rects, aes(x=x, y=y, label=z), hjust=0, inherit.aes = FALSE)
应该得到这样的东西:
从这里可以轻松更改此横幅,将不同的颜色映射到填充美学等等。最后,您将这个预先注释的图与cowplot
.
推荐阅读
- python - 不存在属性
- sql - SQL sum 聚合函数的问题
- javascript - 通过对象布尔属性的嵌套数组过滤对象数组
- django - django中的自定义用户模型和表格
- paypal - 为什么 PayPal IPN 可以在模拟器上工作,但不能在沙盒上工作?
- javascript - 如何在 Photoshop 中基于 Javascript 选择子图层?
- java - 如何使用 Bouncy Castle 从 pkcs7 附加签名中获取签名内容
- javascript - 合并对象中的多个数组
- c - 使用 Joshua Davies 的“使用密码学和 PKI 实现 SSL/TLS”一书实现 TLS 服务器/客户端
- rust - 如何修复 macOS 上的“无法加载代码生成后端”错误?