重现 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)
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)