无标度关联双层网络

1、实验目的:

利用Python创建无标度关联双层网络,要求A、B层都为无标度网络并且A、B层的节点一一对应。

  • 工具:Pycharm和Python的Multinetx包、matplotlib包

2、实验过程:

首先下载multinetx包,由于pycharm自带的multinetx包运行会出现错误,所以在网上下载了multinetx包的压缩包,然后在Lib\site-packages直接解压,就可以运行使用了multinetx包的代码。其次,从终端输入节点个数N和每次加入的边数K,然后分别构造g1、g2这两个无标度网络,接着利用矩阵存储节点连接关系存放于arr[][][]数组中.最后利用multinetx包里面的函数:draw_networkx()画出这个无标度关联双层网络。

3、实验结果:

 4、源代码:

#     create by stu_kk
import numpy as np
import matplotlib.pyplot as plt
import multinetx as mx
print("输入结点个数:")
N = int(input())
print('请输入每次加入的边数k:')
k=int(input())
g1 = mx.barabasi_albert_graph(N,k)#第一个图
g2 = mx.barabasi_albert_graph(N,k)#第二个图
#定义层之间互连的网络类型,这里是无标度网络
arr = mx.lil_matrix(np.zeros((N*3,N*3)))
arr[0:  N,  N:2*N] = np.identity(N)
arr += arr.T
#设置边
mg = mx.MultilayerGraph(list_of_layers=[g1,g2],inter_adjacency_matrix=arr)
mg.set_edges_weights(inter_layer_edges_weight=4)
mg.set_intra_edges_weights(layer=0,weight=1)
mg.set_intra_edges_weights(layer=1,weight=2)
##绘制邻接矩阵和双层网络
pos = mx.get_position(mg,mx.fruchterman_reingold_layout(mg.get_layer(0)),layer_vertical_shift=1.4,layer_horizontal_shift=0.0,proj_angle=7)
mx.draw_networkx(mg,pos=pos,node_size=N,with_labels=False,
                 edge_color=[mg[a][b]['weight'] for a,b in mg.edges()],
                 edge_cmap=plt.cm.jet_r)
plt.rcParams['font.sans-serif'] = ['STSong']
plt.title("无标度双层关联网络")
plt.savefig("./twoceng.jpg")
plt.show()

 

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

stu_kk

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值