表題の通りです。
google様が公開している、グラフ作成APIであるGoogle Chart Toolsで折れ線グラフを書いてみました。
とりあえず、何かグラフ化に適したデータはないかと探しつつ・・・
というか、ごめんなさい。グラフ化したいデータがあったのでグラフ化する方法を探していたら、これに行き当たったのです(※1)。
というわけで、やってみた結果がこれ↓
NBA Eastern Conference 2009-2010 until 2010/03/09
今(2009-2010)シーズンの、アメリカプロバスケットリーグNBA東地区の、順位変動グラフです。
知っている方は知っていると思いますが、元ネタは、”元祖 勢いとゲーム差がわかるプロ野球順位変動グラフ“さん。このコンセプトがとても好きで、以前よりよく閲覧させていただいていたのですが、これをNBAでやってみたらどうだろうと思って、やってみたのが今回のグラフです。
最初なので色々試行錯誤はあったのですが(細切れ時間を使って作ったとはいえ、ここまでに3日掛かりました)、その中で最も苦労したのはURIの文字列長制限。このURI、2Kまでという制限があるのですが(2Kというのが2000なのか2048なのかは未確認)、NBAの東西各地区には15チームあり、それぞれ82ゲームを行うため、データ数としては15×82で1230個となります。2Kの制限を考慮すると1データにつき1バイト使ったとしても1230バイト。それにLabelやLegend分として数百バイトは使用しますから、このあたりをどうにかする必要があります。
ちなみにデータフォーマットは下記の4通り。
参考:http://code.google.com/intl/ja/apis/chart/docs/data_formats.html
Basic Text Format
単純にデータを”chd=t:val,val,val|val,val,val…”としていする形式。単純だけど、データは0から100までの間でしか指定できない。
Text Format with Custom Scaling
Basic Text Formatの形式に、各データ範囲を”chds=
Simple Encoding Format
A-Z,a-z,0-9を0から61に変換。62種類しか指定できないが、1データ=1バイトと文字列長としては最も短くできる。
Extended Encoding Format
A-Z,a-z,0-9,.-の64種を2文字重ねることで0から4095まで指定できる。1データ=2バイト。精度は高くなるがデータの解読性が低い。
このうち、まず最初に”Simple Encoding Format”を検討しましたが、ちょっと精度に難があり、次いで”Basic…”や”Text Format with Custom Scaling”を使ってみましたが、どうしても文字列長が長くなってしまい、最終的に”Extended Encoding Format”を使いました。とはいえ、1データ2バイトとなると2K制限を超えてしまうため、ここはデータ量でコントロール、82ゲーム全てではなく、2ゲーム毎、つまり半分の41ゲーム分をグラフ化することで対応としました。
結果として出来たグラフを見る限り、閲覧上の問題はないため、とりあえずはこんなところかなと思います。今後、もうちょっといじってみることにします。
ちなみに西地区分はこちら。
NBA Eastern Conference 2009-2010 until 2010/03/09
という感じで趣味に走ってみました。また次回。
※1 余談ですが、「やりたいことがあって、それを実現する技術や方法を模索する人」と「とある技術があって、それを活かせる分野を探す人」の間には、大きな差があるように感じます。私個人は完全に前者のタイプですが、優秀といわれるプログラマには後者のタイプが多いような。どちらが優れているかという議論に興味はありませんが、結果として出来上がるモノは同じであったとしても、そこに至るアプローチの違いはとても興味深いです。
