NetworkXとMatplotlibでネットワークグラフを描画する方法
PythonのNetworkXとMatplotlibを組み合わせると、ノードとエッジから構成されるネットワークグラフを簡単に可視化できます。この記事では、Pandasのデータフレームからエッジリストを作成し、グラフとして描画して表示するまでの一連の手順を解説します。
ネットワークグラフ描画の基本手順
- 図のサイズと余白を設定する:figureサイズを指定し、サブプロット間および周囲のパディングを調整します。
- データフレームを作成する:「from」と「to」というキーを持つデータフレームオブジェクトを用意します。これがグラフのエッジ(辺)情報になります。
- エッジリストからグラフを生成する:データフレームをもとに、エッジリストを含むグラフオブジェクトを作成します。
- draw()メソッドで描画する:ノードサイズやラベル表示などのノード属性を指定しながら、手順3で作成したグラフを描画します。
- show()メソッドで表示する:plt.show()を呼び出して、図を画面に表示します。
コード例
import pandas as pd
import networkx as nx
from matplotlib import pyplot as plt
# 図のサイズとレイアウトの自動調整を設定
plt.rcParams["figure.figsize"] = [7.50, 3.50]
plt.rcParams["figure.autolayout"] = True
# 「from」「to」のキーを持つデータフレームを作成
df = pd.DataFrame({'from': ['A', 'B', 'C', 'A'], 'to': ['D', 'A', 'E', 'C']})
# エッジリストからグラフを生成
G = nx.from_pandas_edgelist(df, 'from', 'to')
# ラベル付きでグラフを描画
nx.draw(G, with_labels=True, node_size=100, alpha=1, linewidths=10)
# 図を表示
plt.show()実行結果
上記のコードを実行すると、ノード「A」「B」「C」「D」「E」とそれらを結ぶエッジからなるネットワークグラフが表示されます。with_labels=Trueを指定しているため、各ノードにはラベルが付与され、node_sizeやlinewidthsのパラメータによってノードの大きさやエッジの太さを調整できます。
ポイント解説
nx.from_pandas_edgelist()は、Pandasデータフレームの列をエッジリストとして直接読み込める便利な関数です。実際のデータ分析では、CSVファイルなどから読み込んだ関係性データをそのままグラフ化できるため、SNSのフォロー関係や交通網の可視化など、幅広い用途に活用できます。
-
PythonでNetworkXのグラフを再形成する方法をわかりやすく解説
PythonでNetworkXのグラフを再形成するには、以下の手順に従って進めます。 グラフを再形成する基本手順 PandasのDataFrameを使って、エッジ情報を持つデータフレームを作成します。 from_pandas_edgelist()メソッドを使用し、エッジリストを含むPandas DataFrameからグラフオブジェクトを生成します。 matplotlibでグラフGを描画します。キー「from」と「to」のリストに含まれる要素を増減させることで、ネットワークの形状(ノードやエッジの構成)を自由に変更できます。 作成した図を表示するには、show()メソッドを呼び出します。 サ
-
Matplotlibを使ってPythonで複数の図を横並びに描画する方法
Matplotlibで複数の図を並べて描画する手順 PythonのMatplotlibを使えば、subplot()メソッドを活用することで、複数の図を1つのウィンドウ内に横一列に並べて簡単に表示できます。ここでは、同じランダムデータを4種類のカラーマップで可視化する例を紹介します。 具体的には、以下の手順で実装します。 numpyを使ってランダムなデータ(5×5の行列)を作成します。 plt.subplot(nrows, ncols, index)で現在の図にサブプロットを追加します。今回は「nrows=1、ncols=4」のレイアウトで、index=1から順に配置していきます。 imsho