10

我目前正在开展一个项目,该项目涉及创建与 Hadley 的 ggplot2 0.9.0 页面中关于 stat_density2d() 的示例非常相似的图。

library(ggplot2)
dsmall <- diamonds[sample(nrow(diamonds), 1000), ]
d <- ggplot(dsmall, aes(carat, price)) + xlim(1,3)
d + stat_density2d(geom="tile", aes(fill = ..density..), contour = FALSE)
last_plot() + scale_fill_gradient(limits=c(1e-5,8e-4))

在此处输入图像描述

现在,我正在努力解决的问题是一种基本上关闭所有不在填充范围内的图块的 alpha(alpha=0)的方法。所以在图像中看到的每个灰色图块,alpha 值都应该设置为 0。这会使图像更好看,尤其是当覆盖在地图上时。

如果有人有任何建议,将不胜感激。

4

2 回答 2

11

另一种可能性,只是使用ifelse而不是cut.

d + stat_density2d(geom="tile", 
    aes(fill = ..density.., alpha = ifelse(..density.. < 1e-5, 0, 1)), 
    contour = FALSE) + 
scale_alpha_continuous(range = c(0, 1), guide = "none")

在此处输入图像描述

于 2012-04-18T22:38:50.080 回答
10

这似乎有效:

d + stat_density2d(geom="tile", 
     aes(fill = ..density.., 
     alpha=cut(..density..,breaks=c(0,1e-5,Inf))), 
     contour = FALSE)+
 scale_alpha_manual(values=c(0,1),guide="none")

在此处输入图像描述

于 2012-04-18T22:09:43.067 回答