我想使用最新版本的 pyvis 和 python 版本 3.9.6 进行网络可视化:
from pyvis.network import Network
g = Network()
g.add_node(0)
g.add_node(1)
g.add_edge(0, 1)
g.show('test.html')
Run Code Online (Sandbox Code Playgroud)
每次执行时g.show()我都会收到此错误:
Traceback (most recent call last):
File "/Users/tom/Library/Mobile Documents/com~apple~CloudDocs/Projekte/Coding_/f1 standings/test2.py", line 3, in <module>
g.show('nx.html')
File "/Users/tom/Library/Python/3.9/lib/python/site-packages/pyvis/network.py", line 546, in show
self.write_html(name, open_browser=False,notebook=True)
File "/Users/tom/Library/Python/3.9/lib/python/site-packages/pyvis/network.py", line 515, in write_html
self.html = self.generate_html(notebook=notebook)
File "/Users/tom/Library/Python/3.9/lib/python/site-packages/pyvis/network.py", line 479, in generate_html
self.html = template.render(height=height,
AttributeError: 'NoneType' object has no attribute 'render'
Run Code Online (Sandbox Code Playgroud)
我尝试更新 pyvis,更改了代码中的各种详细信息,并导入了所有 pyvis.network,但没有任何结果。
我已阅读文档,并且确实添加了具有属性的边weight,但边的权重未显示在绘图上,并且当我将诅咒悬停在两个节点之间的链接上时,边的权重也不会显示。可以显示体重吗?
代码片段(来源:https://pyvis.readthedocs.io/en/latest/tutorial.html#networkx-integration):
from pyvis.network import Network
import networkx as nx
nx_graph = nx.cycle_graph(10)
nx_graph.nodes[1]['title'] = 'Number 1'
nx_graph.nodes[1]['group'] = 1
nx_graph.nodes[3]['title'] = 'I belong to a different group!'
nx_graph.nodes[3]['group'] = 10
nx_graph.add_node(20, size=20, title='couple', group=2)
nx_graph.add_node(21, size=15, title='couple', group=2)
nx_graph.add_edge(20, 21, weight=5)
nx_graph.add_node(25, size=25, label='lonely', title='lonely node', group=3)
nt = Network('500px', '500px')
# populates the nodes and edges data structures
nt.from_nx(nx_graph)
nt.show('nx.html')
Run Code Online (Sandbox Code Playgroud)
结果: 片段的结果
如何显示边的权重?在此示例中,节点 20 和 21 的边有权重。
我正在寻找一种方法将 pyvis 生成的巨大图形导出为矢量图形 .svg 或至少 .png 格式。有办法做到吗?到目前为止,我只找到了保存/导出为 .html 文件的选项。
提前致谢。
我正在尝试用 pyvis 绘制一个定向图。在文档中,他们建议使用以下命令来创建定向边缘:
net.add_edge(4,1,from=1,to=4)
Run Code Online (Sandbox Code Playgroud)
问题有两个:
类型错误:add_edge() 获得参数“to”的多个值
有什么建议吗?
我正在使用 Pyvis 库通过 HTML 格式生成并显示 Jupyter Lab 内(在单元格中)的网络。我已成功创建该文件并在外部打开它(使用 Pyvissave_graph函数)。但是,当使用net.Network(notebook=True)Pyvis 的选项时,Jupyter 输出:
404:未找到。
您正在请求一个不存在的页面!
虽然终端(从我启动 Jupyter 的地方)输出:
404 GET /文件/文档/(Git)%20Projects/SimSalar/Jupyter%20Notebooks/TRIAL2.html?_xsrf=2%7C9665d25e%7Cbc3fea246105c6b3a9d39f6bbb10d512%7C1607563598&1609770942196 (: :1) 1.29ms 引用=http://localhost:8888/lab /tree/Documents/(Git)%20Projects/SimSalar/Jupyter%20Notebooks/Workshop%20Analysis.ipynb
来自 Pyvis 文档的获取此错误的代码非常简单:
import networkx as nx
from pyvis import network as net
g = net.Network(notebook=True)
nxg = nx.complete_graph(5)
g.from_nx(nxg)
g.show('TRIAL2.html')
Run Code Online (Sandbox Code Playgroud)
需要澄清的是,HTML 文件的创建没有任何问题(因此可以在外部打开),问题在于在 JupyterLab 内(在单元格中)显示此文件。我已多次重新安装 Jupyter,并使用了多个版本的 Jupyter Lab(2.4;2.6;现在是 3.0)。我在下面留下了完整的 conda 环境规范。我还为g.show('TRIAL2.html')操作系统模块提供了不同的函数路径。然而,它仍然不起作用。
# Name Version Build Channel
anyio 2.0.2 py39h6e9494a_3 conda-forge
appnope 0.1.2 py39h6e9494a_0 conda-forge
argon2-cffi 20.1.0 py39h5a22ff9_2 conda-forge
async_generator 1.10 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 networkx 作为网络图来可视化数据。我的数据看起来很棒,但我想添加悬停和单击事件以显示其他信息。例如,可能有一个名为“纽约”的节点,单击时将在画布一侧显示一个小表格,其中提供了诸如有多少个城市、当前人口等信息。我目前正在将 pyviz 与 networkx 一起使用。就创建图表而言,这似乎非常简单,但对于我正在寻找的用户交互类型却不是那么简单。
我还尝试了 bokeh 和plotly,但是在工作时的单击和悬停功能上,使用networkx 实现起来并不是很简单。这是我的图表的样子。我的目标是展示系统之间的关系。
我正在尝试可视化一个大型网络,pyvis并面临两个问题:
禁用物理有助于toggle_physics(False)加快渲染速度并使网络静态,但会消除布局设置。这就是禁用物理后的样子:
链接。正如您所看到的,该图很混乱并且没有结构。我想要做的是禁用物理但保留布局设置,即我希望我的图形看起来像普通网络(例如类似于 中的弹簧布局networkX),并考虑每个边的权重。有办法这样做吗?
到目前为止,我发现pyvis只有层次结构布局,这不是我需要的。我认为集成networkX布局可能会有所帮助,但我不知道如何做到这一点,因为networkX允许将布局设置为函数中的关键字参数nx.draw(),这与我的情况不兼容。这是我的代码,以防它有助于理解我的问题:
g = nx.Graph()
edges_cards = cards_weights_df.values.tolist()
g.add_weighted_edges_from(edges_cards)
net = Network("1000px", "1800px")
net.from_nx(g)
net.toggle_physics(False)
net.show("graph.html")
Run Code Online (Sandbox Code Playgroud)
感谢您的帮助!
我有一个文本语料库,我想将其中的单词共现可视化为网络。为此,我创建了一个cooc_pd包含Source、Target和列的 pd 数据框Weight。前两个是节点,Weight指示这两个节点(单词)在一组 window_size 内出现的频率。
然后,我使用以下代码来绘制网络:
import networkx as nx
from pyvis.network import Network
import pandas as pd
G = nx.from_pandas_edgelist(cooc_pd,
source = 'Source',
target = 'Target',
edge_attr='Weight')
net = Network(notebook=True)
net.from_nx(G)
net.show("example.html")
Run Code Online (Sandbox Code Playgroud)
如果我选择较低的权重包含阈值,则图中会显示许多连接。然而,在这种情况下,节点example.html不断移动并且解释很困难。有没有办法(除了增加阈值)使节点停止移动?
遇到这样的错误:本地cdn资源在jupyter-notebook中使用时在chrome/safari上有问题。它在使用 pyvis 库时出现。
net = Network(notebook=True)
net.add_nodes(
[1, 2, 3, 4, 5], # node ids
label=['Node #1', 'Node #2', 'Node #3', 'Node #4', 'Node #5'], # node labels
# node titles (display on mouse hover)
title=['Main node', 'Just node', 'Just node', 'Just node', 'Node with self-loop'],
color=['#d47415', '#22b512', '#42adf5', '#4a21b0', '#e627a9'] # node colors (HEX)
)
net.add_edges([(1, 2), (1, 3), (2, 3), (2, 4), (3, 5), (5, 1)])
net.show('graph.html')
Run Code Online (Sandbox Code Playgroud)
我尝试将浏览器切换到 dataspell
pyvis ×9
python ×8
graph ×6
networkx ×6
python-3.x ×2
click ×1
conda ×1
dataspell ×1
events ×1
jupyter-lab ×1
layout ×1
networking ×1
pandas ×1