去除 R 图中的边界以实现 Tufte 的轴

机器算法验证 r 数据可视化
2022-01-19 15:09:23

考虑下图:

x <- 1:100
y1 <- rnorm(100)
y2 <- rnorm(100)+100

par(mar=c(5,5,5,5))

plot(x,y1,pch=0,type="b",col="red",yaxt="n",ylim=c(-8,2),ylab="")
axis(side=2, at=c(-2,0,2))
mtext("red line", side = 2, line=2.5, at=0)

par(new=T)
plot(x,y2,pch=1,type="b",col="blue",yaxt="n",ylim=c(98,108), ylab="")
axis(side=4, at=c(98,100,102), labels=c("98%","100%","102%"))
mtext("blue line", side=4, line=2.5, at=100)

如何删除自动生成的边框并仅保留轴线,以实现 Tufte 的风格?

4个回答

添加bty="n"两个绘图命令。

对于时间序列,添加frame.plot=FALSE相同的效果。

对于更高级的 Tufte 轴,请参阅http://www.cl.cam.ac.uk/~sjm217/projects/graphics/

这很简单,您只需包含参数axes=FALSE考虑:

x  <- 1:100
y1 <- rnorm(100)
y2 <- rnorm(100) + 100

windows()
  par(mar=c(5,5,5,5))
  plot(x, y1, pch=0, type="b", col="red", yaxt="n", ylim=c(-8,2), ylab="", axes=F)
  axis(side=2, at=c(-2,0,2))
  mtext("red line", side = 2, line=2.5, at=0)

  par(new=T)
  plot(x, y2, pch=1, type="b", col="blue", yaxt="n", ylim=c(98,108), ylab="", axes=F)
  axis(side=4, at=c(98,100,102), labels=c("98%","100%","102%"))
  mtext("blue line", side=4, line=2.5, at=100)

在此处输入图像描述

请注意,这同样适用于直方图:

windows()
hist(y1, axes=F)

在此处输入图像描述

如果你使用

par(bty = 'n') 

在调用将为动物园修复它的情节之前。它还可以在绘图命令无法传递的各种情况下修复它。

(查看 par() 帮助中的 bty 选项以了解绘图的其他类型的帧)

我正在回答更普遍的问题,即在图中删除边界,而不参考 Tufte。

对于直方图,我没有发现 btn='n' 摆脱了边界。

一个适用于直方图并且应该适用于所有类型图的解决方案是将边框的线型设置为不可见:lty="blank"