使用smoothScatter生成的颜色密度散点图的R图例

时间:2013-01-11 04:16:59

标签: r

我使用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)

输出:

enter image description here

我遇到的问题是我不确定如何添加描述不同色调之间数字术语相对差异的图例/色标。例如,没有办法判断上图中最暗的蓝色是否是最轻的蓝色的2倍,10倍或100倍,没有某种图例或色标。在R中是否有任何方法可以检索必要的信息以制作这样的比例,或者内置的任何可以自动产生这种性质的色阶的信息?

1 个答案:

答案 0 :(得分:9)

以下是一个依赖于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)

enter image description here

你可以摆弄image.plot来获得你想要的东西并查看?bkde2Dtransformation smoothScatter参数来了解颜色代表什么。