Zachary's Karate Clubデータセット NetworkX

Zachary's Karate Clubデータセット

NetworkXはPythonのライブラリで、グラフ理論ネットワーク分析のためのツールを提供します。

NetworkXにはいくつかの組み込みデータセットがあり、これを使用してグラフを作成し、結果を分かりやすくグラフ化することができます。

以下に、Zachary’s Karate Clubデータセットを使用したサンプルコードを示します。

このデータセットは、カラテクラブのメンバーとその関係を表す社会ネットワークのデータです。

このサンプルでは、ネットワークの可視化を行います。

まず、NetworkXをインストールします。

1
pip install networkx

次に、以下のサンプルコードを使用してZachary’s Karate Clubデータセットを読み込み、可視化します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import networkx as nx
import matplotlib.pyplot as plt

# Les Misérablesデータセットを読み込む
G = nx.les_miserables_graph()

# グラフのレイアウトを設定 (Fruchterman-Reingoldレイアウト)
pos = nx.spring_layout(G, k=0.15)

# グラフを描画
plt.figure(figsize=(12, 12))
nx.draw_networkx_nodes(G, pos, node_color='lightblue', node_size=200)
nx.draw_networkx_edges(G, pos, width=1.0, alpha=0.5, edge_color='gray')
nx.draw_networkx_labels(G, pos, font_size=10, font_color='black', font_family='sans-serif')

# ノードのラベル位置を微調整
label_pos = {node: (x, y + 0.03) for node, (x, y) in pos.items()}
nx.draw_networkx_labels(G, label_pos, font_size=8, font_color='black', font_family='sans-serif')

# グラフのタイトルを設定
plt.title("Les Misérables Characters Network", fontsize=16)

# グラフの軸を非表示
plt.axis('off')

# グラフを表示
plt.show()

このコードは、Zachary’s Karate Clubデータセットを読み込み、可視化するためのグラフを作成します。

ノードは青色で、エッジは線で表され、ノードにはラベルが表示されます。

可視化されたグラフは、Karate Clubメンバー間のつながりを示します。

NetworkXMatplotlibを使用して、ネットワークデータの分析と可視化が簡単に行えます。

ソースコード解説

以下にソースコードの詳細を説明します。

1. import networkx as nximport matplotlib.pyplot as plt:

この行は、NetworkXとMatplotlibライブラリをインポートしています。
NetworkXはグラフ理論とネットワーク分析のためのライブラリであり、Matplotlibはグラフの描画に使用されます。

2. G = nx.les_miserables_graph():

nx.les_miserables_graph()を使用して、Les Misérablesデータセットを読み込み、ネットワークグラフを作成します。
このデータセットは、小説「レ・ミゼラブル」の登場人物間の関係を表します。

3. pos = nx.spring_layout(G, k=0.15):

ネットワークグラフのレイアウトを設定します。
nx.spring_layout()はFruchterman-Reingoldレイアウトアルゴリズムを使用し、ノードの位置を設定します。
kパラメータは、ノード間の反発力を調整するためのパラメータです。

4. グラフの描画:

  • plt.figure(figsize=(12, 12)): グラフの描画エリアのサイズを設定します。
  • nx.draw_networkx_nodes(): ノードを描画し、posで指定した位置に配置します。
    ノードの色、サイズなどのプロパティも設定します。
  • nx.draw_networkx_edges(): エッジ(ノード間の線)を描画します。
    エッジの幅、透明度、色などのプロパティも設定します。
  • nx.draw_networkx_labels(): ノードのラベルを描画し、フォントサイズや色を設定します。

5. ノードのラベル位置の微調整:

label_posという変数を使用して、ノードのラベル位置を微調整し、ノード上にラベルが正しく表示されるようにします。

6. plt.title("Les Misérables Characters Network", fontsize=16):

グラフのタイトルを設定します。

7. plt.axis('off'):

グラフの軸を非表示にします。

8. plt.show():

最後に、Matplotlibを使用してグラフを表示します。

このスクリプトにより、Les Misérablesデータセットのネットワークが美しく可視化され、キャラクター間の関係が直感的に理解できます。

可視化のカスタマイズや他のデータセットへの適用も可能です。