簡単な紹介をすると、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]
フォントの色やサイズももちろんカストマイズ可能です。
すこし気になる事がありました。
- ビジネスグラフとしては十分な機能でしたが、非常にレスポンスが遅い。かなり混雑しているのでしょう。しかしその対策は用意されているようで、URLはいくつか用意されているようです。そちらを使えばもっと早くなるかも。
- これは私だけの経験かもしれませんが、linechart(線グラフ)で折れ線の数が少ないと前にリクエストされたイメージが帰ってくることがあります。この問題、どなたかご存知でしたら教えてください。
そんなこともあって、Google Chartの換わりにMatplotlibを、そして当然numpyも併行して使う事にしました。
0 件のコメント:
コメントを投稿