How to update a NetworkX plot in real-time?(如何实时更新NetworkX绘图?)
本文介绍了如何实时更新NetworkX绘图?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正尝试在画布中使用matplotlib更新networkx图,但它每次都会向图中添加一个新的图,而不是更新下面的图,我必须添加对nx.draw_networkx()
函数的调用才能使其更新,我不确定这是否是问题的一部分。
示例代码:
import psutil
import tkinter as tk
from tkinter import *
import networkx as nx
import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import (
FigureCanvasTkAgg
)
root = Tk()
root.title("Hello")
mlist = psutil.net_connections(kind="all")
fig = plt.figure(frameon=True, figsize=(5,1), dpi=100)
canvas = FigureCanvasTkAgg(fig, root)
Node = nx.Graph()
for v, val in enumerate(mlist):
if val[4] != () and val[4][0] != "127.0.0.1":
print(str(val[4][0]) + " - " + str(val[6]))
print(psutil.Process(val[6]).name())
Node.add_node(str(val[4][0]))
Node.add_edge(str(val[4][0]), "localhost")
plt.gca().set_facecolor("grey")
fig.set_facecolor("black")
nx.draw_networkx(Node, pos=nx.spring_layout(Node, 25), alpha=1,
with_labels=False, node_size=100, node_color="green")
canvas.draw()
canvas.get_tk_widget().pack(side=TOP, fill=BOTH, expand=True)
def Add():
Node.add_node(str("LOL"))
nx.draw_networkx(Node, pos=nx.spring_layout(Node, 25), alpha=1,
with_labels=False, node_size=100,
node_color="blue")
canvas.draw()
ex = tk.Button(root, text="Update", command=lambda: Add())
ex.pack(side="bottom")
root.mainloop()
推荐答案
我对这个问题here进行了长时间的搜索后,找到了类似的问题和答案here,但为了清楚起见,并且因为我还使用了其他地方的代码,所以您必须使用G.clear()
从图表中清除当前节点和边。
plt.clf()
从画布中清除图形,然后canvas.draw
将新图形或更新图形绘制到画布上。
以上3个功能的使用将取决于您的个人使用。
这篇关于如何实时更新NetworkX绘图?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
沃梦达教程
本文标题为:如何实时更新NetworkX绘图?
基础教程推荐
猜你喜欢
- 如何在Python中绘制多元函数? 2022-01-01
- 症状类型错误:无法确定关系的真值 2022-01-01
- 使用Python匹配Stata加权xtil命令的确定方法? 2022-01-01
- 合并具有多索引的两个数据帧 2022-01-01
- 将 YAML 文件转换为 python dict 2022-01-01
- Python 的 List 是如何实现的? 2022-01-01
- 哪些 Python 包提供独立的事件系统? 2022-01-01
- 使用 Google App Engine (Python) 将文件上传到 Google Cloud Storage 2022-01-01
- 使 Python 脚本在 Windows 上运行而不指定“.py";延期 2022-01-01
- 如何在 Python 中检测文件是否为二进制(非文本)文 2022-01-01