我有一个非常讨厌的问题,用ggplot2绘制省略号,我想知道是否有人能看到我做错了什么?所有的点都链接起来了!
我通常使用标准plot()和ordiellipse()来做这个,但是一直试图使用ggplot来获得美观,但这种情况发生了。我承认要收集“循环”#39;来自互联网的代码,但我无法在其中看到错误。
这就是我得到的:
我这样做:
## 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)
答案 0 :(得分:1)
在创建df_ell
的for循环中,df_ell
应该为空,而不是all
中数据的副本,否则您将all
中的数据添加到{{1}}每个椭圆,这就是为什么它们被显示为路径的一部分。