我很难找到一个绘制图形结构(如树/状态机)的python
代码示例,您可以将数据输入/流式传输到其中,以便绘制最新数据。
问问题
1578 次
2 回答
2
如果我理解正确,这段代码应该可以解决问题:
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
import threading
import time
import networkx as nx # http://networkx.github.com/
import xdot # http://code.google.com/p/jrfonseca/wiki/XDot
import gtk
class MyClass(threading.Thread):
def __init__(self):
threading.Thread.__init__(self)
self.graph = nx.DiGraph(name="my_tree")
self.xdot = xdot.DotWindow()
self.xdot.connect('destroy', gtk.main_quit)
def run(self):
gtk.main()
def add_node(self, parent, node):
self.graph.add_edge(parent, node)
self.xdot.set_dotcode(nx.to_agraph(self.graph).to_string())
self.xdot.show_all()
def main(argv=None):
gtk.gdk.threads_init()
my_class = MyClass()
my_class.start()
my_class.add_node(1, 2)
time.sleep(0.5)
my_class.add_node(1, 3)
time.sleep(0.3)
my_class.add_node(2, 4)
time.sleep(1.3)
my_class.add_node(2, 5)
my_class.add_node(1, 6)
if __name__ == "__main__":
sys.exit(main())
于 2013-03-15T21:27:15.953 回答
1
如果您要更新文件,然后定期从单独的进程中读取它,您可能需要考虑只编写一个简单的 Web 服务器并将您的浏览器用作 UI,然后使用 JSON,客户端定期请求数据。
你考虑过使用IPython吗?他们的 HTML Notebook 对使用matplotlib进行渲染有很好的支持。你可能仍然需要做一些 JavaScript 来获得你想要的东西,但是他们已经在那里做了很多工作,这些工作可以在开发者的 GitHub 帐户和其他东西上找到,但还没有在 master 中。
他们也有一个 Qt 控制台,它可能能够更好地执行您想要的操作。
于 2013-03-15T15:14:57.683 回答