使用Pyvis在浏览器绘制动态网络图的问题及代码异常求助
使用Pyvis在浏览器绘制动态网络图的问题及代码异常求助
嘿,我看到你在尝试用Pyvis生成交互式动态网络图时遇到了显示问题,而且已经能成功用Matplotlib画出静态图,咱们来一步步搞定这个动态图的问题~
首先你收到的那个警告信息其实已经给出了核心解决方案:
Warning: When cdn_resources is 'local' jupyter notebook has issues displaying graphics on chrome/safari. Use cdn_resources='in_line' or cdn_resources='remote' if you have issues viewing graphics in a notebook.
你当前初始化Pyvis的Network对象时,只设置了notebook=True,但没有指定cdn_resources参数,它默认会用local模式,这在Chrome/Safari的Jupyter环境里就容易出显示问题。
解决步骤:
修改Network的初始化代码,加上cdn_resources参数,选in_line或者remote都可以:
cdn_resources='in_line':会把所有需要的资源直接嵌入到生成的HTML文件里,不需要联网就能查看,适合离线场景cdn_resources='remote':会从CDN加载资源,生成的HTML文件更小,但需要联网
修改后的完整可运行代码如下:
import pandas as pd import networkx as nx from pyvis.network import Network # 初始化数据(保持你的原始数据不变) data = [{'Circuit': 'html','Description':1, 'Duration':10.2, 'Source':'Westchester', 'Destination':'Davie', 'Picklist':1000, 'Postlist':50000.2}, {'Circuit': 'html', 'Description':2, 'Duration':12.1, 'Source':'Westchester', 'Destination':'Davie', 'Picklist':3000, 'Postlist':40000.1}, {'Circuit': 'html', 'Description':3, 'Duration':11.3, 'Source':'Westchester', 'Destination':'Davie', 'Picklist':7000, 'Postlist':50000.2}, {'Circuit': 'html', 'Description':3, 'Duration':8.1, 'Source':'West', 'Destination':'San Bernardino', 'Picklist':3000, 'Postlist':40000.0}, {'Circuit': '.net', 'Description':4, 'Duration':6.2, 'Source':'Queens', 'Destination':'San Bernardino', 'Picklist':5000, 'Postlist':6000.1}, {'Circuit': '.net', 'Description':3, 'Duration':20.1, 'Source':'Queens', 'Destination':'Los Angeles', 'Picklist':5000, 'Postlist':4000.1}, {'Circuit': '.net', 'Description':2, 'Duration':15.5, 'Source':'Brooklyn', 'Destination':'San Francisco', 'Picklist':5000, 'Postlist':9000.3}, {'Circuit': '.net', 'Description':4, 'Duration':7.7, 'Source':'Brooklyn', 'Destination':'Davie', 'Picklist':6000, 'Postlist':10000}, {'Circuit': '.net', 'Description':4, 'Duration':7.7, 'Source':'Los Angeles', 'Destination':'Westchester', 'Picklist':6000, 'Postlist':10000}, {'Circuit': '.net', 'Description':4, 'Duration':7.7, 'Source':'San Berdarnino', 'Destination':'Westchester', 'Picklist':6000, 'Postlist':10000}] df = pd.DataFrame(data) # 构建NetworkX图 G = nx.from_pandas_edgelist(df, source='Source', target='Destination', edge_attr='Picklist') # 关键修改:添加cdn_resources参数 net = Network(notebook=True, cdn_resources='in_line') net.from_nx(G) # 生成并显示交互式动态网络图 net.show('example.html')
额外小提示:
如果你是在Jupyter Lab里运行,修改参数后还是看不到图,可能需要安装jupyterlab_iframe扩展来支持HTML嵌入显示,执行以下命令安装:
pip install jupyterlab_iframe jupyter labextension install jupyterlab_iframe
先试试修改cdn_resources参数的方案,这应该就能解决你遇到的显示问题啦!
备注:内容来源于stack exchange,提问作者ASH
相关产品推荐
相关产品推荐

