当许多点重叠时,散点图可能很难解释,因为这种重叠会掩盖特定区域中数据的密度。一种解决方案是对绘制点使用半透明颜色,以便不透明区域表明这些坐标中存在许多观测值。
下面是我在 R 中的黑白解决方案的示例:
MyGray <- rgb(t(col2rgb("black")), alpha=50, maxColorValue=255)
x1 <- rnorm(n=1E3, sd=2)
x2 <- x1*1.2 + rnorm(n=1E3, sd=2)
dev.new(width=3.5, height=5)
par(mfrow=c(2,1), mar=c(2.5,2.5,0.5,0.5), ps=10, cex=1.15)
plot(x1, x2, ylab="", xlab="", pch=20, col=MyGray)
plot(x1, x2, ylab="", xlab="", pch=20, col="black")
然而,我最近遇到这篇文章发表在《美国国家科学院院刊》上 http://www.pnas.org/content/110/24/9824.full.pdf,它采用了类似的方法,但使用热图着色而不是不透明度作为有多少点重叠的指示器。该文章是开放获取的,因此任何人都可以下载 .pdf 并查看图 1,其中包含我要创建的图表的相关示例。本文的方法部分表明分析是在 Matlab 中完成的。
为了方便起见,这里摘取上述文章中图 1 的一小部分:
如何在 R 中创建一个使用颜色而不是不透明度作为点密度指标的散点图?
对于初学者,R 用户可以在install.packages("fields")
库,使用函数tim.colors()
.
有没有一种简单的方法可以在 R 中制作类似于上述文章图 1 的图形?谢谢!