2014-01-15 1 views
5

У меня есть матрица смежности (т. Е. Набор весов) ориентированного графа, и я хотел бы добавить метки (соответствующие значениям весов) по краям в окончательный сюжет. Другими словами, я хотел бы получить что-то вроде this. Я использую питон igraph, и мой код выглядит следующим образом:Маркировка краев в графе с помощью python igraph

import numpy as np 
import igraph as ig 


N = 6 

adj_matr = np.random.random((N, N)) 

g = ig.Graph.Weighted_Adjacency(adj_matr.tolist(), mode=ig.ADJ_DIRECTED, attr="weight", loops=True) 

ig.plot(g, "My_Graph.svg", vertex_label=map(str, np.arange(N))) 

Я понял, как установить метки на узлах, но я не могу найти ничего конкретного о краях (добавление edge_label=... в команде участка не работает). Вы знаете, как исправить эту проблему? Заранее спасибо за вашу помощь!

+2

Какую версию вы используете? Была сделана фиксация, которая добавила поддержку краевых меток 4 месяца назад: https://github.com/igraph/igraph/commit/ab936ebd7aaaf51261a94a7ba9bc5d85ca967169 – Mailerdaimon

+0

О, я вижу, я использую старую версию. По этой причине решения, которые я нашел, не сработали. – user2983638

+0

Поскольку новая версия 0.7 пока недоступна, как я могу исправить проблему? – user2983638

ответ

3

с использованием vertex_label= эквивалентно g.vs=

так, чтобы маркировать свои края, используйте g.es=:

g.es["label"] = ["A", "B", "C"] 

или

g.es["name"] = map(str, np.arange(N)) 
+0

Кажется, что метки границ не работают в python igraph <0.7. –

+0

@IanPhillips это работает для меня. проверить это в документах: http://hal.elte.hu/~nepusz/development/igraph/tutorial/tutorial.html#setting-and-retrieving-attributes – punkrockpolly

+0

Вы используете v0.7 или выше? Как только я обновился до 0,7, появились метки границ. Кроме того, документы, на которые вы ссылаетесь, не на первый взгляд ничего не говорят о пограничных методах, только метки вершин. –