2015-03-02 2 views
1

Это мой код в Python 2.7.9:я не могу видеть этикетки в NetworkX диаграмме

import matplotlib.pyplot as plt 
import networkx as nx 
socialNetworl = nx.Graph() 
socialNetworl.add_nodes_from([1,2,3,4,5,6]) 
socialNetworl.add_edges_from([(1,2),(1,3),(2,3),(2,5),(2,6)]) 
nx.draw(socialNetworl, node_size = 800, node_color="cyan") 
plt.show() 

Но я не могу видеть узел метки. Есть ли код кода, который я забыл?

+0

возможный дубликат [Заговор NetworkX график с метками узлов по умолчанию для имени узла] (http://stackoverflow.com/questions/28533111/plotting-networkx-graph-with -node-labels-default-to-node-name) – Joel

ответ

2

Просто добавьте with_labels=True в код.

import matplotlib.pyplot as plt 
import networkx as nx 
socialNetworl = nx.Graph() 
socialNetworl.add_nodes_from([1,2,3,4,5,6]) 
socialNetworl.add_edges_from([(1,2),(1,3),(2,3),(2,5),(2,6)]) 
nx.draw(socialNetworl, node_size = 800, node_color="cyan", with_labels = True) 
plt.show() 

enter image description here

Если вы хотите изменить ярлыки, создать Dict с этикетками и передать labels=theLabelDict в nx.draw:

import matplotlib.pyplot as plt 
import networkx as nx 
socialNetworl = nx.Graph() 
socialNetworl.add_nodes_from([1,2,3,4,5,6]) 
socialNetworl.add_edges_from([(1,2),(1,3),(2,3),(2,5),(2,6)]) 
labels = {1:'King Arthur', 2:'Lancelot', 3:'shopkeeper', 4:'dead parrot', 5:'Brian', 6:'Sir Robin'} 
nx.draw(socialNetworl, node_size = 800, node_color="cyan", labels=labels, with_labels = True) 
plt.show() 

enter image description here

+0

У меня проблема: в моем случае я получаю имена из базы данных, ошибка возникает, когда есть имя, содержащее букву Ñ, например, фамилию BOLAÑOS, я использовал # - * - кодирование: utf8 - * - но isn ' достаточно. Я прочитал, что matplotlib нуждается в файле, который должен содержать специальные символы. Заранее спасибо. –

3

Вы можете нарисовать метки узлов отдельно с помощью nx.draw_networkx_labels (а также управлять множеством других параметров ярлыка). Например, после добавления узлов и ребер, вы могли бы написать:

pos=nx.spring_layout(socialNetworl) 
nx.draw(socialNetworl, pos=pos, node_size = 800, node_color="cyan") 
nx.draw_networkx_labels(socialNetworl, pos=pos); 
plt.show() 

Что привлекает:

enter image description here

+0

Я занимаюсь диаграммой социальной сети, я попытался изменить метку чисел по меткам имен, но у меня появились ошибки. Можно ли изменить числа на имена и фамилии? например 5 до Фреда Кеннеди? –

+1

@ajcr Вы можете упростить свой код. Нет необходимости в вызове 'nx.draw_networkx_labels'. Просто сделайте 'nx.draw' и передайте его' with_labels = True' – Joel

+1

@ gs_developer_user3605534 Мой ответ на http://stackoverflow.com/questions/28533111/plotting-networkx-graph-with-node-labels-defaulting-to-node -name/28533293 # 28533293 дает возможность изменить ярлык. Обратите внимание, что вы можете сделать это всего лишь в «nx.draw», вместо добавления «nx.draw_networkx_labels» – Joel

Смежные вопросы