AchartEngine を使用して棒グラフを作成しました。下の画像のように、2 つの x グリッドの間のスペースに異なる色を設定するのが好きです。また、各軸ラベルの "-" 記号を削除する方法 (4hr- にある "-" を削除する必要があります)。色を設定できない場合は、4 つの y ラベルのみを表示し、最も高い値を一番上に表示します。また、2 つのラベルの間のスペースを自分で修正することも好きです。また、y ラベルに hr またはその他のテキストを追加する必要があります。以下のコードは私が使用するものです。また、値 0 の一部のデバイスでは、細い線が表示されます。値が 0 より大きい場合、バーのみが存在する必要があります。そして、私はこのようになります。質問の最後にあるようなグラフにしたいです。
int largest = y[0];
for (int i = 1; i < y.length; i++) {
if (y[i] > largest) {
largest = y[i];
}
}
CategorySeries series = new CategorySeries("");
for (int i = 0; i < y.length; i++) {
series.add("Bar" + (i + 1), y[i]);
}
XYMultipleSeriesDataset dataSet = new XYMultipleSeriesDataset();
dataSet.addSeries(series.toXYSeries()); // number of series
// customization of the chart
XYSeriesRenderer renderer = new XYSeriesRenderer(); // one renderer for
// one series
renderer.setColor(Color.RED);
renderer.setDisplayChartValues(false);
renderer.setChartValuesSpacing((float) 5.5d);
renderer.setLineWidth((float) 1.5d);
XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
mRenderer.addSeriesRenderer(renderer);
// mRenderer.setChartTitle("Demo Graph");
// mRenderer.setXTitle("xValues");
mRenderer.setYTitle("minutes");
mRenderer.setLabelsColor(getResources().getColor(R.color.txt_blue));
mRenderer.setShowGridX(false); // this will show the grid in graph
mRenderer.setShowGridY(false);
// mRenderer.setAntialiasing(true);
mRenderer.setBarSpacing(.5); // adding spacing between the line or
// stacks
// mRenderer.setApplyBackgroundColor(true);
// mRenderer.setBackgroundColor(Color.BLACK);
mRenderer.setXAxisMin(0);
mRenderer.setYAxisMin(0);
mRenderer.setXAxisMax(7);
mRenderer.setZoomInLimitY(10);
if (largest < 6) {
mRenderer.setYAxisMax(6);
} else {
mRenderer.setYAxisMax(largest);
}
mRenderer.setScale(4);
mRenderer.setXLabels(0);
mRenderer.addXTextLabel(1, "Sun");
mRenderer.addXTextLabel(2, "Mon");
mRenderer.addXTextLabel(3, "Tue");
mRenderer.addXTextLabel(4, "Wed");
mRenderer.addXTextLabel(5, "Thu");
mRenderer.addXTextLabel(6, "Fri");
mRenderer.addXTextLabel(7, "Sat");
// mRenderer.setYLabels(0);
//
// mRenderer.addYTextLabel(2, "2 min");
//
// mRenderer.addYTextLabel(4, "4 min");
//
// mRenderer.addYTextLabel(6, "6 min");
// mRenderer.addYTextLabel(7, "Sat");
mRenderer.setXLabelsColor(getResources().getColor(R.color.txt_blue));
mRenderer.setYLabelsColor(0, getResources().getColor(R.color.txt_blue));
mRenderer.setLabelsColor(getResources().getColor(R.color.txt_blue));
// mRenderer.setYLabelsAlign(Align.RIGHT);
mRenderer.setYLabelsPadding(20);
mRenderer.setPanEnabled(false, false);
mRenderer.setZoomEnabled(false, false);
mRenderer.setPanEnabled(false, false); // will fix the chart position
// Intent intent = ChartFactory.getBarChartIntent(context, dataSet,
// mRenderer,Type.DEFAULT);
mRenderer.setBarSpacing(1);
// mRenderer.setYLabelsPadding(5);
mRenderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01));
mRenderer.setShowAxes(false);
// mRenderer.setXAxisMin(-0.5);
// 1080 x 1920
if (screen_width == 480 && screen_height == 800) {
mRenderer.setAxisTitleTextSize(15);
mRenderer.setLabelsTextSize(15);
} else if (screen_width > 480 && screen_width < 1000
&& screen_height > 800 && screen_height < 1700) {
mRenderer.setAxisTitleTextSize(20);
mRenderer.setLabelsTextSize(20);
}
else if (screen_width > 1000 && screen_height > 1700) {
mRenderer.setAxisTitleTextSize(30);
mRenderer.setLabelsTextSize(30);
} else if (screen_width < 480 && screen_height < 800) {
mRenderer.setAxisTitleTextSize(10);
mRenderer.setLabelsTextSize(10);
}
mRenderer.setShowLegend(false);
mChart = (GraphicalView) ChartFactory.getBarChartView(getBaseContext(),
dataSet, mRenderer, Type.DEFAULT);
// Adding the Line Chart to the LinearLayout
chartContainer.addView(mChart);