19

R 的基本图形系统中的几个函数,包括rect()and ,通过它们的和参数polygon()支持交叉影线:angle=density=

x = c(0, 0.5, 1, 0.5)
y = c(0.5, 1, 0.5, 0)
par(mar=c(0,0,0,0))
plot.new()
polygon(x, y, angle=45, density=10)

在此处输入图像描述

我如何将类似的交叉影线应用于网格图形系统grid.polygon()功能绘制的多边形:

library(grid)
grid.newpage()
grid.polygon(x,y)

在此处输入图像描述

我查看了 and 的文档,?grid.polygon?gpar浏览了 Paul Murrel 关于 R 图形的书,但到目前为止都是空的。我错过了一些明显的东西吗?如果没有,是否有一些简单的技巧可以使这成为可能?

4

1 回答 1

22

这是一个改编自Paul Murrell 演示文稿的gridSVG 示例

library(gridSVG)
library(grid)
x = c(0, 0.5, 1, 0.5)
y = c(0.5, 1, 0.5, 0)
grid.newpage()
grid.polygon(x,y, name="goodshape")

pat <- pattern(linesGrob(gp=gpar(col="black",lwd=3)),
  width = unit(5, "mm"), height = unit(5, "mm"),
  dev.width = 1, dev.height = 1)

# Registering pattern
registerPatternFill("pat", pat)
# Applying pattern fill
grid.patternFill("goodshape", label = "pat")

grid.export("test-pattern.svg")

在此处输入图像描述

也允许更复杂的 grobs,因为 svg 负责剪裁。

在此处输入图像描述

于 2014-09-29T23:19:20.667 回答