将轮廓与stat_density2d
一起使用会出现错误:
ggplot(faithful, aes(x = eruptions, y = waiting, fill = ..density..)) +
stat_density2d(geom = "tile")
不知道如何为类型的对象自动选择比例 功能。默认为连续。 is.finite(x)中的错误:默认 类型“ closure”未实现方法
使用contour = F
绘图而无错误。有什么问题
答案 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_fill
与geom_contour
一样,其密度已经计算出来,旨在处理栅格数据。也许可以让geom_contour_fill
为您进行2D密度估算,但是您自己调用MASS::kde2d
(stat_density2d
的用途)并将结果解压缩为数据可能更直接适用于geom_contour_fill
的框架。