欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

用networkx和matplotlib绘制显示网络图

程序员文章站 2024-03-15 21:17:36
...

1.用networkx的Graph()方法来生成一个无多重边无向图,其中networkx可以生成四种图,分别为无多重边无向图、无多重边有向图、有多重边无向图和有多重边有向图。

import networkx as nx
G = nx.Graph()
G = nx.DiGraph()
G = nx.MultiGraph()
G = nx.MultiDiGraph()

 

 而我要生成的是无多重边无向图,因此我用G = nx.Graph()。

2.添加结点,在这里我选用的是add_nodes_from(nodes),参数nodes应为由结点组成的列表,如[1,2,3,4]。当然,也可以用add_node_from(node)来依次添加结点。

3.添加边,其实边分为有权值的边和无权值的边,我需要添加的是有权值的边,用add_weighted_edges_from(edges)(注意python3是这个方法,python2可能方法名不同),edges参数应为[('a','b',2),('c','d','1')]这种类型,其中a、b为边的两个结点,2则为权值。

前面所讲两个方法都是图G的方法。

4.用networkx来绘出网络图,nx.draw(G,pos,node_color,edge_color,width_size,node_size,with_labels)。

G为我们想要绘出的图,pos为网络图布局,我试了很多布局发现nx.drawing.layout.spring_layout(G)通常是我们想要的布局,node_color、edge_color、width_size、node_size、with_label则分别为结点颜色、边颜色、边的宽度、结点大小、结点是否带结点名,颜色的设置我用十六进制就可以了,颜色选用参考下面的链接。

              https://www.sioe.cn/yingyong/yanse-rgb-16/

5.matplotlib.pyplot.show()显示图。

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()
colors = range(20)
G.add_nodes_from(nodes)
G.add_weighted_edges_from(edges)
#nx.draw_networkx_edges(G,pos = nx.drawing.layout.spring_layout(G),edge_color = '#000000',width = 0.1)
#nx.draw_networkx_nodes(G,pos = nx.drawing.layout.spring_layout(G),node_color = '#A0CBE2',node_size = 1)
nx.draw(G,pos = nx.drawing.layout.spring_layout(G),node_color='#0000CD', 
	edge_color='#000000',width=0.01, node_size = 0.5,edge_cmap=plt.cm.gray, 
	with_labels=False)
plt.show()

 

相关标签: networkx matplotlib