PythonでPandasとnetworkx、matplotlibを使って重み付きグラフを実装する方法

スポンサーリンク

この記事では、Pandasのデータフレームから独自の重み付きグラフを作成する方法について理解します。

スポンサーリンク

Pandasのデータフレームから重み付きグラフを作成する

Pythonプログラムの最初のタスクは、必要なモジュール/ライブラリをコードにインポートすることです。

1
2
3
4
import pandas as pd
import numpy as np
import networkx as nx
import matplotlib.pyplot as plt

次のタスクは、後のセクションでプロットされるグラフのためのデータフレームを作成することです。

これはpandasとnumpyモジュールを使って得ることができます。

まず、ランダムシードを作成します。

これは、後のセクションでエッジの重みとして使用される、特定の範囲のランダムな整数を生成するのに役に立ちます。

次に、データフレームを DataFrame 関数で作成し、グラフのデータを関数に渡します。

1
2
3
4
r = np.random.RandomState(seed=5)
weights = r.random_integers(1, 5, size=(5,))
df = pd.DataFrame({'from':['A','B','C','D','E'],'to':['D','E','A','D','C'],'weight':weights})
df.head()
1
2
3
4
fig, ax = plt.subplots()
pos = nx.spring_layout(G)
plt.title("Plotting Nodes")
nx.draw_networkx_nodes(G, pos, ax = ax)

次に、draw_networkx_nodesdraw_networkx_edgesdraw_networkx_labels 関数を用いて、ノード、エッジ、ラベルを個別にプロットし、重み付けプロットを視覚化します。

Visualizing Nodes

Fake Tags
Fake Tags

Visualizing Edges

Fake Tags
Fake Tags

完全なグラフの可視化

1
2
3
4
fig, ax = plt.subplots()
pos = nx.spring_layout(G)
plt.title("Plotting Edges")
nx.draw_networkx_edges(G, pos, width=durations, ax=ax)
1
2
3
4
5
6
fig, ax = plt.subplots()
pos = nx.spring_layout(G)
plt.title("Plotting Complete Graph")
nx.draw_networkx_nodes(G, pos, ax = ax)
nx.draw_networkx_edges(G, pos, width=durations, ax=ax)
_ = nx.draw_networkx_labels(G, pos, labels, ax=ax)

まとめ

NetworkXライブラリのpandasデータフレームを使用してグラフを作成する方法を学びました。

このチュートリアルはいかがでしたか?以下のチュートリアルをご覧になることをお勧めします。

  1. NetworkXパッケージ – Pythonグラフライブラリ
  2. 重みのないグラフのノード間距離の計算
  3. Pythonによるグラフ操作【簡単な例付き】 4.
  4. Pythonでグラフを実装する

お時間を割いていただきありがとうございました! 何か新しいことを学べたでしょうか!

タイトルとURLをコピーしました