2013-03-15 63 views
2

動態圖我也很難發現繪製圖結構(如樹/狀態機)一個python代碼示例,以及可以進料/流數據到,因此它繪出最近的數據。繪製在python

+0

將數據放入一個文本FIFO的風格,使用python分析它,並吸引你繪製。然後有一個cron-job每n秒執行一次,而另一些進程將數據放入文本文件中。 – 2013-03-15 13:09:06

+0

嘗試[pydot(http://code.google.com/p/pydot/) – shx2 2013-03-15 13:12:35

+1

@fredrik很好的問題是,每次有新的情節,會出現一個新的形象。我想經過調整 – Vjeetje 2013-03-15 13:48:45

回答

1

如果你有更新的文件,然後從一個單獨的進程閱讀它定期去,你可能要考慮只是寫一個簡單的Web服務器,並使用你的瀏覽器作爲用戶界面,然後使用JSON,與客戶端請求數據定期。

你有沒有考慮過使用IPython?他們的HTML Notebook對matplotlib提供了非常好的支持。你可能還要做一些JavaScript得到你想要的東西,但他們已經在主做了很多工作,有這可在開發者GitHub的賬戶之類的東西,但不是現在。

他們有一個Qt控制檯爲好,這可能是能夠更好地做你想做的。

+0

我不想依靠Web服務器上的一個窗口,我想有一個文件,我可以執行和運行。 – Vjeetje 2013-03-15 18:28:18

+0

我的網絡服務器是一個你可以執行的文件,這意味着和運行一樣的東西。 – 2013-09-26 13:33:16

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())