重现 Tufte Moiré 振动

Recreate Tufte Moiré vibration

Tufte 给出了一个很好的坏例子,说明为什么交叉影线会扭曲,微光效果(定量信息的视觉显示,2001 年,第 108 页)看起来类似于:

虽然他的更脆。我如何在 R 中复制它?由于它不被认为是好的做法,因此找出最简单的复制方法被证明具有挑战性。

这是一个使用 abline 的选项:

plot(NA,NA, xlim=c(0,100), ylim=c(0,100))
for(i in seq(-15,600,6)) {
  abline(i, -3, lwd=6)
}

编辑 per Tyler:这是我在 knitr 文档中使用的内容,就像原来的一样烦人。

plot(NA,NA, xlim=c(0,100), ylim=c(0,100), ylab=NA, xlab=NA, yaxt='n', xaxt='n', bty = "n")
for(i in seq(-15,500,6)) {
  abline(i, -3, lwd=4)
}

polygon 救援:

plot(0:1,type="n")
polygon(
  x=c(1,1,2,2),
  y=c(1,0,0,1),
  density=10,
  angle=135,
  lwd=5, 
  border=NA
)

为了完整起见,这里有一个 ggplot2 解决方案,一如既往的挑战是正确获取基础数据...

hatch <- function(xsequence, ysequence, weight = 1) {
  require(ggplot2) 
  df <- data.frame(x = c(rep(0, length(ysequence)),xsequence, xsequence, rep(max(xsequence), length(ysequence))),
                   y = c(ysequence, rep(max(ysequence), length(xsequence)), rep(0, length(xsequence)), ysequence), 
                   group = seq_along(1:(length(xsequence) + length(ysequence))))
  p <- ggplot(df, aes(x, y)) + geom_line(aes(group = group), size = weight)
  print(p + theme(panel.background = element_rect(fill = "transparent"),
                  axis.text = element_blank(),
                  axis.ticks = element_blank(),
                  axis.title = element_blank()))

}
hatch(1:100, 1:40, 1.5)