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

Python绘制指定节点Y坐标、优化X坐标的连通图方案问询

固定Y轴值的节点链接图:名称与工具推荐

图的特定名称

这种图属于带约束的节点链接图(Constrained Node-Link Diagram),更具体的是垂直位置固定的节点布局图——核心特征是节点的Y坐标绑定实际测量值,仅优化X坐标以减少边交叉、缩短边长度。它也可被看作层次图(Hierarchical Graph)的变种,但区别在于Y轴是定量测量值而非抽象层级。

现成工具实现方案

以下工具无需自行编写复杂布局算法,直接支持固定Y轴并优化X轴:

专业可视化工具

  • Gephi

    1. 导入包含测量值的节点数据和边数据
    2. 在「数据实验室」中,将节点的Y属性映射为你的测量值
    3. 选择「ForceAtlas2」布局,在设置中勾选「锁定Y轴」(或禁用Y方向的物理力)
    4. 运行布局,工具会自动优化X轴位置以减少边交叉、缩短边距
  • Cytoscape

    1. 导入节点和边数据集,将测量值设为节点的Y属性
    2. 选择「yFiles Layouts」或自带的「Spring Embedded」布局
    3. 在布局配置中开启「固定Y坐标」选项,仅允许X轴调整
    4. 执行布局即可得到优化后的图形

BI类低代码工具

  • Tableau

    • 将测量值拖到「行」(对应Y轴),节点名称拖到「标记」的「形状」,通过数据关系关联边数据
    • 选择「网络图」可视化类型,在布局选项中开启「减少边交叉」的自动优化
  • Power BI

    • 使用「网络图」自定义视觉组件,将测量值绑定到节点的Y轴属性
    • 在组件设置中启用X轴自动布局优化,让工具调整节点水平位置

Python轻量方案(极简代码)

如果仍想用Python但不想编写布局算法,可使用pyvis库,通过配置关闭Y轴物理移动,仅优化X轴:

from pyvis.network import Network

# 初始化网络
net = Network(height="600px", width="100%")

# 添加节点:y值设为你的测量值
nodes = {
    "A": 25, "B": 30, "C": 18, "D": 42,
    "E": 22, "F": 35, "G": 15, "H": 40,
    "I": 17, "J": 38
}
for node, y_val in nodes.items():
    net.add_node(node, y=y_val)

# 添加边(替换为你的实际边关系)
edges = [("A","B"), ("B","C"), ("G","H"), ("H","I"), ("I","J"), ("D","F")]
for edge in edges:
    net.add_edge(edge[0], edge[1])

# 配置布局:固定Y轴,仅优化X轴
net.set_options("""
var options = {
  physics: {
    solver: "forceAtlas2Based",
    forceAtlas2Based: {
      springLength: 120,
      springConstant: 0.1,
      avoidOverlap: 0.6
    },
    stabilization: {iterations: 800},
    nodes: {fixed: {y: true}}
  }
}
""")

# 导出为可交互HTML文件
net.show("constrained_graph.html")

内容的提问来源于stack exchange,提问作者Sam A.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 16:05:39