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

R/igraph技术问询:调整顶点上的边交汇点以绘制系谱图

解决igraph系谱图边汇聚的问题

我明白你想把系谱图里双亲到子代的分散边改成汇聚样式——这个需求在绘制家系图时太常见了!igraph默认的无向边绘制确实会让两条边看起来分开,不过我们可以通过调整边的弯曲参数轻松实现汇聚效果。

核心解决方案:调整edge.curved参数

igraph的plot()函数里的edge.curved参数可以控制边的弯曲方向和程度,我们可以利用它让两条边向中间靠拢,最终汇聚到子代节点的顶部。

下面是修改后的代码,直接替换你原来的plot语句即可:

library(igraph)
ped <- data.frame(id=1:3, p1=c(0,0,1), p2=c(0,0,2), gen=c(0,0,1))
rel <- matrix(c(1,2,3,3), ncol=2)
ped.graph <- graph.data.frame(rel, directed=F, ped)
pos <- matrix(c(1,2,1.5,2,2,1), ncol=2)

# 调整边弯曲度实现汇聚效果
plot(ped.graph, rescale=T, layout=pos, vertex.size=50, 
     edge.curved = -0.2,  # 负数让边向图中心弯曲,实现汇聚
     edge.width = 2)      # 可选:加宽边让汇聚效果更明显

参数细节说明

  • edge.curved = -0.2:负数表示边向图的中心方向弯曲,这样双亲(节点1、2)到子代(节点3)的两条边就会自然向中间靠拢,最终在子代节点处汇合。你可以根据图的大小调整这个数值(比如-0.1到-0.3之间),找到最贴合需求的弯曲度。
  • 如果需要为每条边单独设置弯曲度,可以传入一个向量,比如edge.curved = c(-0.2, -0.2)(两条边用相同的弯曲度),效果和单个数值一致。

进阶优化(可选)

如果想要更贴近专业系谱图的样式,还可以添加这些设置:

  • 设置顶点形状为方形:vertex.shape = "square"
  • 统一边的颜色:edge.color = "black"
  • 隐藏顶点标签(如果不需要):vertex.label = NA

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 20:08:01