小编Hob*_*eep的帖子

如何在ggplot中将剪贴蒙版应用于geom?

我正在尝试将剪贴蒙版应用于ggplot中的geom以遮盖部分数据,但保持轴,网格,其他geom和图例可见.我不想创建一个特定的情节,因此我不是在寻找一个处理阴影的某些部分的多边形.

这是我想要模仿的设计(面具,不一定是主题,我现在该怎么做):

在一些图层上使用中央圆形剪贴蒙版进行映射

(来源)

另请参见此示例

有人可能会争辩说我可以过滤未定义掩码的多边形中包含的数据.但是,虽然它适用于点,并且可以用于多边形/线状对象,但它适用于栅格(边框不会完全遵循非垂直或非水平线).所以我尝试了以下方法:

library(ggplot2)
library(gridSVG)
library(grImport)

# Create a plot
p <- ggplot(diamonds[1:300,], aes(carat, price)) + geom_point(aes(colour = cut))

# And a clipping mask
pg <- polygonGrob(c(.7, 0, 0, 1, 1),
              c(0, .7, 1, 1, 0))
cp <- clipPath(pg)
Run Code Online (Sandbox Code Playgroud)

我能够使用包gridSVG定义剪贴蒙版,但我必须将它ggplot对象上的困难,甚至提取GROB后(见资源在这里)有ggplotGrob().我无法将剪贴蒙版应用于grob:

g <-  ggplotGrob(p) # store the plot as a grob

registerClipPath("mask", cp)
g_clipped <- clipPath(g)

gridsvg(name = "test_c2.svg")
grid.draw(clipPathGrob(g_clipped, cp)$grob)
dev.off()
Run Code Online (Sandbox Code Playgroud)

我的直觉是g_clipped应该绘制,但我不能grid.draw(),因为它是一个clipPath对象.grid.draw() …

r clipping mask ggplot2 grob

9
推荐指数
1
解决办法
600
查看次数

标签 统计

clipping ×1

ggplot2 ×1

grob ×1

mask ×1

r ×1