2012年12月11日

FC東京の2012年の成績をグラフ化してみる

今年のJリーグもシーズンが終わりましたので、FC東京の結果をグラフで確認してみます。 FC東京をグラフの中心に据えて、他のチームを環状に配置し、それぞれのチームを接続します。 接続線の太さは得点数とします。 それを機械的に描画してみるとこんな感じになります。

個別のチーム名を確認したいときは、こちらのページで色々と動かせるようになっています。

考察

「線が太い」チームとの対戦では得点が多かったことを意味します。 FC東京の色 (青に設定) が濃い場合は東京が優勢、それ以外の色が濃い場合は東京が劣勢だったことになります。 どちらの線も濃くない相手とは得点があまりなかった試合です。

具体的なチームごとに見て行くと、仙台、札幌には大勝、ガンバとは点の取り合い、マリノスには得点が多めで勝利したことが分かります。 一方で、鹿島には大敗、フロンターレにも大きく負けています。 その他は結構トントン、ということで、無難な (得点があまり入らない) 試合が多かったと言えます。 SOCIO (= 年間チケット所有者) としてはちょっと寂しい結果ですね。。。 もうちょっと決定機に決めて欲しいところです!

勝ち点は個別の試合の勝敗に左右されますので、対戦相手ごとの得点数に大きな意味があるかは難しいところですが、 FC東京は18チーム中の10位でしたので、なんとなくの相関関係があるんじゃないかなぁと思います。 つまり、出て行く線が太いものが多いチームほど上位なんじゃないか、と。 もちろん、今年のガンバのように得点数が最多 (67得点) でもブービーで J2 に降格するチームもありますが、 ガンバの場合は失点も同様に多い (65失点) ので、グラフで見るとどのチームに大しても太い線でつながっているはずです。

全てのチームのグラフを作成して、それぞれの順位と照らし合わせてみると興味深いような気がします。 単なる思い付きですけど。

仕組み

テクニカルな話題としては、 GEXF (Graph Exchange XML Format) というファイル形式を使い、それのビューアー (gexf-js) とセットで配置しました。

GEXF は Gephi というグラフ生成ツールから生まれた XML フォーマットで、ノードとエッジの仕様を定義しています。 いくつかのプログラミング言語では GEXF を扱うライブラリもあり、Python だと NetworkX が良い感じです。 上記のFC東京のデータは、CSV から NetworkX 経由で GEXF ファイルを生成しました。 スクリプトは30行くらいで実装できますので、記事を改めて紹介しようと思います。

GEXF の基本的な構造は「GEXFの書き方」で触れられている内容になります。ビューアーで表示するためには、 viz 名前空間を使って位置や色などを指定してあげる必要があります。

終わりに

今年の J リーグが終わったので、最近流行のビジュアライゼーションっぽくグラフとして表現してみました。 試合の記憶は得点シーンと強く結びついていることが多いので、 「あのチームと対戦したときに点がたくさん入った (or まったく入らなかった) な」と思い出すきっかけになりました。 表形式 とは違った振り返りができるのではないかと思います。

ビジュアライゼーション、あるいはネットワークの可視化を実現する場合、どのようにデータを構成するかは悩ましい課題ですが、 GEXF という XML 形式で管理しておくとポータビリティが高まるのではないでしょうか。 GEXF は Gephi で閲覧できるのは当然として、上記の gexf-js をベースにして Web 上で共有できますし、 sigma.jsd3.js と組み合わせて独自のインタラクションを実現できます。 sigma.js の場合は sigma.parseGexf.js というプラグイン (Example) があり、GEXF ファイルを置いてパスを設定するだけで表示できます。 d3.js の場合も (日本語にこだわらなければ) 検索エンジンで様々な結果がヒットします。 「d3js.org 日本語化計画始動」という流れもありますので、今後は日本語の情報も増えてくることは確実です。

同じ情報でも普段とは違う見方をすることで得られる知見が変わってくることも多いでしょうから、 たまには「グラフ化」にも目を向けていこうと思いました。 来年はFC東京から出て行く太い線が増えると嬉しいですね。

コメントを投稿