8

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

输出:

在此处输入图像描述

我遇到的问题是我不确定如何添加一个图例/色标来描述不同阴影之间数字术语的相对差异。例如,如果没有某种图例或色标,就无法判断上图中最深的蓝色是否是最浅蓝色的 2 倍、10 倍或 100 倍。R中是否有任何方法可以检索必要的信息来制作这样的比例,或者任何内置的东西可以自动产生这种性质的颜色比例?

4

1 回答 1

10

这是一个依赖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)

在此处输入图像描述

你可以摆弄 image.plot 来得到你想要的东西,看看?bkde2Dtransformation论据来smoothScatter了解颜色代表什么。

于 2013-01-11T06:11:23.987 回答