❶ 如何用python实现网络图节点权重的添加以及如何把一个非连通的大网络图分成多个小网络图
networkx是python的一个库,它为图的数据结构提供算法、生成器以及画图工具。近日在使用ryu进行最短路径获取,可以通过该库来简化工作量。该库采用函数方式进行调用相应的api,其参数类型通常为图对象。
函数API的调用,按照以下步骤来创建构建图:
1.networkx的加载
在python中调用networkx通常只需要将该库导入即可
import networkx as nx
2.图对象的创建
networkx提供了四种基本图对象:Graph,DiGraph,MultiGraph,MultiDiGraph。
使用如下调用方式,可以创建以上四种图对象的空图。
G=nx.Graph()
G=nx.DiGraph()
G=nx.MultiGraph()
G=nx.MultiDiGraph()
在 networkx中,图的各个节点允许以哈希表对象来表示,而对于图中边的各个参量,则可以通过与边相关联的方式来标识,一般而言,对于权重,用weight作为keyword,而对于其他的参数,使用者可以采用任何除weight以外的keyword来命名。
3.在2中,创建的只是一副空图,为了得到一个有节点、有边的图,一般采用下面这个函数:
1
2
G.add_edge(1,2) #default edge data=1
G.add_edge(1,2) #specify edge data=0.9
add_edge()函数,该函数在调用时需要传入两个参数u和v,以及多个可选参数
u和v即图中的两个节点,如果图中不存在节点,在调用时会自动将这两个节点添加入内,同时构建两个节点之间的连接关系,可选参数通常指这条边的权重等关系参量。需要注意的是,如果图中已经存在了这条边,重新进行添加时会对这条边进行跟新操作(也就是覆盖了原有的信息)。
对于该函数,除了上述的构建方式以外,还有以下几种方式来创建边:
1
2
3
G.add_edge(*e) # single edge as tuple of two nodes
G.add_edge(1, 3, weight=7, capacity=15, length=342.7) #using many arguements to create edge
G.add_edges_from( [(1, 2)] ) # add edges from iterable container
有时候,当采用默认方式创建边以后,我们可能还会往边里面添加边的相关参数,这时候,可以采用下面的方式来更新边的信息:
1
2
3
4
5
#For non-string attribute keys, use subscript notation.
G.add_edge(1, 2)
G[1][2].update({0: 5}) #更新边的信息
G.edges[1, 2].update({0: 5}) #更新边的信息
#上述两种更新方式,择一选取即可
细心的朋友可能注意到我在写创建图的内容的时候,提到了add_edges_from()函数,该函数也是用来创建边的,该方式与add_edges()略有不同,比之add_edges()采用一个一个节点的方式进行创建,它来的更为便利。这个函数在调用时,需要一个节点元组作为参数以及多个可选参数作为边的信息。你可以这么传递:
默认创建节点之间的边:
1
G.add_edges_from([(u,v)])
也可以这么写,在创建的同时添加信息:
1
G.add_edges_from([(3, 4), (1, 4)], label='WN2898')
通过上述方式,就构建了一个3-4-1的图的连接,并给每条边打上了标签。
由此你就可以创建出自己的图模型了。
❷ Python中数据可视化经典库有哪些
Python有很多经典的数据可视化库,比较经典的数据可视化库有下面几个。
是Python编程语言及其数值数学扩展包 NumPy 的可视化操作界面。它利用通用的图形用户界面工具包,如 Tkinter, wxPython, Qt 或 GTK+,向应用程序嵌入式绘图提供了应用程序接口。
pyplot 是 matplotlib 的一个模块,它提供了一个类似 MATLAB 的接口。 matplotlib 被设计得用起来像 MATLAB,具有使用 Python 的能力。
优点:绘图质量高,可绘制出版物质量级别的图形。代码够简单,易于理解和扩展,使绘图变得轻松,通过Matplotlib可以很轻松地画一些或简单或复杂的图形,几行代码即可生成直方图、条形图、散点图、密度图等等,最重要的是免费和开源。
优点:用于创建、操纵和研究复杂网络的结构、以及学习复杂网络的结构、功能及其动力学。
上面是我的回答,希望对您有所帮助!
❸ 怎样基于python networkx实现社区发现
k_clique_communities的input是G,networkx的graph的数据结构。 所以原链接的test.txt文件应该是包涵一个graph的文件。
networkx可以读取的graph文件种类如链接所示。Reading and writing graphs
常见的类型有edgelist (usually stored as a text file)和GML。如果我们用Network data 的dolphins social network (which is stored as a GML file)做例子的话,运行如下的code:
import networkx as nx import matplotlib.pyplot as plt G = nx.read_gml('dolphins.gml')klist = list(nx.k_clique_communities(G,3)) #list of k-cliques in the network. each element contains the nodes that consist the clique.#plottingpos = nx.spring_layout(G)plt.clf()nx.draw(G,pos = pos, with_labels=False)nx.draw(G,pos = pos, nodelist = klist[0], node_color = 'b')nx.draw(G,pos = pos, nodelist = klist[1], node_color = 'y')plt.show()
我们的到如下结果:
<img src="https://pic3.mg.com/50/v2-_hd.png" data-rawwidth="800" data-rawheight="600" class="origin_image zh-lightbox-thumb" width="800" data-original="https://pic3.mg.com/v2-_r.png">
which gives us four clique communities.
❹ 如何在Windows操作系统下安装Python和Networkx
Networkx是一套基于Python的多种网络构造库。因为之前没有学过Python,因此一点点上手,这一篇讲一讲如何在Windows环境下安装Python2.7和Networkx。
首先要澄清一下,如果是想深入系统学习Python的同学,还是尽早换Linux系统,因为Windows底下的库安装非常麻烦;而Linux底下只需要运行命令行(Terminal):
sudo apt-get install python-matplotlib
就可以了。
由于仅仅是使用Networkx构造数据的关系,以下简单说明如何在Windows底下快速地安装和使用Python2.7。
0. 先留个记号:Python的初学者指南
https://wiki.python.org/moin/BeginnersGuide
1. 下载Python 2.7,双击安装
https://www.python.org/downloads/windows/
添加路径变量:在<开始>菜单 - Control Panel - System and Security - System - Advanced System Settings - (Advanced Tab) - Environmental Variables - 找到‘Path’,双击打开 - 添加路径‘C:\Python27’(系统安装文件夹),一路确定。
确认安装:在<开始>菜单 - 运行cmd - 进入命令行,输入‘python’,显示
Python 2.7.8 (default, Jun 30 2014, 16:08:48)
即安装成功。
(输入exit()退出Python)
2. 安装networkx之前,需要下载并安装setuptools,下载地址:
https://pypi.python.org/pypi/setuptools
放到Python27的文件夹下,双击自动安装。
3. 下载networkx,解压文件夹,复制到Python27的文件夹下:
https://pypi.python.org/pypi/networkx/
在cmd窗口命令行下进入networkx的文件夹,输入‘python setup.py install’ 安装networkx库。
安装程序完成。
4. 测试程序:
在cmd任何路径下进入python,使用小测试程序确认安装成功!
http://networkx.github.io/examples.html
程序如下:
>>> import networkx as nx
>>> G=nx.Graph()
>>> G.add_node("spam")
>>> G.add_edge(1,2)
>>> print(G.nodes())
[1, 2, 'spam']
>>> print(G.edges())
[(1, 2)]
5. 附networkx的Tutorial:
https://networkx.github.io/documentation/latest/overview.html
networkx网络生成函数:
http://networkx.lanl.gov/reference/generators.html#mole-networkx.generators.random_graphs