2011年8月18日木曜日

AndroidでGoogle Chart ToolsのImage Charts使って円グラフを描く

以前にAFreeChart,AChartEngineを使ってAndroidアプリに円グラフを表示させてみた。
今回はGoogle Chart Tools: Image Chartsを使ってグラフを表示させてみる。
Google Chart APIはチャート画像を返してくれるので、これをImageViewとかで表示させるだけでOK。ちなみにAPIのコール数に制限はないけど、1日あたり25万コール以上が想定されるなら、メールで知らせてくりゃってことらしい。
Google Chart Usage Policy

There's no limit to the number of calls per day you can make to the Google Chart API. However, we reserve the right to block any use that we regard as abusive. If you think your service will make more than 250,000 API calls per day, please let us know by mailing an estimate to chart-api-notifications@google.com.
パラメータは「List of Chart Parameters」見る。タイトルとか色とか背景色とか凡例の位置とか基本的にはなんでもパラメータあるし好きなように表示できそう。

とりあえず、前にやったデータの円グラフを表示させるコード。
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
        Display display = wm.getDefaultDisplay();

        String chart = "http://chart.apis.google.com/chart?cht=p3&chdlp=b";
        chart += "&chtt=" + URLEncoder.encode("サンプル");
        chart += "&chd=t:40,5,10,25,20,50";
        chart += "&chdl=Cupcake|Donut|Eclair|Froyo|Gingerbread|Honeycomb";
        chart += "&chs=" + display.getWidth() + "x" + (display.getHeight() / 3);

        try {
            ImageView imageview = (ImageView) findViewById(R.id.chart);
            InputStream is = (InputStream) new URL(chart).getContent();
            Drawable d = Drawable.createFromStream(is, "");
            is.close();
            imageview.setImageDrawable(d);
        } catch (MalformedURLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
画像をとってきて表示させてるだけなので、AFreeChart、AChartEngineより敷居は引くく簡単に導入できる印象。当然だけど2つと違って、INTERNETのpermissionは必要。