簡體   English   中英

在NetworkX中繪制圖形

[英]Draw graph in NetworkX

我正在嘗試在NetworkX中繪制任何圖形,但什么都沒有,甚至沒有錯誤:

import networkx as nx
import matplotlib.pyplot as plt
g1=nx.petersen_graph()
nx.draw(g1)

添加到最后:

plt.show()

import networkx as nx
import matplotlib.pyplot as plt
g1 = nx.petersen_graph()
nx.draw(g1)
plt.show()

從已調用plt.ion()的交互式shell運行時, plt.ion() plt.show() 這可能是很多例子中省略的原因。

如果您從一個腳本(如果這些命令plt.ion()沒有被調用),該plt.show()是必要的。 plt.ion()適用於交互式會話,但不建議用於腳本

在ipython筆記本中,只需輸入魔法

%matplotlib inline

要么

%matplotlib notebook

您可以使用jupyter notebook輕松地使用networkx圖進行繪圖。 見第一個例子。

或者,您可以使用Bokeh繪制圖表,這會添加有用的功能。 包裝holoviews使繪制帶有散景的圖形變得更加簡單。 它在鼠標懸停在節點上時添加了自動突出顯示和標簽顯示等功能。 但是,編輯顏色等似乎是一個問題。

%pylab inline  
# `pylab notebook`  # for interactive plots

import pandas as pd
import networkx as nx
import holoviews as hv

G=nx.Graph()
ndxs = [1,2,3,4]
G.add_nodes_from(ndxs)
G.add_weighted_edges_from( [(1,2,0), (1,3,1) , (1,4,-1) , (2,4,1) , (2,3,-1), (3,4,10) ] ) 
nx.draw(G, nx.spring_layout(G, random_state=100))

在此輸入圖像描述

這里有散景和全息視圖的例子:

hv.extension('bokeh')
%opts Graph [width=400 height=400]
padding = dict(x=(-1.1, 1.1), y=(-1.1, 1.1))
hv.Graph.from_networkx(G, nx.layout.spring_layout).redim.range(**padding)

在此輸入圖像描述

您應該嘗試一下並將其繪制在筆記本中以查看差異。

它添加以下工作正常:

import matplotlib.pyplot as plt
plt.show()

你的代碼。 我工作得很好。

暫無
暫無

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

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