R中的核密度散点图

Kernel density scatter plot in R

我看到了一个 beautiful plot,我想重新创建它。下面是一个示例,展示了我到目前为止所获得的内容:

# kernel density scatterplot
library(RColorBrewer)
library(MASS)
greyscale <- rev(brewer.pal(4, "Greys"))
x <- rnorm(20000, mean=5, sd=4.5); x <- x[x>0]
y <- x + rnorm(length(x), mean=.2, sd=.4)
z <- kde2d(x, y, n=100)
plot(x, y, pch=".", col="hotpink")
contour(z, drawlabels=FALSE, nlevels=4, col=greyscale, add=T)
abline(c(0,1), lty=1, lwd=2)
abline(lm(y~x), lty=2, lwd=2)

我正在努力用颜色填充轮廓。这是 smoothScatter 或其他包裹的工作吗?我怀疑这可能取决于我对 kde2d 的使用,如果是这样,有人可以解释一下这个功能或者 link 给我一个好的教程吗?

非常感谢!

P.S。最终图像应该是灰度

您似乎想要填充轮廓而不只是轮廓。也许

library(RColorBrewer)
library(MASS)
greyscale <-brewer.pal(5, "Greys")
x <- rnorm(20000, mean=5, sd=4.5); x <- x[x>0]
y <- x + rnorm(length(x), mean=.2, sd=.4)
z <- kde2d(x, y, n=100)

filled.contour(z, nlevels=4, col=greyscale, plot.axes = {
    axis(1); axis(2)
    #points(x, y, pch=".", col="hotpink")   
    abline(c(0,1), lty=1, lwd=2)
    abline(lm(y~x), lty=2, lwd=2)
})

这给出了