如何为Pyvis Network设置预保存的物理参数选项?
如何将预配置的Pyvis物理参数直接应用到Network对象?
问题场景
我用Pyvis创建了一个网络可视化,示例代码如下:
from pyvis import Network G = Network(notebook=True) G.add_nodes([1, 2, 3], label=['Peter', 'Paul', 'Mary']) G.add_nodes([4, 5, 6, 7], label=['Michael', 'Ben', 'Oliver', 'Olivia'], color=['#3da831', '#9a31a8', '#3155a8', '#eb4034'])
可视化时节点持续移动,我通过G.show_buttons(filter_=['physics'])开启物理控件,导出HTML调整参数后,得到如下JS配置:
const options = { "physics": { "enabled": false, "forceAtlas2Based": { "springLength": 100 }, "minVelocity": 0.75, "solver": "forceAtlas2Based" } }
希望直接把这些参数写入代码,无需每次手动调整。
解决方法
有两种简洁的方式将预配置的物理参数应用到Pyvis的Network对象:
方法1:使用Python字典更新配置
将JS配置转换为Python字典(注意把JS的false改为Python的False),然后通过options.update()方法合并到Network对象的配置中:
from pyvis import Network G = Network(notebook=True) G.add_nodes([1, 2, 3], label=['Peter', 'Paul', 'Mary']) G.add_nodes([4, 5, 6, 7], label=['Michael', 'Ben', 'Oliver', 'Olivia'], color=['#3da831', '#9a31a8', '#3155a8', '#eb4034']) # 转换后的Python配置字典 physics_config = { "physics": { "enabled": False, "forceAtlas2Based": { "springLength": 100 }, "minVelocity": 0.75, "solver": "forceAtlas2Based" } } # 应用配置(仅覆盖物理相关参数,保留其他默认设置) G.options.update(physics_config) # 导出可视化HTML G.show('tmp.html')
方法2:直接传入JS配置字符串
使用set_options()方法,直接将调整好的JS配置字符串传入:
from pyvis import Network G = Network(notebook=True) G.add_nodes([1, 2, 3], label=['Peter', 'Paul', 'Mary']) G.add_nodes([4, 5, 6, 7], label=['Michael', 'Ben', 'Oliver', 'Olivia'], color=['#3da831', '#9a31a8', '#3155a8', '#eb4034']) # 直接传入JS配置字符串 G.set_options(""" { "physics": { "enabled": false, "forceAtlas2Based": { "springLength": 100 }, "minVelocity": 0.75, "solver": "forceAtlas2Based" } } """) G.show('tmp.html')
注意事项
- 方法1更适合Python环境下的参数修改和维护,不会替换Network对象的其他默认配置;
- 方法2适合直接复用从界面导出的JS代码,无需格式转换。
内容的提问来源于stack exchange,提问作者Ivo
相关产品推荐
相关产品推荐

