簡體   English   中英

networkx:在draw_circular中更改節點顏色

[英]networkx: change node color in draw_circular

我用networkx和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()

在此處輸入圖片說明

編輯

理想地,您可以使用networkx.layout.circular_layout等獲取特定布局的節點位置。

只是為了增加上一個答案(Avaris),使用“ 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()

生成下圖:

在此處輸入圖片說明

您也可以從變量“ position”訪問節點的位置。 輸出看起來像這樣:

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)}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM