【问题标题】:Add specific shape and linetype to ellipses for NMDS via ggplot2通过 ggplot2 为 NMDS 的椭圆添加特定的形状和线型
【发布时间】:2013-09-25 12:43:31
【问题描述】:

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

Color-coding 95% confidence ellipses for centroids

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

NMDS 来了:

http://pastebin.com/99WcC6wN

Dat2 在这里:

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")) 

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

非常感谢!

【问题讨论】:

    标签: r ggplot2 vegan


    【解决方案1】:

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

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

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

    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))
    

    【讨论】:

    • 非常感谢!正如我试图指定的那样,有没有办法改变点的形状?对于这些,我希望 W+N- 和 WCN- 有三角形,而 W+NC 和 WCNC 有正常的圆点......
    • 是的,只需将shape 映射到感兴趣的变量。我编辑了我的帖子给你看。
    • 谢谢!现在才意识到该怎么做:)
    猜你喜欢
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多