Specifying the scale for the density in ggplot2's stat_density2d

前端 未结 2 1133
暖寄归人
暖寄归人 2020-12-15 12:18

I\'m looking to create multiple density graphs, to make an \"animated heat map.\"

Since each frame of the animation should be comparable, I\'d like the density -> co

2条回答
  •  独厮守ぢ
    2020-12-15 13:14

    I would like to leave an update for this question. As of July 2016, stat_density2d is not taking breaks any more. In order to reproduce the graphic, you need to move breaks=1e-6*seq(0,10,by=2) to scale_alpha_continuous().

    set.seed(4)
    g = list(NA,NA)
    for (i in 1:2) {
        sdev = runif(1)
        X = rnorm(1000, mean = 512, sd= 300*sdev)
        Y = rnorm(1000, mean = 384, sd= 200*sdev)
        this_df = as.data.frame( cbind(X = X,Y = Y, condition = 1:2) )
    
    g[[i]] = ggplot(data= this_df, aes(x=X, y=Y) ) +
             geom_point(aes(color= as.factor(condition)), alpha= .25) +
             coord_cartesian(ylim= c(0, 768), xlim= c(0,1024)) +
             scale_y_reverse() +
             stat_density2d(mapping= aes(alpha = ..level.., color= as.factor(condition)),
             geom="contour", bins=4, size= 2) +
             scale_alpha_continuous(limits=c(0,1e-5), breaks=1e-6*seq(0,10,by=2))+
             scale_color_discrete("Condition")
        }
    
    do.call(grid.arrange,c(g,ncol=2))
    

提交回复
热议问题