Python
Python3
networkx

NetworkXでバーチャルYouTuberのネットワーク分析


概要

 NetworkXを触ってみたかったのでとりあえず最近ハマってるバーチャルYouTuberを題材にすることにした。現在4000人ほどいるVTuberを全員見てると相当ヤバいことになるため2018年9月2日時点で(海外勢と事務所チャンネルを除いて)チャンネル登録者数上位48名のTwitterアカウントのフォロー関係を調べる。


環境

macOS 10.13.6

Python 3.7.0


参考ページ

 ここらへんを参考にした。ただしTwitter APIキーがクソ取りづらくなっててスクレイピングできなかったので元データは手作業で入れた。まあできん量ではない。

HIP HOPでわかるネットワーク分析

TwitterのフォロワーをNetworkX, Cytoscapeで可視化


元データ

ノード(各VTuber)

エッジ(AはBにフォローされている)


グラフを描く


ノードの設定

import pandas as pd

import networkx as nx
import matplotlib.pyplot as plt

plt.figure(fig-size=(10, 10))
vt = pd.read_csv("vtuber.csv")
follow = pd.read_csv("follow.csv")

vector={}
for i in range(len(vt)):
vector[vt.iloc[i,0]] = []


エッジの追加

for i  in range(len(follow)):

vector[follow.iloc[i,1]].append(follow.iloc[i,0])

 AがBにフォローされていればBからAにエッジを伸ばす。


グラフの作成

G= nx.DiGraph(vector) 

pos = nx.spring_layout(G)
nx.draw_networkx(G,pos, node_size=100)

有向グラフ.png

 鳩羽つぐ、バーチャルおばあちゃん、夏実萌恵が中心から大きく離れている。3人ともほとんどフォローを返していないので当たり前か。

有向グラフ2.png

 中心に近づいてみる。ハッカドール公式とか北上双葉とかが中心から離れている。

有向グラフ3.png

 のらきゃっとが相互フォローしまくってるっぽい。


媒介中心性

 次は無向グラフで参考ページのように betweeness centrality を計算してみる。community_louvain をimport して

#division with maximum mod

partition = community_louvain.best_partition(G)
#centrality
between_cent = nx.communicability_betweenness_centrality(G)
#node_size is in directly proportional to betweeness centrality
node_size = [500 * size for size in list(between_cent.values())]

pos = nx.spring_layout(G)
nx.draw_networkx(G,pos, node_color=[partition[node] for node in G.nodes()],node_size=node_size, cmap=plt.cm.RdYlBu)

とすると

無向グラフ.png

 もっと近づいてみると

無向グラフ2.png

私の最推しガチ恋VTuberであるところの甲賀流忍者ぽんぽこが中心にいる。

 centrality を計算してみると、上位は

name
centrality

ミライアカリ
0.7154235388349577

ときのそら
0.7098065123655185

ぽんぽこ
0.70015474405107

月ノ美兎
0.6943701341949949

樋口楓
0.678625900219394

かしこまり
0.6675795788802136

織田信姫
0.6668534616228694

ヤミクモケリン
0.6587974129889799

のらきゃっと
0.6548863735933782

おめがシスターズ
0.6409337239798858

下位は

name
centrality

夏実萌恵
0.01431419822679539

ハッカドール
0.07488388333828716

鳩羽つぐ
0.088431090849942

バーチャルおばあちゃん
0.19954731434547704

北上双葉
0.20829455560491406

YuNi
0.21984396004004841

道明寺ここあ
0.22756851433940548

天神子兎音
0.24710600745046638

虹河ラキ
0.24726558602070192

もこ田めめめ
0.27382789899721166

だった。上位はVTuberらしいVTuberだけど、下位はたまたまVTuberという媒体を選んだ映像作品という印象がある。

 参考ページに倣ってモジュラリティが最大になるように分割して色分けしてみたが、特に意味のある分割にはなっていないように見える。