Google Chart API使ってみた・・・が。

あるWebアプリケーションを作る際に、折れ線グラフを表示する必要があったので、少し前に話題になっていたGoogle Chartを使ってみました。
参考にしたページはこのあたりです。

URLにパラメータを指定するだけなので、それほどドキュメントを読まなくても簡単に表示させることはできました。
しかし、以下のようなデータを入れたときに正しく表示されなくなりました。
chd=t:10,20,40,80,100,120,240

データに100以上の値を入れても、それ以上チャートが上に行きません。
なんでだ?と思って、ドキュメントを読んだところ、チャートデータの表現方法は以下の3種類がありました。

Simple encoding

chd=s:〜と入力します。
Aが0を表し、アルファベットの大文字→小文字→数字と1ずつ増えてゆき、最大で9 = 61まで表現できます。
欠損値には、_を使います。

Text encoding

chd=s:〜と入力します。
数字でデータを入力でき、0.0から100.0まで表現できます。
欠損値には-1を使います。

Extended encoding

chd=e:〜と入力します。
AAが0を表し、ABで1、A9で61、A-で62、A.で63、BAで64で最大で.. = 4095まで表現できます。
欠損値には_を使います。



今回使ったchd=t:〜の場合は、Text encodingで100までの値しか使えなかったようです。
おそらく、URLが長くなりすぎるのを防ぐための処置だと思われます。
追記:id:wakizakaの指摘によると、Text encodingは値を%に変換して使うもののようです。どちらかといえば、円グラフとかで使うのかな?
ということで、100以上を表現するにはExtended encodingを使うしかないのですが、わざわざ値を変換する部分を書くのも面倒くさいし、4095までしか表現できないと後々不都合がありそうだったので、結局JFreeChartを使うことにしました。


ライブラリ

その後、JFreeChartに変更してからRSSを読んでいると、以下の記事を発見しました。
http://www.mashupedia.jp/docs/view/61
この中でGoogle Chart APIを使うためのライブラリが紹介されていました。
これらのライブラリを使うと、値をExtended encodingにしてくれたり、細かいパラメータの設定をすることができ、その結果のURLを吐き出してくれます。
もうちょっと早く知ってれば、Google Chartを使ったかもしれないのですが・・・。

URLをいじるだけに比べ、こういったライブラリを使うと複雑なグラフの設定もできますが、手軽さのメリットがなくなってしまいますね。