首页 > 解决方案 > 如何在牛图顶部添加文本栏?

问题描述

我有几个使用ggplot中的cowplot函数制作的图。我想添加一个“标题”,即牛图顶部的盒装文本。它们应该是五个盒子,每个盒子的长度都遵循一个精确的时间范围,仅在底部图 x 轴中显示。

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

我分享了两张照片:1)我的一张没有“标题”的cowplot 在此处输入图像描述 2)一个示例情节的图片,类似于我希望的情节 在此处输入图像描述

标签: rggplot2annotatecowplot

解决方案


您不需要使用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.


推荐阅读