注释轴ggplo2

时间:2017-11-01 18:05:28

标签: r ggplot2 annotate

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

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

谢谢!

1 个答案:

答案 0 :(得分:2)

我首先要问你想要实现的目标是什么?这似乎很奇怪,至少在你的例子中。

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

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是一个将所有元​​素放入类似表格的结构的对象。所以现在,我们在g的布局数据框中找到了面板,并且剪切了。

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

最后绘制grob:

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

enter image description here