#python #networkx
#python #networkx
Вопрос:
Я пытаюсь создать сетевое представление группы учетных записей Twitter, используя данные, которые я собрал за последние несколько месяцев. Я использую словарь словарей для представления матрицы смежности с взвешенными направленными связями между учетными записями, где значения во внутреннем словаре являются этими числовыми весами. Однако проблема, с которой я продолжаю сталкиваться, возникает, когда я запускаю nx.draw()
свой набор данных.
def makeDiGraph(adjacencyMatrix = None):
G = nx.DiGraph()
for i in adjacencyMatrix:
for j in adjacencyMatrix[i]:
if adjacencyMatrix[i][j] > 0:
G.add_edge(i, j)
nx.draw(G)
plt.show()
Когда я запускаю этот код, используя мой dict of dicts, я не получаю ошибок, но вместо этого я получаю то, что кажется каким-то бесконечным циклом в моей программе. Поскольку цикл, по-видимому, происходит внутри nx.draw()
функции (как определено моим использованием операторов печати для определения того, где управление останавливается), я не могу много сделать для отладки, чтобы выяснить, в чем именно проблема. происходит. Я экспериментировал с добавлением и удалением следующей строки после создания экземпляра DiGraph()
объекта, чтобы разместить узлы перед реализацией ребер, но я все еще сталкиваюсь с той же проблемой.
for i in adjacencyMatrix:
G.add_node(i)
Я полагаю, что проблема возникает где-то в том, как я размещаю ребра, но я не уверен, что не так с моим кодом.
Вот пример подмножества моих данных:
{'@RepFinkenauer': {'@RepFinkenauer': 0, '@RepLindaSanchez': 11, '@RepKatieHill': 0, '@RepTimBurchett': 0, '@SenBooker': 13, '@RepSylviaGarcia': 15, '@RepDelBene': 6, '@amprog': 4, '@RepMcNerney': 0, '@RepJuanVargas': 18}, '@RepLindaSanchez': {'@RepFinkenauer': 0, '@RepLindaSanchez': 11, '@RepKatieHill': 0, '@RepTimBurchett': 0, '@SenBooker': 13, '@RepSylviaGarcia': 15, '@RepDelBene': 6, '@amprog': 4, '@RepMcNerney': 0, '@RepJuanVargas': 18}, '@RepKatieHill': {'@RepFinkenauer': 0, '@RepLindaSanchez': 11, '@RepKatieHill': 0, '@RepTimBurchett': 0, '@SenBooker': 13, '@RepSylviaGarcia': 15, '@RepDelBene': 6, '@amprog': 4, '@RepMcNerney': 0, '@RepJuanVargas': 18}, '@RepTimBurchett': {'@RepFinkenauer': 0, '@RepLindaSanchez': 11, '@RepKatieHill': 0, '@RepTimBurchett': 0, '@SenBooker': 13, '@RepSylviaGarcia': 15, '@RepDelBene': 6, '@amprog': 4, '@RepMcNerney': 0, '@RepJuanVargas': 18}, '@SenBooker': {'@RepFinkenauer': 0, '@RepLindaSanchez': 11, '@RepKatieHill': 0, '@RepTimBurchett': 0, '@SenBooker': 13, '@RepSylviaGarcia': 15, '@RepDelBene': 6, '@amprog': 4, '@RepMcNerney': 0, '@RepJuanVargas': 18}, '@RepSylviaGarcia': {'@RepFinkenauer': 0, '@RepLindaSanchez': 11, '@RepKatieHill': 0, '@RepTimBurchett': 0, '@SenBooker': 13, '@RepSylviaGarcia': 15, '@RepDelBene': 6, '@amprog': 4, '@RepMcNerney': 0, '@RepJuanVargas': 18}, '@RepDelBene': {'@RepFinkenauer': 0, '@RepLindaSanchez': 11, '@RepKatieHill': 0, '@RepTimBurchett': 0, '@SenBooker': 13, '@RepSylviaGarcia': 15, '@RepDelBene': 6, '@amprog': 4, '@RepMcNerney': 0, '@RepJuanVargas': 18}, '@amprog': {'@RepFinkenauer': 0, '@RepLindaSanchez': 11, '@RepKatieHill': 0, '@RepTimBurchett': 0, '@SenBooker': 13, '@RepSylviaGarcia': 15, '@RepDelBene': 6, '@amprog': 4, '@RepMcNerney': 0, '@RepJuanVargas': 18}, '@RepMcNerney': {'@RepFinkenauer': 0, '@RepLindaSanchez': 11, '@RepKatieHill': 0, '@RepTimBurchett': 0, '@SenBooker': 13, '@RepSylviaGarcia': 15, '@RepDelBene': 6, '@amprog': 4, '@RepMcNerney': 0, '@RepJuanVargas': 18}, '@RepJuanVargas': {'@RepFinkenauer': 0, '@RepLindaSanchez': 11, '@RepKatieHill': 0, '@RepTimBurchett': 0, '@SenBooker': 13, '@RepSylviaGarcia': 15, '@RepDelBene': 6, '@amprog': 4, '@RepMcNerney': 0, '@RepJuanVargas': 18}}
Похоже, проблема заключается в размере набора данных, поскольку я не сталкиваюсь с такой же проблемой при запуске кода для этого меньшего набора данных (1/50 размера реального набора данных).
Комментарии:
1. Что заставляет вас думать, что это бесконечный цикл? Это просто занимает много времени? Сколько узлов / ребер в вашем графике? Если вы уменьшите количество узлов до <100, он будет отображаться?
2. Не могли бы вы привести минимальный пример, который можно воспроизвести??
3. Проблема, вероятно, в том, что сеть очень большая, и рисование занимает слишком много времени. Я очень сомневаюсь, что здесь есть бесконечный цикл.
4. на второй взгляд, это не бесконечный цикл! проблема, однако, в том, что для создания очень переполненного холста требуется много времени, которое затем перестает отвечать на запросы и приводит к сбою приложения «python». не уверен, следует ли мне использовать другую функцию рисования