1

SalesBarChart の例のように、 AChartEngineで 2 つの積み上げ棒グラフを描画したいと考えています。私の問題は、同じ X 値を持つバーの幅が同じでないことです。つまり、大きなバーは小さなバーよりも幅が広いです。下の画像を参照してください。

ここに画像の説明を入力

ソースコード:

renderer = new XYMultipleSeriesRenderer();
// Set chart parameters
renderer.setBarSpacing(0.5);
// Margin background color
renderer.setMarginsColor(Color.rgb(0xF3, 0xF3, 0xF3));
// Disable pan and zoom
renderer.setPanEnabled(false, false);
renderer.setZoomEnabled(false, false);
// Text sizes
renderer.setAxisTitleTextSize(16);
renderer.setChartTitleTextSize(20);
renderer.setLabelsTextSize(16);
renderer.setLegendTextSize(16);
// X axis
renderer.setXLabelsColor(Color.BLACK);
renderer.setXLabelsAlign(Align.RIGHT);
// TODO: adjust axis limits depending on time series
// Y axis
renderer.setYAxisMin(0);
renderer.setYAxisMax(200);
renderer.setYLabels(10);
renderer.setYLabelsColor(0, Color.BLACK);
renderer.setYLabelsAlign(Align.RIGHT);

// Configure renderer for normal and alarm time series
XYSeriesRenderer alarmRenderer = new XYSeriesRenderer();
alarmRenderer.setColor(Color.rgb(0xCC, 0x00, 0x00));
renderer.addSeriesRenderer(alarmRenderer);
XYSeriesRenderer normRenderer = new XYSeriesRenderer();
normRenderer.setColor(Color.rgb(0x99, 0xCC, 0x00));
renderer.addSeriesRenderer(normRenderer);

[...]

dataset = new XYMultipleSeriesDataset();
renderer.setChartTitle(items[which]);
// Dummy Data TODO: replace with real data
Random r = new Random();
int limit = 100;
normValues = new TimeSeries("Normal");
alarmValues = new TimeSeries("Alarm");
dataset.addSeries(alarmValues);
dataset.addSeries(normValues);
for (int i = 0; i < 100; i++) {
    Date date = new Date(i*1000);
    int value = 70+r.nextInt(60);
    if (value <= limit) {
        normValues.add(date, value);
    } else {
        normValues.add(date, 100);
        alarmValues.add(date, value);
    }
}

            if (!init) {
                trend.removeView(chart);
            }
            chart = ChartFactory.getBarChartView(getActivity(), dataset, renderer, Type.STACKED);
            chart.setBackgroundColor(Color.TRANSPARENT);
            chart.setLayoutParams(params);
            chart.setPadding(6, 20, 6, 0);
            trend.addView(chart, 0);

両方のバーの幅が同じになるようにするにはどうすればよいですか??

4

1 に答える 1

2

これは、2 つのシリーズのアイテム数が異なる場合に発生します。シリーズの長さが同じであることを確認してください。

于 2012-11-09T14:08:39.523 に答える