You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在ggplot相关性散点图中添加分组凸包的技术求助

为相关性散点图添加分组凸包的解决方法

问题描述

我绘制了一张灵长类属的骨骼形状相关性散点图:X轴为跟骨PC1均值,Y轴为钩骨PC1均值,每个点对应一个属,已完成散点、属名标签、回归线及r²值的添加。现在需要给特定类群的属添加分组凸包,但操作时遇到问题。现有未添加凸包的代码如下:

ggplot(myd_,aes(x = PC1_mean_calcaneus, y = PC1_mean_hamate, label=genus)) +
  geom_point() + 
  geom_text(hjust=0, vjust=0)+ # 添加每个点的属名标签
  geom_smooth(method = "lm", se=FALSE) +
  stat_regline_equation(label.y = .6, aes(label = ..eq.label..)) +
  stat_regline_equation(label.y = .5, aes(label = ..rr.label..))

解决方案

要添加分组凸包,核心是利用stat_chull结合geom_polygon,前提是你的数据框myd_中存在分组列(比如命名为taxon_group,标记每个属所属的类群)。

修改后的代码示例

ggplot(myd_, aes(x = PC1_mean_calcaneus, y = PC1_mean_hamate, label=genus)) +
  # 先画凸包,放在底层避免遮挡散点和标签
  geom_polygon(
    aes(group = taxon_group, fill = taxon_group),
    stat = "chull",
    alpha = 0.2, # 调整填充透明度,避免遮挡内容
    color = "black" # 凸包边框颜色
  ) +
  geom_point(aes(color = taxon_group)) # 可选:给散点按分组上色,增强区分度
  geom_text(hjust=0, vjust=0) +
  geom_smooth(method = "lm", se=FALSE) +
  stat_regline_equation(label.y = .6, aes(label = ..eq.label..)) +
  stat_regline_equation(label.y = .5, aes(label = ..rr.label..)) +
  theme_bw() # 可选:添加简洁主题优化视觉效果

关键说明

  1. 分组列要求:确保myd_中有区分类群的列,比如标记每个属属于人科、猴科等类群的字段。
  2. 图层顺序:把凸包geom_polygon放在geom_point之前,让凸包处于底层,不会遮挡散点和标签。
  3. 样式自定义:通过alpha控制填充透明度,color设置凸包边框色,fill设置填充色,可根据需求调整。
  4. 仅给特定类群加凸包:如果只需要给部分类群绘制凸包,可先筛选数据,示例如下:
# 仅给"人科"和"猴科"类群添加凸包
ggplot(myd_, aes(x = PC1_mean_calcaneus, y = PC1_mean_hamate, label=genus)) +
  geom_polygon(
    data = subset(myd_, taxon_group %in% c("hominidae", "cercopithecidae")),
    aes(group = taxon_group, fill = taxon_group),
    stat = "chull",
    alpha = 0.2,
    color = "black"
  ) +
  geom_point() +
  geom_text(hjust=0, vjust=0) +
  geom_smooth(method = "lm", se=FALSE) +
  stat_regline_equation(label.y = .6, aes(label = ..eq.label..)) +
  stat_regline_equation(label.y = .5, aes(label = ..rr.label..))

内容的提问来源于stack exchange,提问作者Alisha

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 19:01:20