2011-07-13 11 views
4

私はこの1つのようなPythonでグラフを持っている:グラフを(インタラクティブ)3DでPythonで可視化するにはどうすればよいですか?

# Each element is a tuple with coordinates (x,y,z). 
# The index is the id of the vertex 
vertexList = [(0,0,0),(1,0,0),(1,1,0),(0,1,0), 
       (0,0,1),(1,0,1),(1,1,1),(0,1,1)] 

# Each element is a tuple with the vertex-ids and a weight (vertexId1, vertexId2, weight) 
edgeList = [(0,1,1), (1,2,1), (2,3,1), (3,0,1), 
       (0,4,1), 
       (4,5,1), (5,6,1), (6,7,1), (7,4,1)] 
graph = (vertexList, edgeList) 

これは小さな一例です。私が書いたアプリケーションは約100の頂点と300の辺を持つグラフを使います。

これはPythonで、好ましくはUbuntuで利用可能なライブラリを使ってこれを視覚化したいと思います。 3D視覚化でグラフを動かすことができれば素晴らしいことでしょう。私はUBIGRAPHを使用現時点では、これまで

何をやったか

。可視化との相互作用が非常に良いですが、私は頂点の座標を指定することはできません。

def visulizeGraph(Graph): 
    vertexList, edgeList = Graph 
    server_url = 'http://127.0.0.1:20738/RPC2' 
    server = xmlrpclib.Server(server_url) 
    G = server.ubigraph; 

    G.clear() 
    for identifier, vertex in enumerate(vertexList): 
     G.new_vertex_w_id(identifier) 
    for vertex1, vertex2, weight in edgeList: 
     x1, y1, z1 = vertexList[vertex1] 
     x2, y2, z2 = vertexList[vertex2] 

     G.new_edge(vertex1, vertex2) 

matplot

私はmatplotlibを見つけましたが、その非常に大きなました。私は好きなことをする例は見つけられませんでしたが、私はそれを見逃したかもしれません。 Ubuntuで利用可能です。

matplotと同じ問題がVTK。あなたが私にいくつかの実例を与えることができれば、それは最善の解決策かもしれません。

答えて

2

matplotlibを見ると、mplot3dが見えましたか?これはあなたが必要とするものかもしれません。

MPlot3D

、私は申し訳ありませんされていない場合、私はおそらくそれよりも多くのを助けることはできません。

2

私はまだこれを使用していませんが(例のスクリプトを実行する以上)、mayavi2は有望です。それはenthought pythonディストリビューションにバンドルされています。

また、あなたの質問には少し話題がありますが、networkxは、あなたがPythonでグラフを使って作業しているなら、かなりいいです。

これは少し役に立ちます。

+0

「Mayavi」という名前が商標権侵害として挑戦される可能性があるとは考えられませんが、Maya 3Dソフトウェアパッケージを使用するとどうなりますか?それとも問題にならないほど大きく違うのですか? – JAB

関連する問題