0

我想根据连接数使节点大小不同。但是,pyvis 中似乎不存在此功能?也许我遗漏了一些东西,或者它可能不被完全支持。

这是我的示例代码:

import networkx as nx
import matplotlib.pyplot as plt
from pyvis.physics import Physics
from pyvis.network import Network

G = nx.Graph()
G.add_edges_from([(1,2), (2,3), (2,4), (3,4)])

d = dict(G.degree)

print(d.keys())
print([v * 100 for v in d.values()])

nx.draw(G, nodelist=d.keys(), node_size=[v * 100 for v in d.values()])
plt.show()

G2 = Network(height="1500px", width="75%",bgcolor="#222222",font_color="white",directed=True)
G2.from_nx(G)
G2.show("network_map.html")
4

1 回答 1

1

set_node_attributes您可以使用networkx中的函数在几行内完成此操作。它允许您添加/修改节点属性(请参阅此处的更多信息)。请参阅下面我使用它来更改节点大小的地方:

import networkx as nx
import matplotlib.pyplot as plt
from pyvis.physics import Physics
from pyvis.network import Network

G = nx.Graph()

G.add_edges_from([(1,2), (2,3), (2,4), (3,4)])

scale=10 # Scaling the size of the nodes by 10*degree
d = dict(G.degree)

#Updating dict
d.update((x, scale*y) for x, y in d.items())

#Setting up size attribute
nx.set_node_attributes(G,d,'size')

G2 = Network(height="1500px", width="75%",bgcolor="#222222",font_color="white",directed=True)
G2.from_nx(G)
G2.show("network_map.html")

输出给出:

在此处输入图像描述

于 2021-12-21T18:57:28.883 回答