ggplot stat_density2d无法绘制带有瓷砖几何图形的轮廓

时间:2018-12-03 00:00:29

标签: r ggplot2

将轮廓与stat_density2d一起使用会出现错误:

ggplot(faithful, aes(x = eruptions, y = waiting, fill = ..density..)) + 
  stat_density2d(geom = "tile")
  

不知道如何为类型的对象自动选择比例   功能。默认为连续。 is.finite(x)中的错误:默认   类型“ closure”未实现方法

使用contour = F绘图而无错误。有什么问题

1 个答案:

答案 0 :(得分:2)

在ggplot中,几何图形和统计数据必须在添加到该图形的每个图层中配对,因此,如果您既想要栅格/平铺图又需要轮廓线,则需要进行两次调用:

library(ggplot2)

ggplot(faithful, aes(x = eruptions, y = waiting)) + 
    stat_density2d(aes(fill = ..density..), geom = "raster", contour = FALSE) + 
    stat_density2d()

如果您要瞄准填充轮廓,那么不扩展ggplot真的很难。幸运的是,这已经在metR包中完成了:

ggplot(faithfuld, aes(eruptions, waiting, z = density)) + 
    metR::geom_contour_fill()

请注意,我切换到faithfuld,因为geom_contour_fillgeom_contour一样,其密度已经计算出来,旨在处理栅格数据。也许可以让geom_contour_fill为您进行2D密度估算,但是您自己调用MASS::kde2dstat_density2d的用途)并将结果解压缩为数据可能更直接适用于geom_contour_fill的框架。