2015-06-25 4 views
2

Я видел beautiful plot, и я хотел бы его воссоздать. Вот пример, показывающий, что у меня до сих пор:График разброса плотности ядра в R

# 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, и если да, может кто-нибудь объяснить эту функцию или связать меня с хорошим учебником?

Большое спасибо!

P.S. окончательное изображение должно быть серым цветом

ответ

3

Похоже, что вы хотите заполненный контур, а не контур jus. Возможно

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) 
}) 

который дает

enter image description here