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

如何用Graphviz绘制同心连接双环图?

实现Graphviz同心双环布局方案

需求与问题

需要绘制两个节点数相同的环,对应节点互相连接,形成同心双环结构,示例结构如下:

O-------O
   / \     / \
  /   O---O   \
 /   /     \   \
O---O       O---O
 \   \     /   /
  \   O---O   /
   \ /     \ /
    O-------O

原尝试的Graphviz代码:

graph {
  layout="circo"
  oneblock=false
    
  Aa -- Ba -- Ca -- Da -- Ea -- Fa -- Aa
  Ab -- Bb -- Cb -- Db -- Eb -- Fb -- Ab
  Aa -- Ab
  Ba -- Bb
  Ca -- Cb
  Da -- Db
  Ea -- Eb
  Fa -- Fb
}

遇到的问题:

  • 使用circo布局时生成的图结构混乱,调整oneblock参数无效;删除单个环的边后布局正常,但恢复边后再次出错
  • 直接使用neato布局虽接近需求,但环会偏移重叠,无法形成严格同心结构

解决方案

方案1:Circo + 子图分组 + 同秩约束

通过子图分隔两个环,并给对应节点添加rank=same约束,强制径向对齐,同时调整布局参数优化效果:

graph {
  layout="circo"
  overlap=false
  splines=true

  // 用不可见子图分隔内外环节点
  subgraph cluster_outer {
    style=invis
    Aa -- Ba -- Ca -- Da -- Ea -- Fa -- Aa
  }
  subgraph cluster_inner {
    style=invis
    Ab -- Bb -- Cb -- Db -- Eb -- Fb -- Ab
  }

  // 强制每组对应节点处于同一径向层级
  {rank=same; Aa; Ab}
  {rank=same; Ba; Bb}
  {rank=same; Ca; Cb}
  {rank=same; Da; Db}
  {rank=same; Ea; Eb}
  {rank=same; Fa; Fb}

  // 连接对应节点
  Aa -- Ab
  Ba -- Bb
  Ca -- Cb
  Da -- Db
  Ea -- Eb
  Fa -- Fb
}

方案2:Neato + 手动节点定位(精准同心)

如果需要完全精准的同心结构,可手动计算节点极坐标并通过pos属性指定,确保内外环严格同心:

graph {
  layout="neato"
  overlap=false
  splines=true
  node [shape=circle]

  // 外环节点(半径2.0,六边形顶点坐标)
  Aa [pos="0,2!"]
  Ba [pos="-1.732,1!"]
  Ca [pos="-1.732,-1!"]
  Da [pos="0,-2!"]
  Ea [pos="1.732,-1!"]
  Fa [pos="1.732,1!"]
  
  // 内环节点(半径1.0,对应缩小比例)
  Ab [pos="0,1!"]
  Bb [pos="-0.866,0.5!"]
  Cb [pos="-0.866,-0.5!"]
  Db [pos="0,-1!"]
  Eb [pos="0.866,-0.5!"]
  Fb [pos="0.866,0.5!"]

  // 绘制环边
  Aa -- Ba -- Ca -- Da -- Ea -- Fa -- Aa
  Ab -- Bb -- Cb -- Db -- Eb -- Fb -- Ab
  
  // 连接对应节点
  Aa -- Ab
  Ba -- Bb
  Ca -- Cb
  Da -- Db
  Ea -- Eb
  Fa -- Fb
}

方案3:使用Fdp布局引擎替代

fdp对对称图的布局支持更稳定,无需额外约束即可生成自然的同心双环:

graph {
  layout="fdp"
  overlap=false
  splines=true
  node [shape=circle]

  Aa -- Ba -- Ca -- Da -- Ea -- Fa -- Aa
  Ab -- Bb -- Cb -- Db -- Eb -- Fb -- Ab
  Aa -- Ab
  Ba -- Bb
  Ca -- Cb
  Da -- Db
  Ea -- Eb
  Fa -- Fb
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 03:18:35