NetworkXで作成したグラフをMatplotlibで描画し、ノード名(ラベル)を表示する方法
Pythonのグラフ理論ライブラリ NetworkX を使って作成したグラフをMatplotlibで可視化する際、ノード名(ラベル)を表示したいケースはよくあります。本記事では、draw() メソッドの with_labels オプションを使って、ノード名を簡単に表示する手順を解説します。
ノード名を表示する基本手順
- 図のサイズと余白を設定する:
plt.rcParamsを使って、図のサイズやサブプロット間・周囲のパディングを調整します。 - グラフオブジェクトを作成する: 辺・名前・グラフ属性などを指定してグラフを初期化します。有向グラフの場合は
nx.DiGraph()を使用します。 - ノードを追加する:
add_nodes_from()メソッドを使うと、複数のノードを一度に追加できます。 - 辺(エッジ)を追加する:
add_edges_from()メソッドで、すべての辺をまとめて登録します。 - グラフを描画する:
draw()メソッドでグラフGを描画し、このときwith_labels=Trueを指定するとノード名が表示されます。 - グラフを表示する: 最後に
show()メソッドを呼び出して、図を画面に表示します。
サンプルコード
import matplotlib.pylab as plt import networkx as nx plt.rcParams["figure.figsize"] = [7.50, 3.50] plt.rcParams["figure.autolayout"] = True G = nx.DiGraph() G.add_nodes_from([1, 2, 3, 4]) G.add_edges_from([(1, 2), (2, 1), (2, 3), (1,4), (3,4)]) nx.draw(G, with_labels=True) plt.show()
実行結果
上記のコードを実行すると、4つのノードを持つ有向グラフが描画され、各ノードに「1」「2」「3」「4」というラベルが表示されます。with_labels=True を指定しない場合、ノードは円として表示されるだけで名前は現れないため、注意してください。
補足:ラベルのカスタマイズ
より見やすいグラフにしたい場合は、以下のようなカスタマイズも可能です。
node_color引数でノードの色を変更するnode_size引数でノードのサイズを調整するfont_sizeやfont_color引数でラベル文字のサイズ・色を変更するpos引数にレイアウト関数(例:nx.spring_layout(G))の結果を渡して、ノードの配置を制御する
これらのオプションを組み合わせることで、プレゼンテーションやレポートにも使いやすい、視認性の高いネットワーク図を作成できます。
-
Matplotlibのグラフをフルスクリーンで表示する方法
Matplotlibで作成したグラフをフルスクリーン(全画面)で表示したい場合、full_screen_toggle()メソッドを使用すると簡単に実現できます。このメソッドは、現在開いているフィギュアウィンドウを全画面モードに切り替える機能を持ちます。 手順 figure()メソッドを使って、新しいフィギュアを作成するか、既存のフィギュアをアクティブにします。 2つのリストを渡してplot()メソッドを呼び出し、折れ線グラフを描画します。 get_current_fig_manager()メソッドで、現在のフィギュアのマネージャー(figure manager)を取得します。 取得したマネー
-
PythonのBokehを使って棒グラフを可視化する方法をわかりやすく解説
Bokehとは?Bokehは、Pythonでデータ可視化を行うためのオープンソースライブラリです。最大の特徴は、グラフをHTMLとJavaScriptで描画する点にあります。そのため、Webベースのダッシュボードを作成する際に特に威力を発揮します。また、NumPyやPandasなど他のPythonパッケージとの連携も容易で、インタラクティブなグラフやダッシュボードを手軽に作成できます。Matplotlib・Seabornとの違いMatplotlibやSeabornが静的な(静止画の)グラフを出力するのに対し、Bokehはインタラクティブなグラフを生成します。ユーザーがマウスで操作すると、グラフ