【发布时间】:2021-10-12 07:40:07
【问题描述】:
我正在尝试使用滑块显示边权重对 networkx 图结构的影响。为此,我从三列 csv 文件中导入 networkx 图,其中包含 node1、node2、权重(0 到 1)的信息。
最初,我正在考虑构建网络并绘制它的所有边缘。现在,我想在滑块中嵌入权重信息,这样当我移动滑块时,我只会得到那些权重大于滑块值的边。我遇到以下问题:
-
网络在滑块内绘制,当我在更新功能之外绘制它时,它没有更新。
-
网络在变化,但不是根据滑块值。
我已经尝试了以下代码:
import networkx as nx
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.widgets import Slider
f = open("network.csv",'r')
G = nx.Graph()
net = [line.split() for line in f]
r = 0.0
for i in net:
if float(i[6]) >= r:
G.add_edge(i[0], i[1], weight=i[6])
pos = nx.spring_layout(G)
axnet = plt.axes([0.25, 0.2, 0.65, 0.5])
new_net = Slider(axnet, 'Cf', 0.0, 1.0, 1.0)
def update(val):
r = new_net.val
edges = [(i[0],i[1]) for i in net if i[6] <= r]
G.remove_edges_from(edges)
nx.draw_random(G)
return()
new_net.on_changed(update)
# G.update()
# plt.clf()
plt.show()
【问题讨论】:
标签: python matplotlib slider networkx