如何在绘制省略号时停止连接所有点的ggplot2?

时间:2014-03-19 15:48:36

标签: r plot ggplot2

我有一个非常讨厌的问题,用ggplot2绘制省略号,我想知道是否有人能看到我做错了什么?所有的点都链接起来了!

我通常使用标准plot()和ordiellipse()来做这个,但是一直试图使用ggplot来获得美观,但这种情况发生了。我承认要收集“循环”#39;来自互联网的代码,但我无法在其中看到错误。

这就是我得到的: Conjoined NMDS points

我这样做:

## The NMDS coords have been pre-calculated, and the file looks like this:
     NMDS1 NMDS2 Site Species
Sample.1 -0.390516864 -0.227890627 1 Lr
Sample.2 -0.433137678 -0.221231786 1 Al
Sample.3 -0.16384753 0.243258745 1 Lt
Sample4 -0.444995027 -0.174555074 1 Ac
Sample.5 -0.569417948 -0.223738264 2 Lr
Sample.6 -0.543744761 -0.234924777 2 Lt
.......etc

# Code
all <-read.table("/Users/Dan/Downloads/all.txt", header=TRUE)
df_ell <- data.frame(x=all$NMDS1, y=all$NMDS2, group=all$Species)

for(g in levels(all$Species)){
     df_ell <- rbind(df_ell, cbind(as.data.frame(with(all[all$Species==g,], ellipse(cor(NMDS1, NMDS2), scale=c(sd(NMDS1),sd(NMDS2)), 
     centre=c(mean(NMDS1),mean(NMDS2))))),group=g))}

# Generate plot
p <- ggplot(all, aes(NMDS1, NMDS2))

# plot it
p + geom_point(size = 4, alpha=.8, aes(colour = factor(Species), shape = factor(Site))) + geom_path(data=df_ell, aes(x=x, y=y, colour=group), size=1, linetype=1)

1 个答案:

答案 0 :(得分:1)

在创建df_ell的for循环中,df_ell应该为空,而不是all中数据的副本,否则您将all中的数据添加到{{1}}每个椭圆,这就是为什么它们被显示为路径的一部分。