Рисование многослойной сети

Я хочу нарисовать многослойную сеть с помощью Python. Ожидаемый график выглядит так: Рисование многослойной сети

Я хочу использовать Python Multinetx для рисования этой сети. Это моя команда:

import Multinetx as mx
import matplotlib.pyplot as plt
mg = mx.MultilayerGraph(list_of_layers=[mst_pearson,mst_kendall,mst_tail])
plt.axis('off')
pos = mx.get_position(mg,mx.fruchterman_reingold_layout(mst_pearson),
                  layer_vertical_shift=0.2,
                  layer_horizontal_shift=0.0,
                  proj_angle=47)
mx.draw_networkx(mg,pos=pos,node_size=50,with_labels=False,
             edge_color=[mg[a][b]['weight'] for a,b in mg.edges()],
             edge_cmap=plt.cm.jet_r)
plt.show()

mst_pearson, mst_kendall, mst_tail - мои исходные сети, я хочу использовать их для создания трехуровневой многоуровневой сети. Но ошибка в том, что:

KeyError                                  Traceback (most recent call last)
<ipython-input-9-560c2e877b57> in <module>()
      4          layer_vertical_shift=0.2,
      5          layer_horizontal_shift=0.0,                                                     
----> 6                       proj_angle=50)
  7 mx.draw_networkx(mg,pos=pos,node_size=50,with_labels=False,
  8                                  edge_color=[mg[a][b]['weight'] for a,b in mg.edges()],

 C:\Users\wenzh\multinetx\draw.py in get_position(G, base_pos, 
       layer_vertical_shift, layer_horizontal_shift, proj_angle)
      70 
      71     for j in range(N):
 ---> 72         pos[j][0] *= math.cos(proj_angle)
      73         pos[j][1] *= math.sin(proj_angle)
      74 

 KeyError: 0

Что означает эта ошибка? Как я мог это исправить?

Судя по сообщению об ошибке, Multinex ожидает, что идентификаторы узлов будут последовательными целыми числами (например, range(0,N)). Я готов поспорить, что узлы в вашей сети не являются целыми числами.

Paul Brodersen 22.03.2018 17:43

Да, идентификаторы узлов сети не целые, а строковые.

taylor 24.03.2018 03:23
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
2
853
0

Другие вопросы по теме