前回に引き続き、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つ。
- データを突っ込む順序
- 円グラフの表示順はデータを突っ込んだ順。大きい順から表示したい場合は、自分で順序を考慮しなければならない。
- スタートの角度
- なんとスタートの角度は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" />