如何使堆叠条在AChartEngine中具有相同的宽度

时间:2012-11-09 12:40:30

标签: android alignment bar-chart achartengine

我想在条形图中绘制带有AChartEngine的2个堆积条形图,就像在SalesBarChart示例中一样。我的问题是,具有相同X值的条不具有相同的宽度,即较大的条比较小的条宽,请参见下图。

enter image description here

源代码:

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);

如何实现两个条的宽度相同?

1 个答案:

答案 0 :(得分:2)

当2系列具有不同数量的项目时会发生这种情况。请确保该系列具有相同的长度。