我正在使用该smoothScatter()函数在R中生成颜色密度散点图.
例:
## A largish data set
n <- 10000
x1 <- matrix(rnorm(n), ncol = 2)
x2 <- matrix(rnorm(n, mean = 3, sd = 1.5), ncol = 2)
x <- rbind(x1, x2)
oldpar <- par(mfrow = c(2, 2))
smoothScatter(x, nrpoints = 0)
Run Code Online (Sandbox Code Playgroud)
输出:

我遇到的问题是我不确定如何添加描述不同色调之间数字术语相对差异的图例/颜色比例.例如,没有办法判断上图中最暗的蓝色是否是最轻的蓝色的2倍,10倍或100倍,没有某种图例或色标.在R中是否有任何方法可以检索必要的信息来制作这样的比例,或者内置的任何内容可以自动生成这种性质的色阶?
这是一个依靠fields::imageplot和一些摆弄的答案,par(mar) 以获得正确的边距
fudgeit <- function(){
xm <- get('xm', envir = parent.frame(1))
ym <- get('ym', envir = parent.frame(1))
z <- get('dens', envir = parent.frame(1))
colramp <- get('colramp', parent.frame(1))
fields::image.plot(xm,ym,z, col = colramp(256), legend.only = T, add =F)
}
par(mar = c(5,4,4,5) + .1)
smoothScatter(x, nrpoints = 0, postPlotHook = fudgeit)
Run Code Online (Sandbox Code Playgroud)

你可以摆弄image.plot来获得你想要的东西,看看?bkde2D和transformation争论,smoothScatter以了解颜色代表什么.