0

作为这个非常有用的问题和答案的后续行动:

对质心的 95% 置信椭圆进行颜色编码

我已经成功地在 ggplot 中为我的 NMDS 图覆盖了置信椭圆。我现在想指定绘图上数据点的颜色和形状,以及椭圆的颜色和线型,以区分我的四种处理方式。

NMD 在这里:

http://pastebin.com/99WcC6wN

数据2在这里:

http://pastebin.com/D93wrShT

我试过的代码如下:

ggplot(data = NMDS, aes(MDS1, MDS2)) + geom_point(aes(color = group)) +
  geom_path(data=Dat2, aes(x=NMDS1, y=NMDS2,colour=group), size=1,     linetype=2)+theme(axis.title.y=element_text(size=rel(1.1),vjust=0.2),axis.title.x=element_t    ext(size=rel(1.1),vjust=0.2),axis.text.x=element_text(size=rel(1)),axis.text.y=element_text(size=rel(1)),text = element_text(size=13)) +scale_shape_manual(name = "Treatment", labels = c("W+N-", "W+NC", "WCN-", "WCNC"),
                  values = c("17", "19","17", "19")) +scale_colour_manual(name = "Treatment", labels = c("W+N-", "W+NC", "WCN-", "WCNC"),
                  values = c("blue", "blue","red", "red")) +scale_linetype_manual(name = "Treatment", labels = c("W+N-", "W+NC", "WCN-", "WCNC"),
                  values = c("3", "1","3", "1")) 

不幸的是,似乎只有点和椭圆的颜色有效——椭圆的线型和数据点的形状似乎没有改变。有没有人有关于如何解决这个问题的建议?

非常感谢!

4

1 回答 1

1

您需要映射linetypeshapegroup就像映射color到一样group。您实际上可以在第一行中执行这两个映射一次,因为变量的名称在您的两个数据集中是相同的:

ggplot(data = NMDS, aes(MDS1, MDS2, color=group, linetype=group, shape=group))

当然,这时你需要删除其他地方的colorlinetype映射。您还应该将linetype值指定scale_linetype_manual为数字,而不是字符串。最后,你会得到这样的东西:

ggplot(data = NMDS, aes(MDS1, MDS2, color=group, linetype=group, shape=group)) + 
  geom_point() +
  geom_path(data=Dat2, aes(x=NMDS1, y=NMDS2), size=1) + 
  theme(axis.title.y=element_text(size=rel(1.1),vjust=0.2),axis.title.x=element_text(size=rel(1.1),vjust=0.2),axis.text.x=element_text(size=rel(1)),axis.text.y=element_text(size=rel(1)),text = element_text(size=13)) +
  scale_shape_manual(name = "Treatment", labels = c("W+N-", "W+NC", "WCN-", "WCNC"), values = c(17, 19,17, 19)) +
  scale_colour_manual(name = "Treatment", labels = c("W+N-", "W+NC", "WCN-", "WCNC"), values = c("blue", "blue","red", "red")) +
  scale_linetype_manual(name = "Treatment", labels = c("W+N-", "W+NC", "WCN-", "WCNC"), values = c(3, 1,3, 1))

所需的情节

于 2013-09-25T12:56:42.747 回答