くらげになりたい。

くらげのようにふわふわ生きたい日曜プログラマなブログ。趣味の備忘録です。

AChartEngineで円グラフを書こう!

前回に引き続き、AChartEngineの話。
とりあえず、円グラフを書いてみる。

対応するModelとRendererは下記の通り。

  • Model: CategorySeries
  • Renderer: DefaultRenderer


まずはModelにデータを突っ込む。

CategorySeries series = new CategorySeries(null);
series.add("seriesA", 30);
series.add("seriesB", 20);
series.add("seriesC", 10);

次にRenderで描画の調整。

DefaultRenderer renderer = new DefaultRenderer();
// ラベルの文字サイズを指定。
renderer.setLabelsTextSize(20);
//ラベルの文字の色を指定
renderer.setLabelsColor(getResources().getColor(android.R.color.secondary_text_light));
//ラベルを表示する or しないを指定。デフォルトは表示する
renderer.setShowLabels(true);
//図の下に出る凡例の文字サイズを指定
renderer.setLegendTextSize(30);
//凡例を表示する or しないを指定。デフォルトは表示する
renderer.setShowLegend(true);
//データの数字を表示する or しないを指定。デフォルトは表示しない
renderer.setDisplayValues(true);
//フォントの指定。個人的にBOLDがいい感じだった。
renderer.setTextTypeface(Typeface.DEFAULT_BOLD);
//スタートの角度を指定。デフォルトでは、3時の方向。12時の方向からスタートの場合は270を指定。
renderer.setStartAngle(270);
// Zoomボタンの表示
renderer.setZoomButtonsVisible(true);

円グラフで注意することは、下記の2つ。

  1. データを突っ込む順序
    • 円グラフの表示順はデータを突っ込んだ順。大きい順から表示したい場合は、自分で順序を考慮しなければならない。
  2. スタートの角度
    • なんとスタートの角度は3時の方向。。。12時の方向からスタートしたい場合は、「renderer.setStartAngle(270)」が必要。


最後に、Viewを作成して、好きなとこに突っ込むだけ。

GraphicalView view = ChartFactory.getPieChartView(getActivity(), series, renderer);

ViewGroup vg = (ViewGroup) getView().findViewById(R.id.linearlayout);
vg.addView(view);


ちなみに想定するXMLはこちら。

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    android:id="@+id/lenearlayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" />