实现以下目标:
1、环境搭建
2、创建图
2.1 手动创建图
2.2 读取文件创建图
3、绘制图
4、分析图,以k-shell和k-core为例
1、环境搭建
安装环境说明和安装包下载 http://download.csdn.net/detail/suncherrydream/9687631
另外可以参照 http://blog.sina.com.cn/s/blog_720448d301018px7.html进行下载安装
需要导入的包
import networkx as nx #复杂网络需要用的包
import matplotlib.pyplot as plt #画图用
import os #读取文件用2、创建图
2.1 手动创建无向图
G=nx.Graph() #创建无向图
G.add_edge('a','d') #向无向图中添加节点a和节点d,且a,d之间有一条连边
G.add_edge('b','d')
G.add_edge('c','d')
G.add_edge('c','f')
G.add_edge('d','e')
G.add_edge('d','f')
G.add_edge('e','f')
2.2 读取txt文件创建图
txt文件格式:同一行中的两个元素表示两个节点,且这两个节点之间存在连边
读取方式如下:
os.chdir('F:\\') #注意要导入包 os
filename='k_shell_test.txt'
G=nx.Graph()
with open(filename) as file:
for line in file:
head, tail = [str(x) for x in line.split()] #如果节点使用数组表示的可以将str(x)改为int(x)
G.add_edge(head,tail)
生成的G同2.1中相同
3、绘制图
plt.figure() #创建一幅图
nx.draw(G , node_color='y' , with_labels=True, ,node_size=800) #node_color='y'表示绘制节点的颜色为黄色,默认为红色;with_labels=True使节点上显示节点的名字,默认为False;node_size设置节点大小,默认为300
plt.show()
NetworkX提供了一系列样式参数,可以用来修饰和美化图形,达到我们想要的效果。常用的参数包括:
4、利用networkX分析图的k-shell和k-core
k_shell(G,k=n)得到的是由所有k-shell值为n节点组成的G的子图
k_core(G,k=n)得到的是由所有k-shell值不小于n的节点组成的G的子图
下面为官方文档中对两个方法的说明:
networkX中提供k_shell(G,k=None,core_number=None)
Parameters: |
|
---|---|
Returns: | G – The k-shell subgraph |
Return type: | NetworkX graph |
Parameters: |
|
---|---|
Returns: | G – The k-core subgraph |
Return type: | NetworkX graph |
参考文献:
官网:http://networkx.readthedocs.io/en/networkx-1.11/overview.html
http://blog.sina.com.cn/s/blog_720448d301018px7.html
http://www.cnblogs.com/fstang/archive/2013/06/01/3113352.html
http://blog.csdn.net/ztf312/article/details/47615303