簡體   English   中英

如何使網絡圖中節點的顏色從Networkx的中心到邊緣順序變化

[英]How to make color of nodes in the network graph change sequentially from the center to the edge in Networkx

我想畫一個圖,其網絡圖中節點的顏色從中心到邊緣依次變化,如下所示:

圖片樣本

當我可視化數據時,我不知道如何正確處理異常值,因此我只是對數據進行混洗並充分利用了它們。 這是我的代碼和圖片:

data = pd.read_csv('soc-sign-bitcoinalpha.csv', names=['SOURCE', 'TARGET', 'RATING', 'TIME'])
new_data = data.iloc[:, :2].copy()
new_data = new_data.reindex(np.random.permutation(new_data.index))
new_data = new_data.iloc[: 18000]
G = nx.from_pandas_edgelist(new_data1, "SOURCE", "TARGET")
nx.draw(G, node_size=5, edge_vmin=1, edge_vmax=2)

我的照片

數據來自斯坦福大型網絡數據集集合中的比特幣Alpha信任加權簽名網絡

因此,如果不介意的話,有人可以教我如何實施它嗎?

我之前確實做了很多搜索,但是我無法弄清楚。

真誠的感謝!

您可以先計算每個節點距中心的距離,然后按距中心的距離進行着色。 nx.draw使用sprint_layout定位節點,因此您可以顯式調用它以獲取節點的位置。 位置以(0, 0)為中心,因此您可以簡單地使用r = np.sqrt(x**2 + y**2)計算到中心的距離:

pos = nx.spring_layout(G)
node_colors = [np.sqrt((xy**2).sum()) for xy in pos.values()]
nx.draw(G, pos, node_color=node_colors, node_size=5, edge_vmin=1, edge_vmax=2)

僅供參考,您給出的示例很可能是節點之間的中間性 要按此度量着色,想法是相同的:

bc = nx.betweenness_centrality(G)
node_colors = list(bc.values())
nx.draw(G, node_color=node_colors)

暫無
暫無

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

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