散点图在许多点重叠时很难解释,因为这种重叠会掩盖特定区域内数据的密度。一种解决方案是使用半透明颜色来绘制数据点,以便不透明区域指示在这些坐标中存在许多观测值。
下面是我在R中提出的黑白解决方案的示例:
为了方便起见,这里是上述文章中图1的一小部分:
下面是我在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")
为了方便起见,这里是上述文章中图1的一小部分:
如何在R中创建散点图,使用颜色而不是透明度作为点密度的指标?
首先,R用户可以在install.packages("fields")
库中使用tim.colors()
函数访问此Matlab颜色方案。
是否有一种简单的方法在R中制作与上述文章中图1类似的图形?谢谢!
layout(matrix(1:2,ncol=2),width=c(75,25))
的东西将绘图设备分成两个绘图区域,将第一部分中的图形放在上方,颜色条形放在第二部分中。对于颜色条形,我可能会首先使用此处 给出的color.bar()
函数,然后删除其中对dev.new()
的调用。 - Josh O'Briencols <- colorRampPalette(c("#000099", "#00FEFF", "#45FE4F","#FCFF00", "#FF9400", "#FF3100"))(256)
里的颜色的?好像colors()中没有任何一种颜色匹配这些。 - rbattdensCols()
所使用的计算方式来确定其返回的颜色,这似乎是由grDevices:::.smoothScatterCalcDensity()
和KernSmooth::bkde2D()
完成的。 - Josh O'Brien