ともちゃんのアプリ開発日記

組込みC言語プログラマだったともちゃんが、四苦八苦しながら、AndroidのJAVA/Kotlin、iOSのSwiftUIを習得して行きます。ともちゃんの備忘録も兼ねています。

AChartEngineで円グラフを描く

AChartEngineで円グラフを描く

public void displayPieChart(
int dataCount,
String label[],
int data[],
int kind
) {

Resources resources = context.getResources();

if (dataCount == 0) {
chartLayout.removeAllViews();
return;
}

CategorySeries series = new CategorySeries(null);

String actualLabel = "";
for (int i=0; i<dataCount; i++) {
actualLabel = label[i] + "(" + String.valueOf(data[i]) + resources.getString(R.string.yen) + ")";
series.add(actualLabel, data[i]);
}

DefaultRenderer renderer = new DefaultRenderer();

renderer.setShowLabels(false); //ラベルを表示するか
// renderer.setLabelsTextSize(15); //ラベルの文字サイズ
renderer.setShowLegend(true); //凡例を表示するか
renderer.setLegendTextSize(24); //凡例の文字サイズ
//データの数字を表示する or しないを指定。デフォルトは表示しない
renderer.setDisplayValues(false);
//スタートの角度を指定。デフォルトでは、3時の方向。12時の方向からスタートの場合は270を指定。
renderer.setStartAngle(270);
// スクロール禁止
renderer.setPanEnabled(false);
// ズーム禁止
renderer.setZoomEnabled(false);

String[] colors = {
"#F44336", // Red
"#E91E63", // Pink
"#9C27B0", // Purple
"#673AB7", // Deep Purple
"#3F51B5", // Indigo
"#2196F3", // Blue
"#03A9F4", // Light Blue
"#00BCD4", // Cyan
"#009688", // Teal
"#4CAF50", // Green
"#AED581", // Light Green
"#CDDC39", // Lime
"#FFEB3B", // Yellow
"#FFC107", // Amber
"#FF9800", // Orange
"#FF5722", // Deep Orange
"#795548", // Brown
"#9E9E9E", // Gray
"#607D8B", // Blue Gray
};

DatabaseManager databaseManager = new DatabaseManager();
for (int i=0; i<dataCount; i++) {
SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();
if (kind == databaseManager.DB_KIND_SPENDING) {
seriesRenderer.setColor(Color.parseColor(colors[i % colors.length]));
} else {
seriesRenderer.setColor(Color.parseColor(colors[(colors.length-1)-(i % colors.length)]));
}
renderer.addSeriesRenderer(seriesRenderer);
}

GraphicalView mChartView = ChartFactory.getPieChartView(context, series, renderer);
chartLayout.removeAllViews();
chartLayout.addView(mChartView);

}