2010年9月9日木曜日

Google Chartの日本語表示

続いてGoogle Chartです。
簡単な紹介をすると、Google chartはGET、POSTでリクエストを送るとグラフがダウンロードされる便利なツール。

ある調査のレポートでは便利に使わせていただきました。
同梱されているpygooglechart.pyを使って簡単にグラフをつくれます。

問題は私の場合はグラフに表示するデータのサイズが大きすぎて、GETでは送れないので、POSTに変更です。
オリジナルのdownload(self, file_name)、コードを修正して

    def download_post(self, file_name):
        url = self.BASE_URL[:-1]
        data = self.get_url_post()
        opener = urllib2.urlopen(url,data)
        if opener.headers['content-type'] != 'image/png':
            raise BadContentTypeException('Server responded with a ' \
                'content-type of %s' % opener.headers['content-type'])
        open(file_name, 'wb').write(opener.read())
とパッチしました。

次が日本語の表示です。
これもGoogle Groupで検索。

label,legendなど文字の表示を探し出して、utf-8エンコードに変更しました。
たとえば、チャートオブジェクトのlegendは
#            self.legend = [urllib.quote(a) for a in legend] 
            self.legend = [urllib.quote(a.encode("utf-8")) for a in legend]

フォントの色やサイズももちろんカストマイズ可能です。

すこし気になる事がありました。
  1. ビジネスグラフとしては十分な機能でしたが、非常にレスポンスが遅い。かなり混雑しているのでしょう。しかしその対策は用意されているようで、URLはいくつか用意されているようです。そちらを使えばもっと早くなるかも。
  2. これは私だけの経験かもしれませんが、linechart(線グラフ)で折れ線の数が少ないと前にリクエストされたイメージが帰ってくることがあります。この問題、どなたかご存知でしたら教えてください。
そんなこともあって、Google Chartの換わりにMatplotlibを、そして当然numpyも併行して使う事にしました。



0 件のコメント:

コメントを投稿