Я хочу создать безмасштабную сеть по алгоритму Барабаси-Альберта, включающему рост и предпочтительное присоединение.
Я использую следующий скрипт для создания сети:
import networkx as nx
import matplotlib.pyplot as plt
n=100 #Number of nodes
m=4 #Number of initial links
seed=100
G=nx.barabasi_albert_graph(n, m, seed)
nx.draw(G)
plt.show()
Меня не устраивает расположение узлов. Я хочу, чтобы они располагались в соответствии с предопределенной схемой, напоминающей обычную сетку, но при этом сохранялись функции без масштабирования:
Я могу создать словарь позиций, который отражает мою сетку:
pos = dict( (n, n) for n in G.nodes() )
labels = dict( ((i, j), i + (n-1-j) * n ) for i, j in G.nodes() )
inds=labels.keys()
vals=labels.values()
inds.sort()
vals.sort()
pos2=dict(zip(vals,inds))
Мой вопрос: как изменить скрипт, чтобы получить график Барабаси-Альберта с позициями узлов, указанными в pos2
, то есть в соответствии с моей сеткой?