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
相关产品推荐
相关产品推荐

