NetworkX-畫圖


 

參考:https://blog.csdn.net/qq951127336/article/details/54586869

1.創建圖

 
        
 1 networkx有四種圖 Graph 、DiGraph、MultiGraph、MultiDiGraph,分別為無多重邊無向圖、無多重邊有向圖、有多重邊無向圖、有多重邊有向圖。
 2 
 3 import network as nx
 4 
 5 G = nx.Graph()#創建空的網絡圖
 6 
 7 G = nx.DiGraph()
 8 
 9 G = nx.MultiGraph()
10 
11 G = nx.MultiDiGraph()
12 
13 #添加點和邊:
14 
15 G.add_node('a')#添加點a
16 
17 G.add_node(1,1)#用坐標來添加點
18 
19 G.add_edge('x','y')#添加邊,起點為x,終點為y
20 
21 G.add_weight_edges_from([('x','y',1.0)])#第三個輸入量為權值 也可以
22 
23 list = [[('a','b',5.0),('b','c',3.0),('a','c',1.0)]
24 
25 G.add_weight_edges_from([(list)])
26 
27 #顯示:
28 
29 #需要導入matplotlib
30 
31 import matplotlib.pyplot as plt
32 
33 nx.draw(G)
34 
35 plt.show()

 

顯示函數:

1 nx.draw(G,pos = nx.random_layout(G),node_color = 'b',edge_color = 'r',with_labels = True,font_size =18,node_size =20)
2 
3 pos 指的是布局 主要有spring_layout , random_layout,circle_layout,shell_layout。node_color指節點顏色,有rbykw ,同理edge_color. 
4 with_labels指節點是否顯示名字,size表示大小,font_color表示字的顏色。

 

參考:https://networkx.github.io/documentation/latest/tutorial.html#drawing-graphs

2.畫出好看的圖

 1 兩個主要的函數:
 2 
 3 def draw_networkx_edges(G, pos, edgelist=None, width=1.0, edge_color='k',
 4 
 5          style='solid', alpha=1.0, edge_cmap=None, edge_vmin=None, edge_vmax=None,
 6 
 7          ax=None, arrows=True, label=None, **kwds):
 8 
 9 G:圖表 一個networkx圖
10 
11 pos:dictionary 將節點作為鍵和位置作為值的字典。 位置應該是長度為2的序列。
12 
13 edgelist:邊緣元組的集合 只繪制指定的邊(默認= G.edges())
14 
15 width:float或float數組 邊線寬度(默認值= 1.016 
17 edge_color:顏色字符串或浮點數組 邊緣顏色。可以是單顏色格式字符串(default ='r'),
18 
19 或者具有與edgelist相同長度的顏色序列。 如果指定了數值,它們將被映射到 顏色使用edge_cmap和edge_vmin,edge_vmax參數。
20 
21 style:string 邊線樣式(默認='solid')(實線|虛線|點線,dashdot)
22 
23 alpha:float 邊緣透明度(默認值= 1.024 
25 edge_ cmap:Matplotlib色彩映射 用於映射邊緣強度的色彩映射(默認值=無)
26 
27 edge_vmin,edge_vmax:float 邊緣色圖縮放的最小值和最大值(默認值=無)
28 
29 ax:Matplotlib Axes對象,可選 在指定的Matplotlib軸中繪制圖形。
30 
31 arrows:bool,optional(default = True) 對於有向圖,如果為真,則繪制箭頭。
32 
33 label:圖例的標簽
34 
35 def draw_networkx_nodes(G, pos, nodelist=None, node_size=300, node_color='r',
36 
37           node_shape='o', alpha=1.0, cmap=None, vmin=None, vmax=None, ax=None, linewidths=None, label=None, **kwds):
38 
39 pos:dictionary 將節點作為鍵和位置作為值的字典。 位置應該是長度為2的序列。
40 
41 ax:Matplotlib Axes對象,可選 在指定的Matplotlib軸中繪制圖形。
42 
43 nodelist:list,可選 只繪制指定的節點(默認G.nodes())
44 
45 node_size:標量或數組 節點大小(默認值= 300)。如果指定了數組,它必須是 與點頭長度相同。
46 
47 node_color:顏色字符串或浮點數組 節點顏色。可以是單顏色格式字符串(default ='r'), 或者具有與點頭相同長度的顏色序列。
48 
49 如果指定了數值,它們將被映射到 顏色使用cmap和vmin,vmax參數。看到 matplotlib.scatter更多詳細信息。
50 
51 node_shape:string 節點的形狀。規格為matplotlib.scatter 標記,'so ^> v <dph8'(默認='o')之一。
52 
53 alpha:float 節點透明度(默認值= 1.054 
55 cmap:Matplotlib色圖 色彩映射節點的強度(默認=無)
56 
57 vmin,vmax:float 節點色彩映射縮放的最小值和最大值(默認值=無)
58 
59 線寬:[無|標量|序列] 符號邊框的線寬(默認值= 1.060 
61 label:[無|串] 圖例的標簽
62 
63 然后基本上所有networkx的超酷精美圖的源碼你都能快速弄懂了。 
64 http://networkx.github.io/ 網絡圖案例源碼
65 
66 https://networkx.github.io/documentation/latest/auto_examples/index.html#drawing

 

3.Example:

 1 import matplotlib.pyplot as plt
 2 import networkx as nx
 3 G = nx.random_geometric_graph(200, 0.125)
 4 # position is stored as node attribute data for random_geometric_graph
 5 pos = nx.get_node_attributes(G, 'pos')
 6 
 7 # find node near center (0.5,0.5)
 8 dmin = 1
 9 ncenter = 0
10 for n in pos:
11     x, y = pos[n]
12     d = (x - 0.5)**2 + (y - 0.5)**2
13     if d < dmin:
14         ncenter = n
15         dmin = d
16 
17 # color by path length from node near center
18 p = dict(nx.single_source_shortest_path_length(G, ncenter))
19 
20 plt.figure(figsize=(8, 8))
21 nx.draw_networkx_edges(G, pos, nodelist=[ncenter], alpha=0.4)
22 nx.draw_networkx_nodes(G, pos, nodelist=list(p.keys()),
23                        node_size=80,
24                        node_color=list(p.values()),
25                        cmap=plt.cm.Reds_r)
26 
27 plt.xlim(-0.05, 1.05)
28 plt.ylim(-0.05, 1.05)
29 plt.axis('off')
30 plt.show()

 

result:

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM