gpt4 book ai didi

Python:如何生成具有预定义节点位置的无标度网络?

转载 作者:太空宇宙 更新时间:2023-11-04 10:15:47 24 4
gpt4 key购买 nike

我想按照涉及增长优先依恋Barabasi-Albert算法生成无标度网络。

我使用以下脚本创建网络:

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()

这会产生以下输出: enter image description here

我对节点的定位方式不满意。我希望它们根据类似于规则网格的预定义方案定位,同时仍保持无标度特征:

enter image description here

我可以创建一个反射(reflect)我的网格的位置字典:

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))

我的问题:如何修改脚本以获得 Barabasi-Albert 图,其节点位置在 pos2 中指定,也就是说根据我的网格?

最佳答案

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)

ncols = 10
pos = {i : (i % ncols, (n-i-1) // ncols) for i in G.nodes()}
nx.draw(G, pos, with_labels=True)
plt.show()

enter image description here


转置模块和整数除法运算符转置行和列:

pos = {i : (i // ncols, (n-i-1) % ncols) for i in G.nodes()}

产量

enter image description here


将 y 值从 (n-i-1) % ncols 更改为 ncols - (n-i-1) % ncols 围绕水平轴翻转图像:

pos = {i : (i // ncols, ncols - (n-i-1) % ncols) for i in G.nodes()}

关于Python:如何生成具有预定义节点位置的无标度网络?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35479686/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com