安装networkX及相应工具包
pip install numpy pandas matplotlib tqdm networkx
如需考虑换源,可在后面加上(非视频清华源)
-i http://pypi.douban.com/simple --trusted-host pypi.douban.com
当安装完成后,输入如下代码验证版本及是否安装成功
import networkx as nx
nx.__version__
运行结果如下:版本为2.8.7(未报错即说明安装成功)
设置matplotlib中文字体
#显示中文标签
plt.rcParams['axes.unicode_minus'] = False
#正常显示负号
plt.rcParams["font.sans-serif"] = ["SimHei"]
测试是否设置成功
plt.plot([1,2,3],[100,500,300])
plt.title('matplotlib中文字体测试', fontsize=25)
plt.xlabel('X轴',fontsize=15)
plt.ylabel('Y轴',fontsize=15)
plt.show()
这样便算设置成功了。
全连接无向图
一个无向图中的任意两个节点之间都有一条边相连。
G1 = nx.complete_graph(7) #传参,里面有七个结点
nx.draw(G1)
#全图连接数
print('全图连接数为:',G1.size())
全图连接数为: 21
全连接有向图
每个节点都有向其他节点发出连边,同时也能接收其他节点发出的连边。
plt.figure()
#全连接有向图
G2 = nx.complete_graph(7,nx.DiGraph) #传参,里面有七个结点,nx.DiGraph为有向图
nx.draw(G2)
#全图连接数
print('全图连接数为:',G2.size())
全图连接数为: 42
判断是否为有向图
G.is_directed()
print('G1是否为有向图',G1.is_directed())#判断是否有向图
print('G2是否为有向图',G2.is_directed())#判断是否有向图
G1是否为有向图 False
G2是否为有向图 True
环状图
#环状图
G3 = nx.cycle_graph(5)
nx.draw(G3)
梯状图(不固定)
#梯状图
G4 = nx.ladder_graph(5)
nx.draw(G4)
线性串珠图
#线性串珠图
G5 = nx.path_graph(15)
nx.draw(G5)
星状图
#星状图
G6 = nx.star_graph(7)
nx.draw(G6)
二项树
#二项树
G8 = nx.binomial_tree(5)
nx.draw(G8)
栅格图
二维矩形网格图
G9 = nx.grid_2d_graph(3, 5)
nx.draw(G9)
多维矩形网格图
G10 = nx.grid_graph(dim=(2,3,4))
nx.draw(G10)
二维三角形网格图
G11 = nx.triangular_lattice_graph(2, 5)
nx.draw(G11)
二维六边形蜂窝图
G12 = nx.hexagonal_lattice_graph(2, 3)
nx.draw(G12)
n维超立法体图
G13 =nx.hypercube_graph(4)
nx.draw(G13)
NetworkX内置图
#钻石图
G14 = nx.diamond_graph()
nx.draw(G14)
#牛角图
G15 = nx.bull_graph()
nx.draw(G15)
#多边体图
G16 = nx.frucht_graph()
nx.draw(G16)
G17 = nx.house_graph()
nx.draw(G17)
G18 = nx.house_x_graph()
nx.draw(G18)
#多维立体图
G19 = nx.petersen_graph()
nx.draw(G19)
#风筝图
G20 = nx.krackhardt_kite_graph()
nx.draw(G20)
#随机图
G21 = nx.erdos_renyi_graph(10, 0.5)
nx.draw(G21)
有向图
#有向图
G1 = nx.scale_free_graph(100)
nx.draw(G1)
社交网络
空手道俱乐部数据集
#空手道俱乐部数据集
G2 = nx.karate_club_graph()
nx.draw(G2, with_labels=True)
雨果《悲惨世界》人物关系
#雨果《悲惨世界》人物关系
Gyuguo = nx.les_miserables_graph()
plt.figure(figsize=(12, 10))
pos = nx.spring_layout(Gyuguo,seed=10)
nx.draw(Gyuguo, pos, with_labels=True)
Florentine families graph
GFl = nx.florentine_families_graph()
nx.draw(GFl, with_labels=True)
社群聚类图
#社群聚类图
Gshe = nx.caveman_graph(4, 3)
nx.draw(Gshe, with_labels=True)
树
#树
tree = nx.random_tree(n=10, seed=0)
print(nx.forest_str(tree,sources=[0]))