動機
- サッカーは、毎シーズン多くの選手が移籍します。
- 今シーズンの公式サイトには、1650名(2020/1/31時点)の選手が登録されています。
- また、移籍情報を公開しているサイトJ'S GOAL’Sサイトに移籍情報が上がっています。
- 以前から、この選手の流動状態を可視化出来ないものかと考えていました。
- Google先生に「流入流出 グラフ」と検索しても使えそうなものはヒットしませんでした。
- それを「流入流出 可視化」とすると「サンキーダイアグラム」を発見!これは使えるかも!
サンキーダイアグラムについて
サンキー・ダイアグラム(英Sankey diagram)は工程間の流量を表現する図表である。矢印の太さで流れの量を表している。特にエネルギーや物資、経費等の変位を表す為に使われる。
出典: フリー百科事典『ウィキペディア(Wikipedia)』
- pythonでsankeyダイアグラム
- やってみよう分析!第7章: Google Charts Sankey Diagramを使ってデータ可視化
- github:ipysankeywidget
- demo:Exporting Images.ipynb
- plotly: Sankey Diagram in Python
- matplotlib: sankey
本家matplotlib
はさっぱりわからない、plotly
はとても美しいがさっぱりわからない。で一番簡単な demo:Exporting Images.ipynbでトライ!
写経
sankey.py
from ipysankeywidget import SankeyWidget
from ipywidgets import Layout
- 事前に
pip install ipysankeywidget
でライブラリをインストールします。 - また
jupyter lab
で使用する場合は、
$ jupyter labextension install jupyter-sankey-widget @jupyter-widgets/jupyterlab-manager
と拡張機能を登録します。
sankey.py
links = [
{'source': 'start', 'target': 'A', 'value': 2},
{'source': 'A', 'target': 'B', 'value': 2},
{'source': 'C', 'target': 'A', 'value': 2},
{'source': 'A', 'target': 'C', 'value': 2},
]
これがデータ部分なので、移籍のダミーデータに置き換えます。
sankey.py
links = [
{'source': '北海道_in', 'target': '海外_out', 'value': 1},
{'source': '北海道_in', 'target': 'J2_out', 'value': 1},
{'source': '北海道_in', 'target': '大学_out', 'value': 3},
{'source': '湘南_in', 'target': '北海道_out', 'value': 1},
{'source': 'J3_in', 'target': '北海道_out', 'value': 1},
]
sankey.py
layout = Layout(width="600", height="400")
sankey = SankeyWidget(links=links, layout=layout)
sankey.auto_save_png('./img/test.png')
出力の画像のサイズは幅:600ピクセル,高さ:400ピクセルで、PNG形式で保存します。
説明するまでもないですが、加入した選手が5名で移籍した選手が2名の流れが表現できました。
(見てくれはショボいですが、一応流れは表現できそうですね)
まとめ
- 「pythonでsankeyダイアグラム」@deaikeiさんやdemo:Exporting Images.ipynbの二番煎じでまだ勉強が足りない。
- J'S GOAL’Sサイトでは、**著作権について文書・画像・映像等の複製禁止と明示しています。**なのででスクレイピング手法や可視化の結果の共有は行いません。
- サンキーダイアグラムの可視化に関して知見が得られた。