R,ggplot - 密度图显示间隙

时间:2016-04-06 22:27:17

标签: r plot ggplot2 density-plot

当我尝试使用ggplot2的函数stat_density2d绘制二维密度图时,我遇到了某种错误。当我只尝试绘制图表的轮廓时,似乎工作正常:

ggplot(mydata, aes(x=x_loc, y=y_loc)) + stat_density2d(aes(fill = ..level..))

然而,当我尝试使用geom =" polygon"

填充图层时
ggplot(mydata, aes(x=x_loc, y=y_loc))+stat_density2d(aes(fill = ..level..), geom = "polygon")

我明白了:

Filled in

由于某些原因,它看起来像是出现几何误差,但我不确定原因。我试图解决这个问题,但我似乎无法找到解决方案。我已经更新了我的R版本和我的所有软件包,但它没有修复它。

作为一个可重复的例子:

matrix = matrix(c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,1,2,3,1,2,3,1,2,3,1,2,
3,1,2,3,1,2,3,18,12,20,24,22,35,18,12,19,20,5,16,11,7,10,5,1,3), nrow = 18)

ggplot(as.data.frame(matrix), aes(x=V1, y=V2)) + 
stat_density2d(aes(fill = ..level..), geom = "polygon")

其中存在类似问题,例如在侧面以及顶部和底部:

Example output

如果有人能帮我解决这个问题,那就太好了,现在已经坚持了好几个小时了。

提前致谢!

1 个答案:

答案 0 :(得分:1)

如@joran的评论所述,this question似乎是类似的。默认剪切值似乎导致问题。以下适用于我:

library(ggplot2)

matrix = matrix(c(1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,1,2,3,1,2,3,1,2,3,1,2,
3,1,2,3,1,2,3,18,12,20,24,22,35,18,12,19,20,5,16,11,7,10,5,1,3), nrow = 18)

ggplot(as.data.frame(matrix), aes(x=V1, y=V2)) + 
stat_density2d(aes(fill = ..level..), geom = "polygon")+ 
lims(x = c(-1,8),y = c(-.25,4.25))