У меня странная проблема с NetworkX.
Учитывая набор данных DS-1 , моя задача состоит в том, чтобы создать график для каждого года, который будет представлен в наборе данных. Пока проблем нет вообще. За 2013 год вот что я получаю
Мы могли бы сказать ... немного толпы.
Теперь вот моя странная проблема. Мое назначение гласит, что я должен с некоторой логикой выбрать верхние k-узлы каждого графа. Итак, поскольку у меня есть некоторые графы, которые имеют менее 5 узлов (и, согласно требованиям, это k будет значением в [0,5,10,50,200]), я подумал исключить в итерации те графы, чьи len (G ) <к.
Итак, с учетом словаря graphsPerYear (ключ: год - значение: график) ... </p>
for x in graphsPerYear:
G = graphsPerYear[x]
if len(G) < k:
print(G.nodes)
print(G.number_of_nodes())
print("Skipping year " + str(x) + " since it has " + str(len(G)) + " nodes which is less than the prompted k")
continue
Это выводит следующее:
['linear matrix inequality', 'social inequality']
2
Skipping year 2013 since it has 2 nodes which is less than the prompted k
Но изображение говорит о полной противоположности. Чего мне не хватает?
РЕДАКТИРОВАТЬ
Добавление создания графика
def createGraphPerYear(dataset, year):
insertedWords = set()
listaAnni = set(dataset['anno'].values)
grafi = dict()
for anno in listaAnni:
datasetTemporale = dataset[dataset['anno'] == anno]
G=nx.DiGraph()
for index, row in datasetTemporale.iterrows():
#Reminder: ogni row è formato da anno, keyword1, keyword2, dizionario utilizzatore keywords - numero volte
#FASE 1: AGGIUNTA DEI DUE POSSIBILI NODI
if row.keyword1 not in G:
G.add_node(row.keyword1)
if row.keyword2 not in G:
G.add_node(row.keyword2)
if not __areNodesConnected(G,row.keyword1, row.keyword2):
G.add_edge(row.keyword1,row.keyword2)
grafi[anno] = G
return grafi
def __areNodesConnected(G, nodeToCheckOne,nodeToCheckTwo):
return nodeToCheckOne in G.neighbors(nodeToCheckTwo)