尝试编写一个应用程序,根据用户通过简单的GUI输入的参数重复创建不同的图形。所有图形以及一些描述它们的文本需要显示在一个单一的、同一个Jupiter单元格/窗口/图表中,每个新的用户输入都会重新绘制。
下面的代码是一个简单的Jupiter示例,说明了要执行的操作:
import random
import networkx as nx
import matplotlib.pyplot as plt
while input():
i = random.randint(5, 10)
G = nx.complete_graph(i)
nx.draw_networkx(G, with_labels=True)
plt.show()
print("Nodes data: ", G.nodes.data())
print("Connected: ",list(nx.connected_components(G)))
在Jupiter中,运行此循环会在输出中产生一系列文本和图形图像:
Nodes data: [(0, {}), (1, {}), (2, {}), (3, {}), (4, {}), (5, {}), (6, {}), (7, {}), (8, {}), (9, {})]
Connected: [{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}]
Nodes data: [(0, {}), (1, {}), (2, {}), (3, {}), (4, {})]
Connected: [{0, 1, 2, 3, 4}]
等等......
是否可以在单个Jupiter单元格或其他Python GUI框架的窗口中重绘NetworkX + Matplotlib图形和附带的文本?
Jupiter对我来说不是绝对的要求,任何其他Python GUI也可以。
谢谢!
1条答案
按热度按时间lsmd5eda1#
这绝对是可能的(假设我正确理解了您想要做什么)。我建议使用ipywidgets来处理GUI部分。
参见以下示例:
编辑:
如果您希望保留图形的先前迭代,您可以将图形存储在列表中,并在每次用户与小工具交互时创建一个大小为(1,N_graphs)的新图形。有关图形的信息可以显示在子图的标题中。请参见以下示例: