ggplot2绘制单个椭圆,但按组

时间:2016-04-13 20:59:27

标签: r ggplot2

我的数据由多个人的几个数据点组成,每个人都来自特定的研究站点。我想绘制所有点,为每个人绘制95%的椭圆,但然后按研究地点为椭圆绘制颜色。不幸的是,当我指定按网站着色时,会为聚合组绘制椭圆。

数据如下所示:

dat1 <- data.frame(X=rnorm(21),Y=rnorm(21),indiv_id=rep(c(1,2,3),7),group_id=rep(1,21))
dat2 <- data.frame(X=rnorm(21,5),Y=rnorm(21,5),indiv_id=rep(c(4,5,6),7),group_id=rep(2,21))
dat3 <- data.frame(X=rnorm(21,10),Y=rnorm(21,10),indiv_id=rep(c(7,8,9),7),group_id=rep(3,21))
ggdat <- rbind(dat1,dat2,dat3)
ggdat$indiv_id <- as.factor(ggdat$indiv_id)
ggdat$group_id <- as.factor(ggdat$group_id)

如果我按个人绘制省略号,我可以分别看到所有的省略号:

ggplot(ggdat) +
  geom_point(aes(x=X, y=Y,color=indiv_id),size=1) + # 
  stat_ellipse(aes(x=X, y=Y,color=indiv_id),type = "norm")

individual ellipses

但如果我按小组绘制,则每组仅生成一个椭圆:

ggplot(ggdat) +
  geom_point(aes(x=X, y=Y,color=indiv_id),size=1) + # 
  stat_ellipse(aes(x=X, y=Y,color=group_id),type = "norm") + #, linetype = 2
  theme(legend.position='none')

group ellipses

如何绘制所有9个椭圆,但按组颜色进行着色?谢谢你的帮助!

1 个答案:

答案 0 :(得分:6)

明确定义组:

ggplot(ggdat) +
  geom_point(aes(x=X, y=Y,color=indiv_id),size=1) + # 
  stat_ellipse(aes(x=X, y=Y,color=group_id, group=indiv_id),type = "norm") +
  theme(legend.position='none')

enter image description here