【问题标题】:ggplot2 & stat_ellipse: Draw ellipses around multiple groups of pointsggplot2 & stat_ellipse:围绕多组点画椭圆
【发布时间】:2014-06-17 16:22:33
【问题描述】:

这可能是一个简单的问题,但我正在尝试在我的 PCoA 图上围绕我的治疗绘制椭圆。

我的数据框(sc)是:

             MDS1        MDS2 Treatment
X1xF1 -0.19736183 -0.24299825   1xFlood
X1xF2 -0.17409568 -0.29727596   1xFlood
X1xF3 -0.15272444 -0.28553837   1xFlood
S1    -0.06643271  0.47049959     Start
S2    -0.15143350  0.31152966     Start
S3    -0.26156297  0.12296849     Start
X3xF1  0.29840827  0.04581617  3xFloods
X3xF2  0.50503749 -0.07011503  3xFloods
X3xF3  0.20016537 -0.05488630  3xFloods

我的代码是:

ggplot(data=sc,(aes(x=MDS1,y=MDS2,colour = Treatment)))+geom_point(size=3)+
  ggtitle("PCoA of samples at 'class' level(method='Bray')\n",sep=''))+
  theme_bw()+guides(colour = guide_legend(override.aes = list(size=3)))+
  stat_ellipse()

它绘制 PCoA 直到 stat_ellipse()。我已经用各种参数进行了尝试,充其量我可以为整个情节获得一个椭圆(尽管我现在似乎无法重现它)。

我所追求的是三种治疗方法的三个 CI 椭圆,颜色与治疗方法相同。任何帮助将不胜感激!

谢谢。

【问题讨论】:

  • 最小的可重现示例。当您试图专注于如何绘制椭圆的问题时,这有点令人费解。
  • 好点,谢谢。我已经删除了创建数据框的垃圾,只留下了 ggplot2 代码。

标签: r ggplot2 ellipse


【解决方案1】:

ggplot 包中没有stat_ellipse(...),所以你一定是从其他地方取回了它。愿意分享吗??我知道至少有两个版本,herehere。这些似乎都不适用于您的数据集,这很奇怪,因为两者都适用于其他数据集。

我最终还是选择在ggplot 外部生成椭圆,这实际上并不难。

library(ggplot2)
library(ellipse)
centroids <- aggregate(cbind(MDS1,MDS2)~Treatment,sc,mean)
conf.rgn  <- do.call(rbind,lapply(unique(sc$Treatment),function(t)
  data.frame(Treatment=as.character(t),
             ellipse(cov(sc[sc$Treatment==t,1:2]),
                     centre=as.matrix(centroids[t,2:3]),
                     level=0.95),
             stringsAsFactors=FALSE)))

ggplot(data=sc,(aes(x=MDS1,y=MDS2,colour = Treatment)))+
  geom_point(size=3)+
  geom_path(data=conf.rgn)+
  ggtitle(paste("PCoA of samples at 'class' level(method='Bray')\n",sep=''))+
  theme_bw()+
  guides(colour = guide_legend(override.aes = list(size=3)))

【讨论】:

  • 主要问题是 stat_ellipse() 是 car::ellipse() 和 geom_path() 的包装函数,当数据品脱数量有限时,它的默认参数会跳闸。跨度>
  • 感谢 jlhoward。 stat_ellipse() 来自 devtools,抱歉我忘了提。我试过使用你的代码,但没有出现省略号,它只是生成正常的图,我不知道为什么......
  • 尝试重新启动 R,然后完全复制/粘贴代码。
  • 不幸的是,这不起作用。当我在运行您的函数后键入 conf.rgn 时,我得到一个 300 x 3 的数据框,其中 col 1 作为处理(每次处理 100 x),col2 和 3 作为 MDS1 和 MDS2。最后两列是“NA”,所以我认为这就是问题所在。
  • 很难说这里发生了什么。您是否收到任何错误消息或警告?您生成sc 的代码是否加载任何包?如果您加载car 包,或者如果您加载需要car 的包,则会屏蔽ellipse(...) 函数。但这应该会导致错误消息。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多