geom_raster()正常分布

时间:2017-03-31 00:28:56

标签: r ggplot2

我一直在努力了解geom_raster()。作为一个简单的例子,我想将像正态分布这样的东西可视化为栅格。我使用了以下代码。

v1 <- rnorm(n=50)
v2 <- rnorm(n=50)
v3 <- rnorm(n=50)
vs <- tibble(v1,v2,v3)
ggplot(vs, aes(v1, v2)) +
 geom_raster(aes(fill = v3))

我最终得到了以下内容:

enter image description here

我被期待类似下面的图像

enter image description here

1 个答案:

答案 0 :(得分:4)

geom_raster适用于每个矩形都有一个值的情况。我认为您正在寻找类似geom_bin2d的内容,但您需要更多数据,并且您可能无法获得远离模式的区域的任何数据:

ggplot(data.frame(v1 = rnorm(10000), 
                  v2 = rnorm(10000)), 
       aes(x = v1, y = v2)) + 
    geom_bin2d()

如果角落的锐度令人困扰,那么geom_hex是一个不错的选择,可以使孤立的点看起来像素化更少,更像点。 geom_density_2d是添加轮廓线的常见伴奏。

要使用geom_raster,您需要更像

的内容
df <- expand.grid(v1 = seq(-2, 2, .1), v2 = seq(-2, 2, .1))
df$v3 <- dnorm(df$v1) * dnorm(df$v2) 

ggplot(df, aes(v1, v2, fill = v3)) + geom_raster()

geom_contour可用作显示轮廓线的伴奏。它需要z美学而不是fill,但其他方式与geom_raster类似。