4

我在 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 相同的问题。如果你能给我一些工作示例,它可能是最好的解决方案。

4

2 回答 2

2

我自己还没有使用过这个(除了运行示例脚本之外),但mayavi2看起来很有希望。它与经过深思熟虑的 python 发行版捆绑在一起。

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

希望这个对你有帮助。

于 2011-07-13T13:42:05.260 回答
2

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

MPlot3D

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

于 2011-07-13T12:18:45.050 回答