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()
が呼び出されているインタラクティブシェルから実行する場合、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()
あなたのコードに。私はうまくいきました。