この記事では、Pandasのデータフレームから独自の重み付きグラフを作成する方法について理解します。
この記事もチェック:Pandasのデータフレームに行を追加する5つの簡単な方法
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_nodes 、draw_networkx_edges 、draw_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データフレームを使用してグラフを作成する方法を学びました。
このチュートリアルはいかがでしたか?以下のチュートリアルをご覧になることをお勧めします。
- NetworkXパッケージ – Pythonグラフライブラリ
- 重みのないグラフのノード間距離の計算
- Pythonによるグラフ操作【簡単な例付き】 4.
- Pythonでグラフを実装する
お時間を割いていただきありがとうございました! 何か新しいことを学べたでしょうか!