web-dev-qa-db-ja.com

NetworkXでグラフを描く

NetworkXでグラフを描画しようとしていますが、何も表示されず、エラーも表示されません。

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

最後に追加:

_plt.show()
_

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

plt.ion()が呼び出されているインタラクティブシェルから実行する場合、plt.show()は必要ありません。これがおそらく多くの例で省略されている理由です。

これらのコマンドをスクリプトから実行する場合(plt.ion()が呼び出されていない場合)、plt.show()が必要です。 plt.ion()はインタラクティブセッションでは問題ありませんが、 スクリプトでは推奨されません です。

35
unutbu

ipythonノートブックで、魔法を入力するだけ

%matplotlib inline

または

%matplotlib notebook
5
denfromufa

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

enter image description here

そして、ここではボケとホロビューの例:

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)

enter image description here

試してみて、ノートにプロットして、違いを確認してください。

3
Sören

追加すると正常に動作します:

import matplotlib.pyplot as plt
plt.show()

あなたのコードに。私はうまくいきました。

0