NetworkX: метки узлов рисуются случайным образом - PullRequest
0 голосов
/ 22 декабря 2018

Итак, я хотел нарисовать метки для каждого моего узла (1-20), но почему-то эти метки просто случайным образом нарисованы на графике (проверьте экран ниже).

network = nx.DiGraph()
counter = 0
for i in range(1,21):
    network.add_node(i, label = str(i))
with open('mreza.csv', newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter=';', quotechar='|')
    for row in reader:
        for item in row:
            item = item.strip('(').strip(')').split(',')
            startVertex = int(item[0])
            endVertex = int(item[1])
            network.add_weighted_edges_from([(startVertex, endVertex, matchingArray[counter])])
            counter = counter + 1
pos=nx.spring_layout(network)
nx.draw(network)
labels = nx.draw_networkx_labels(network,pos,font_size=10)
plt.show()

nan

1 Ответ

0 голосов
/ 22 декабря 2018

В вашем коде есть несколько проблем:

  • Узлы и ребра создаются отдельно.Метки, которые вы считаете случайными, связаны с узлами, которые вы создали в первом цикле (я полагаю).
  • draw можно вызывать с дополнительным аргументом для рисования меток, т. Е. nx.draw(G, pos=pos, with_labels=True, font_size=10).
  • add_weighted_edges_from должен быть задан контейнер с ребрами.Вы как будто злоупотребляете этой функцией, чтобы добавить ребра.Если вы настаиваете на использовании цикла, рассмотрите возможность использования add_edge .

Учитывая, что вы загружаете свои данные из csv, я бы вообще не зацикливался.Вместо этого я загружаю свои данные в pandas dataframe, а затем использую from_pandas_edgelist следующим образом:

import pandas as pd
import networkx as nx

df = pd.read_csv('mreza.csv')
G = nx.from_pandas_edgelist(df, create_using=nx.DiGraph)
pos = nx.spring_layout(G)
nx.set_node_attributes(G, pos, 'pos')

Имейте в виду, что вашему df необходимо иметь два обязательных столбца: source и target.Предварительно обработайте ваш df при необходимости.Добавьте weight и все готово.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...