标签: pyvis

在 pyvis 中我总是收到此错误:“AttributeError:'NoneType'对象没有属性'render'”

我想使用最新版本的 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,但没有任何结果。

python attributeerror networkx python-3.x pyvis

15
推荐指数
4
解决办法
1万
查看次数

是否可以使用 PyVis 和 Python 显示网络边缘的权重?

我已阅读文档,并且确实添加了具有属性的边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 的边有权重。

python networking graph graph-visualization pyvis

7
推荐指数
1
解决办法
1万
查看次数

将 pyvis 图导出为矢量或 .png 图像。有办法吗?

我正在寻找一种方法将 pyvis 生成的巨大图形导出为矢量图形 .svg 或至少 .png 格式。有办法做到吗?到目前为止,我只找到了保存/导出为 .html 文件的选项。

提前致谢。

python graph pyvis

7
推荐指数
1
解决办法
2800
查看次数

如何在 PyVis 上绘制定向边缘

我正在尝试用 pyvis 绘制一个定向图。在文档中,他们建议使用以下命令来创建定向边缘:

net.add_edge(4,1,from=1,to=4)
Run Code Online (Sandbox Code Playgroud)

问题有两个:

  1. 我收到这个错误

类型错误:add_edge() 获得参数“to”的多个值

  1. from是 python 关键字,因此不能用作参数。

有什么建议吗?

python data-visualization graph networkx pyvis

6
推荐指数
1
解决办法
7781
查看次数

在 Jupyter Lab 单元格内显示 Pyvis HTML 时出错

我正在使用 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)

python networkx conda jupyter-lab pyvis

5
推荐指数
1
解决办法
6150
查看次数

与networkx一起使用的包可以处理可点击的节点

我正在尝试使用 networkx 作为网络图来可视化数据。我的数据看起来很棒,但我想添加悬停和单击事件以显示其他信息。例如,可能有一个名为“纽约”的节点,单击时将在画布一侧显示一个小表格,其中提供了诸如有多少个城市、当前人口等信息。我目前正在将 pyviz 与 networkx 一起使用。就创建图表而言,这似乎非常简单,但对于我正在寻找的用户交互类型却不是那么简单。

我还尝试了 bokeh 和plotly,但是在工作时的单击和悬停功能上,使用networkx 实现起来并不是很简单。这是我的图表的样子。我的目标是展示系统之间的关系。

pyvis图

python events click networkx pyvis

5
推荐指数
2
解决办法
2619
查看次数

pyvis:有没有办法在不丢失图形布局的情况下禁用物理?

我正在尝试可视化一个大型网络,pyvis并面临两个问题:

  1. 超长渲染
  2. 网络不稳定,即节点移动太快,很难与这样的网络交互。

禁用物理有助于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)

感谢您的帮助!

python layout graph networkx pyvis

5
推荐指数
1
解决办法
3297
查看次数

Pyvis 网络不断前进

我有一个文本语料库,我想将其中的单词共现可视化为网络。为此,我创建了一个cooc_pd包含SourceTarget和列的 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不断移动并且解释很困难。有没有办法(除了增加阈值)使节点停止移动?

graph networkx python-3.x pandas pyvis

3
推荐指数
1
解决办法
4001
查看次数

Dataspell 输出以下错误:在 jupyter-notebook 中使用时,本地 cdn 资源在 chrome/safari 上有问题

遇到这样的错误:本地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

python graph jupyter-notebook pyvis dataspell

3
推荐指数
1
解决办法
5365
查看次数