如何在Cowplot的顶部添加文本栏?

时间:2019-09-07 11:47:33

标签: r ggplot2 annotate cowplot

我在ggplot中使用cowplot函数制作了几个绘图的卡住的绘图。 我想在Cowplot顶部添加一个“标题”,即一个带方框的文本。 它们应该是五个方框,每个方框的长度都遵循一个精确的时间范围,该时间范围仅显示在底部x轴上。

我尝试在牛图上添加注释,但什么也看不到。 我尝试为每个注释使用随机坐标,只是为了尝试。 比,我不知道该如何在文本框中加上文字。

我分享了两张照片: 1)我的一张没有“标题”的绘图 enter image description here 2)一个示例情节的图片,类似于我希望的情节 enter image description here

1 个答案:

答案 0 :(得分:1)

您不需要在cowplot中添加此“标题面板”。您可以使用包tableGrob制作一个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)

应该得到这样的东西:

enter image description here

从这里可以轻松更改此横幅,将不同的颜色映射到填充的美学效果,等等。最后,您将此预注释的图与cowplot中的其余图合并。