1

我想用 AChartEngine 绘制一个带有 2 个堆叠条的条形图,就像在SalesBarChart示例中一样。我的问题是,具有相同 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 回答