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

如何绘制无动态刷新效果的静态network chart(网络图)

问题原因

你遇到的持续刷新动画是pyvis默认启用了物理引擎模拟,同时默认开放了拖拽、缩放等交互权限导致的。要生成纯静态无交互的网络图,可按以下两种方案调整:

方案1:修改pyvis参数实现静态网页图

该方案生成的是静态HTML文件,保留可视化效果但无动画、无交互操作,调整后的完整代码如下:

import pandas as pd
import networkx as nx
from pyvis.network import Network

# 读取数据、构建图逻辑不变
df = pd.read_csv("C:\\Users\\ryans\\OneDrive\\Desktop\\migration.csv")
G = nx.from_pandas_edgelist(df, source='Country', target='Citizenship')

# 可选步骤:提前计算固定布局,保证每次生成的节点位置完全一致
pos = nx.spring_layout(G, seed=42)
for node, (x, y) in pos.items():
    # 放大坐标避免节点拥挤
    G.nodes[node]["x"] = x * 1000
    G.nodes[node]["y"] = y * 1000

# 初始化Network时关闭物理引擎和所有交互权限
net = Network(
    notebook=True,
    physics=False,  # 核心参数:关闭物理模拟,停止动态刷新
    height="800px",
    width="100%",
    interaction={
        "dragNodes": False,  # 禁止拖拽节点
        "dragView": False,   # 禁止移动画布
        "zoomView": False,   # 禁止缩放画布
        "selectable": False  # 禁止点击选中元素
    }
)

net.from_nx(G)
net.show("example_static.html")

参数说明:

  • physics=False是关闭动态效果的核心参数,添加后节点不会自动进行物理位置调整,也就不会出现持续刷新的动画
  • 提前设置节点固定坐标可以避免pyvis默认的随机布局,保证每次运行生成的图表完全一致
  • interaction配置项可以按需调整,如果需要保留部分交互(比如缩放),删除对应参数即可
方案2:直接生成静态图片

如果不需要网页格式,只需要静态图片,可直接用networkx配合matplotlib导出,实现更简单:

import pandas as pd
import networkx as nx
import matplotlib.pyplot as plt

df = pd.read_csv("C:\\Users\\ryans\\OneDrive\\Desktop\\migration.csv")
G = nx.from_pandas_edgelist(df, source='Country', target='Citizenship')

# 绘制静态图
plt.figure(figsize=(16, 12), dpi=300)
pos = nx.spring_layout(G, seed=42)
# 可自定义节点、边、标签的样式
nx.draw(
    G, 
    pos, 
    with_labels=True, 
    node_size=200, 
    node_color="#4a88f4",
    font_size=8, 
    edge_color="#cccccc"
)
# 导出为png图片
plt.savefig("network_static.png", bbox_inches="tight")
plt.close()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:57:05