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

Pyvis网络图选中时边缘颜色设置无效,求解决方法

Pyvis网络图选中边缘颜色设置无效问题

我用以下代码绘制网络图:

from pyvis.network import Network
import csv
got_net = Network(height='900px', width='100%', bgcolor='#222222', font_color='white')
got_net.barnes_hut()

with open('test.csv', 'r') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=';')
    for row in spamreader:
        id_, channel, message = row
        src = str(id_)
        dst = str(channel)
        msg = str(message)
        got_net.add_node(src, src, title="ID: " + src, size=5)
        got_net.add_node(dst, dst, title="Channel: " + dst, size=10,
                         physics=False, shape='triangle')
        got_net.add_edge(src, dst, label=msg)
got_net.force_atlas_2based()
got_net.show_buttons(filter_=True)
got_net.show('./test.html')

绘制出的网络图效果:

白色背景下,圆形节点代表ID,三角形节点代表频道,节点间有带消息标签的边连接

但我尝试通过界面按钮修改选中状态的边缘颜色时,设置并未生效:

界面中已调整"Selected Edge Color"参数,但选中边缘后颜色无变化

我的CSV文件内容:

每行数据以分号分隔,包含ID、频道、消息三列,示例数据如1;ChannelA;Hello

请问哪里操作有误?需要如何设置才能让选中边缘时显示不同的颜色?


解决方案

Pyvis基于vis.js实现,默认未开启边缘选中样式的配置,导致界面按钮设置无效,可通过以下两种方式解决:

方法1:全局配置边缘选中颜色

创建Network对象时,通过options参数传入vis.js的全局配置,直接定义边缘选中样式:

from pyvis.network import Network
import csv

# 定义vis.js配置,指定边缘选中颜色
options = {
  "edges": {
    "color": {
      "inherit": True,
      "highlight": "#ff0000"  # 选中时的边缘颜色,可自定义
    }
  }
}

got_net = Network(height='900px', width='100%', bgcolor='#222222', font_color='white', options=options)
got_net.barnes_hut()

# 后续节点、边添加逻辑不变
with open('test.csv', 'r') as csvfile:
    spamreader = csv.reader(csvfile, delimiter=';')
    for row in spamreader:
        id_, channel, message = row
        src = str(id_)
        dst = str(channel)
        msg = str(message)
        got_net.add_node(src, src, title="ID: " + src, size=5)
        got_net.add_node(dst, dst, title="Channel: " + dst, size=10,
                         physics=False, shape='triangle')
        got_net.add_edge(src, dst, label=msg)
got_net.force_atlas_2based()
got_net.show_buttons(filter_=True)
got_net.show('./test.html')

方法2:单个边缘自定义选中颜色

如果需要给不同边缘设置不同的选中颜色,可在add_edge时传入color参数:

got_net.add_edge(src, dst, label=msg, color={"highlight": "#00ff00"})

注意:单个边缘的配置会覆盖全局配置,可根据需求选择使用。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:15:39