Как я могу визуализировать график в (интерактивном) 3D с помощью Python? - PullRequest
4 голосов
/ 13 июля 2011

У меня есть график на 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. Если бы вы могли дать мне несколько рабочих примеров, это могло бы быть лучшим решением.

Ответы [ 2 ]

2 голосов
/ 13 июля 2011

Я еще не использовал это сам (кроме запуска сценариев примеров), но mayavi2 выглядит многообещающе. Он поставляется в комплекте с дистрибутивом enthought python.

Кроме того, немного темы, поскольку это не в вашем вопросе, но networkx очень приятно, если вы работаете с графиками в Python.

Надеюсь, это немного поможет.

2 голосов
/ 13 июля 2011

Когда вы смотрели на matplotlib, вы видели mplot3d?Это может быть то, что вам нужно.

MPlot3D

Если нет, извините, я, вероятно, не могу помочь больше, чем это.

...