如何使用Python在(交互式)3D中可视化图形?

时间:2011-07-13 09:29:43

标签: python graph visualization vtk graph-visualization

我在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。

VTK

与matplot相同的问题。如果你能给我一些有用的例子,那可能是最好的解决方案。

2 个答案:

答案 0 :(得分:2)

当你看到matplotlib时,你看到mplot3d了吗?这可能就是你所需要的。

MPlot3D

如果没有,我很抱歉,我可能无能为力。

答案 1 :(得分:2)

我自己还没有使用它(除了运行示例脚本),但mayavi2看起来很有希望。它与enthought python发行版捆绑在一起。

此外,还有一些主题,因为它不在您的问题中,但networkx非常好,如果您在python中使用图形。

希望这有点帮助。