注释轴ggplot2

Annotate the axis ggplo2

我正在尝试在 ggplot 上创建注释(特别是矩形)。这是我想要得到的:

我试过geom_rect,但只能在绘图轴内绘制。 我还尝试使用 this post 提到的 annotate_custom,但是当我尝试使用 xmin = -3(例如)时,它不起作用。

谢谢!

我首先要问的是你想用这个实现什么?这看起来很奇怪,至少在你的例子中是这样。

但是,这是可以做到的。因为你没有提供可重现的例子,所以我有别的东西。这里的目标是关闭面板的剪裁,以便绘制位于其边界之外的元素。

library(ggplot2)
library(grid)

# Create a plot
p <- ggplot(mtcars, aes(wt, mpg)) + geom_point()

在这里,我添加了一个带有 rect 的矩形。但这也会修改 x 轴和 y 轴,因此我们用 coord_cartesian 修复它们。您不能使用 xlim,因为这会删除超出范围的数据点。

g <- p +  annotate('rect', xmin=-1, xmax=3, ymin=10, ymax=30, fill='blue', alpha=1/3) +
  coord_cartesian(xlim=c(1, 4))

# Convert into a graphical object -- a grob
g <- ggplotGrob(g)

# Try printing g

g是一个对象,它把所有的元素都放在一个类似table的结构中。那么现在,我们在g的layout dataframe中找到panel,然后开始裁剪。

i <- which(g$layout$name == 'panel')
g$layout[i,'clip'] <- 'off'

终于画出grob了:

# grid.newpage()
grid.draw(g)