Python
 Computer >> コンピューター >  >> プログラミング >> Python

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_sizefont_color 引数でラベル文字のサイズ・色を変更する
  • pos 引数にレイアウト関数(例:nx.spring_layout(G))の結果を渡して、ノードの配置を制御する

これらのオプションを組み合わせることで、プレゼンテーションやレポートにも使いやすい、視認性の高いネットワーク図を作成できます。

  1. Matplotlibのグラフをフルスクリーンで表示する方法

    Matplotlibで作成したグラフをフルスクリーン(全画面)で表示したい場合、full_screen_toggle()メソッドを使用すると簡単に実現できます。このメソッドは、現在開いているフィギュアウィンドウを全画面モードに切り替える機能を持ちます。 手順 figure()メソッドを使って、新しいフィギュアを作成するか、既存のフィギュアをアクティブにします。 2つのリストを渡してplot()メソッドを呼び出し、折れ線グラフを描画します。 get_current_fig_manager()メソッドで、現在のフィギュアのマネージャー(figure manager)を取得します。 取得したマネー

  2. PythonのBokehを使って棒グラフを可視化する方法をわかりやすく解説

    Bokehとは?Bokehは、Pythonでデータ可視化を行うためのオープンソースライブラリです。最大の特徴は、グラフをHTMLとJavaScriptで描画する点にあります。そのため、Webベースのダッシュボードを作成する際に特に威力を発揮します。また、NumPyやPandasなど他のPythonパッケージとの連携も容易で、インタラクティブなグラフやダッシュボードを手軽に作成できます。Matplotlib・Seabornとの違いMatplotlibやSeabornが静的な(静止画の)グラフを出力するのに対し、Bokehはインタラクティブなグラフを生成します。ユーザーがマウスで操作すると、グラフ