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_si