改變節點顏色我畫一張圖表networkx和draw_circularnetworkx:在draw_circular
networkx.draw_circular(g)
我試着改變一些節點的顏色,可能與draw_networkx_nodes。
但爲此,我需要知道節點的位置,我怎樣才能得到draw_circular節點的位置?
或直接,我如何改變draw_circular中某些節點的顏色?
改變節點顏色我畫一張圖表networkx和draw_circularnetworkx:在draw_circular
networkx.draw_circular(g)
我試着改變一些節點的顏色,可能與draw_networkx_nodes。
但爲此,我需要知道節點的位置,我怎樣才能得到draw_circular節點的位置?
或直接,我如何改變draw_circular中某些節點的顏色?
draw_circular
將接受與draw_networkx
相同的關鍵字參數。有一個可選參數node_color
,您可以在其中爲單個節點提供顏色。傳遞給node_color
的參數必須是一個列表,其長度爲節點數或將用於所有節點的單個值。顏色可以是由matplotlib識別的任何東西。
因此,像這樣會給下面的結果:
import networkx as nx
import matplotlib.pyplot as plt
from random import random
g = nx.random_graphs.erdos_renyi_graph(10,0.5)
colors = [(random(), random(), random()) for _i in range(10)]
nx.draw_circular(g, node_color=colors)
plt.show()
編輯
Optinoally,您可以用networkx.layout.circular_layout
得到一定的佈局節點的位置,等等...
只是添加到以前的答案(A varis),使用「networkx.draw_networkx_nodes()」的「nodelist」屬性也可能有用。
import matplotlib.pyplot as plt
import networkx as nx
nodes = [0,1,2,3]
edges = [(0,1), (1,2), (3,1), (2,3)]
nodeListA = [0,1]
nodeListB = [2,3]
G = nx.Graph()
G.add_nodes_from(nodes)
G.add_edges_from(edges)
position = nx.circular_layout(G)
nx.draw_networkx_nodes(G,position, nodelist=nodeListA, node_color="b")
nx.draw_networkx_nodes(G,position, nodelist=nodeListB, node_color="r")
nx.draw_networkx_edges(G,position)
nx.draw_networkx_labels(G,position)
plt.show()
這會產生如下圖所示:
您也可以訪問變量「位置」的節點的位置。輸出看起來像這樣:
In [119]: position
Out[119]:
{0: array([ 1. , 0.5], dtype=float32),
1: array([ 0.49999997, 1. ], dtype=float32),
2: array([ 0. , 0.49999997], dtype=float32),
3: array([ 0.5, 0. ], dtype=float32)}
爲什麼使用'_i' var?我的問題是關於'_' – JuanPablo
@JuanPablo:沒有特別的原因。把'_'放在未使用索引的開頭是我的習慣。它沒有其他用途。 – Avaris