在python中绘制动态图

时间:2013-03-15 13:06:13

标签: python drawing

我很难找到一个python代码示例来绘制图形结构(如树/状态机),并且您可以提供/流式传输数据 to,以便绘制最新数据。

2 个答案:

答案 0 :(得分: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())

答案 1 :(得分:1)

如果您要更新文件,然后定期从单独的进程中读取它,您可能要考虑只编写一个简单的Web服务器并将浏览器用作UI,然后使用JSON,客户端请求数据周期性。

您是否考虑过使用IPython?他们的HTML Notebook非常支持使用matplotlib进行渲染。你可能仍然需要做一些JavaScript才能得到你想要的东西,但是他们已经完成了很多工作,可以在开发人员的GitHub帐户和东西上找到,但是还没有掌握。

他们也有一个Qt控制台,可以更好地做你想做的事。