我正在尝试在ggplot上创建一个注释(特别是一个矩形)。这就是我想得到的:
我尝试了geom_rect
,但只能在情节轴内绘制。
我还试图使用annotate_custom
this post提及{但是当我尝试使用xmin = -3(例如)时,它不起作用。
谢谢!
答案 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)