2017-02-17 27 views
0

Расширение на this question, возможно ли отображать только значения атрибутов края?значения атрибутов края отображения в сетевом графике

Например, в настоящее время с помощью

paragraph = """ 
John is a computer scientist. John eats mango. John has an elder sister named Mary. 
""" 

mg.make_graph(paragraph) #This is my custom method, which creates the following graph 

nx.draw(mg,pos=graphviz_layout(mg,prog='neato'),arrows=True,with_labels=True,alpha=0.5,linewidths=0.5,scale=2) 
nx.draw_networkx_edge_labels(mg, pos = graphviz_layout(mg, prog='neato'),labels = nx.get_edge_attributes(mg,'label')) 
plt.show() 

Я получаю эту Output

Однако я хочу только значение атрибута, а не сам ключ. (Слово «метка» не должно быть напечатано.

Я понимаю, что это потому, что nx.get_edge_attributes(mg,'label') возвращает словарь, но с использованием nx.get_edge_attributes(mg,'label').values() в параметре labels, также не приводит к графику отображаются только значениями.

Как я могу добиться этого (то есть, только это значение должно быть напечатано в крае, а не ключ метки)

ответ

-1

Как о чем-то вдоль линий:.

labels = {e: mg.get_edge_data(e[0], e[1])["label"] for e in mg.edges()} 
nx.draw_networkx_edge_labels(mg, pos=graphviz_layout(mg, prog='neato'), edge_labels=labels) 

labels должен быть словарь с краями как ключи и метки, которые вы хотите нарисовать как значения. Обратите внимание, что я поставил аргумент, содержащий labels, как edge_labels, так как это имя в версиях 1.10 и 2. Но я думаю, что вы можете адаптироваться, если у вас установлена ​​более старая версия.

+0

Ошибка в меток = {e: e ["label"] для e в mg.edges()} TypeError: индексы кортежей должны быть целыми числами, а не str –

+0

да, это не был точный ответ. Но попробуйте следующее: 'mg.get_edge_data (e) [" label "]' или 'mg [e [0]] [e [1]] [" label "]' вместо 'e [" label "]'. –

+0

не работает, я думаю, сама функция принимает словарь в качестве параметра. –