ggplot2中stat_density2d()的问题

时间:2017-11-17 14:08:38

标签: r ggplot2

我的数据集(origen)由3列,因子变量(Origen)和两个cuantitative变量(Ae和Adp)组成。 origen分类变量的一些因子仅由1或2个观察值组成。

运行此代码时:

ggplot (origen, aes (x = Ae, y = Adp, colour = Origen)) + 
stat_density2d(aes (fill = Origen, colour = Origen, alpha = 0.9),
geom = "polygon", lty = 3,lwd = 0.001) + xlim(8, 23) + ylim(22, 58) + 
scale_alpha(range = c(0, 0.2),guide = "none") + 
geom_point(aes(fill=Origen),colour="black",pch=21,size=3,alpha=0.1)

我没有得到ggplot()中stat_density2d函数的结果。但是,当我手动删除那些最多只包含1或2个观察值的组时,上面的代码可以正常工作并显示密度区域。

如何通过修改代码来避免此问题?必须在stat_density2d函数中写入哪些新属性才能运行超过两个观察组以及其他组的点?

1 个答案:

答案 0 :(得分:1)

这不是您问题的直接答案,但您可以通过group_by()filter()删除包含< 1观察的群组。

library(dplyr)

data_filtered <- data %>%
  group_by(Origen) %>%
  filter(n() > 1)

(警告“缺少值需要TRUE / FALSE”似乎从这里提出:https://github.com/tidyverse/ggplot2/blob/8778b48b37d8b7e41c0f4f213031fb47810e70aa/R/stat-density-2d.r#L58