R для цветного рассеивателя плотности, созданного с использованием smoothScatter
Я создаю диаграмму рассеяния плотности цвета в R, используя функцию smoothScatter()
.
Пример:
## 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
Вот ответ, который полагается на 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, чтобы получить то, что хотите, и посмотреть ?bkde2D
и аргумент transformation
на smoothScatter
, чтобы получить представление о том, что представляют собой цвета.