Help us understand the problem. What is going on with this article?

2020年Jリーグの移籍状況を可視化したいんだけど、どうする?

動機

  • サッカーは、毎シーズン多くの選手が移籍します。
  • 今シーズンの公式サイトには、1650名(2020/1/31時点)の選手が登録されています。
  • また、移籍情報を公開しているサイトJ'S GOAL’Sサイトに移籍情報が上がっています。
  • 以前から、この選手の流動状態を可視化出来ないものかと考えていました。
  • Google先生に「流入流出 グラフ」と検索しても使えそうなものはヒットしませんでした。
  • それを「流入流出 可視化」とすると「サンキーダイアグラム」を発見!これは使えるかも!

サンキーダイアグラムについて

サンキー・ダイアグラム(英Sankey diagram)は工程間の流量を表現する図表である。矢印の太さで流れの量を表している。特にエネルギーや物資、経費等の変位を表す為に使われる。

出典: フリー百科事典『ウィキペディア(Wikipedia)』

本家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形式で保存します。
sample_sapporo.png

説明するまでもないですが、加入した選手が5名で移籍した選手が2名の流れが表現できました。
(見てくれはショボいですが、一応流れは表現できそうですね)

まとめ

  • 「pythonでsankeyダイアグラム」@deaikeiさんやdemo:Exporting Images.ipynbの二番煎じでまだ勉強が足りない。
  • J'S GOAL’Sサイトでは、著作権について文書・画像・映像等の複製禁止と明示しています。なのででスクレイピング手法や可視化の結果の共有は行いません。
  • サンキーダイアグラムの可視化に関して知見が得られた。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした