Loading...
image
xy

No pains, no gains.

Pymnet 笔记:使用Python 绘制多层网络

xy    2020-02-13 08:31

        之前,写过一个类似的博客使用 multinetx 绘制 multiplex network,感兴趣的小伙伴可以翻看: 基于Python的多层网络可视化包Multinetx
​​介绍
        根据官方手册的介绍,pymnet 库有如下功能:
        pymnet 库可以生成多层和多路复用网络的图像。 库中绘制网络图像的主要使用了 Matplotlib , 支持矢量格式(例如 pdf 或 svg)及光栅格式(例如 png)。 此外还可以使用 Javascript 和 d3.js 绘制网络图片,这样就可以使用浏览器查看这些交互式图形了。

安装
        进入:https://bitbucket.org/bolozna/multilayer-networks-library/src/default/ 下载之后,解压,然后可以使用
python setup.py install
        或者简单粗暴地直接 放入 python_path -> Lib -> site-packages 里面。

使用
        新建 test.py, 粘贴如下示例代码:
from pymnet import *
fig=draw(er(10,3*[0.4]),layout="spring")
fig.savefig('test.pdf')
        打开生成的 pdf, 效果如下:
Fig.1  3层随机网络可视化结果

        看,是否似曾相似 对,就是 Kivela 的 Multilayer networks 综述里的多层网络可视化效果,支持 aspect 的那种。
        使用的时候,需要保存到本地pdf,如果按照官方提示给出的
from pymnet import *
net = models.er_multilayer(5,2,0.2)
fig = draw(net, show=True)
是看不出来结果的。并且控制台会提示:UserWarning: Matplotlib is currently using agg, which is a non-GUI backend, so cannot show the figure. % get_backend())

真实网络数据集可视化
        这个可视化工具支持 邻接矩阵,以 bkfrat.dat 数据集为例,输入如下代码:
from pymnet import *

net = read_ucinet("bkfrat.dat", couplings="none")
net = transforms.threshold(net, 4)
fig = draw(net,
           show=True,
           layout="spring",
           layerColorRule={},
           defaultLayerColor="gray",
           nodeLabelRule={},
           edgeColorRule={"rule": "edgeweight",
                          "colormap": "jet", "scaleby": 0.1}
           )
fig.savefig('bkfrat.pdf')
得到的结果如下:
Fig.2  bkfrat.dat 数据集的可视化效果
参考资料:
  1. Multilayer Networks Library for Python (Pymnet). http://www.mkivela.com/pymnet/index.html
  2. UCINET IV Datasets. http://vlado.fmf.uni-lj.si/pub/networks/data/ucinet/ucidata.htm#bkfrat



 
Last Modified: 2020-02-22 00:01
Views: 82

[[total]] comments

Post your comment
  1. [[item.time]]
    [[item.user.username]] [[item.floor]]Floor
  2. Click to load more...
  3. Post your comment