3

我在使用 Achartengine 时遇到了一些问题。这非常有用,我知道。我正面临一个条形对齐问题。我的标签在中间,而我的条似乎有点移位。我放了一个图片链接:

条形图对齐

标签对齐用橙色圈起来,而条形对齐用绿色圈起来。就像您会注意到这种行为发生在整个条形图上一样。这是我的代码:

public void execute(){
    for(int i = 0; i < xyRenderer.getSeriesRendererCount(); i++){
        SimpleSeriesRenderer seriesRenderer = xyRenderer.getSeriesRendererAt(i);
        seriesRenderer.setDisplayChartValues(true);
    }
    chartView = ChartFactory.getBarChartView(this.context, xyDataset, xyRenderer, BarChart.Type.STACKED);
}

private void setupRenderer(XYMultipleSeriesRenderer renderer){
    renderer.setXLabels(0);
    renderer.setMargins(new int[]{20, 20, 20, 20});
    renderer.setYLabels(5);
    renderer.setOrientation(Orientation.HORIZONTAL);
    renderer.setAxisTitleTextSize(12);
    renderer.setChartTitleTextSize(12);
    renderer.setLabelsTextSize(10);
    renderer.setLegendTextSize(10);
    renderer.setShowGrid(true);
    renderer.setFitLegend(true);    
    renderer.setXAxisMin(0);
    renderer.setYAxisMin(0);
    renderer.setXAxisMax(7);
    renderer.setYAxisMax(100);
    renderer.setXLabelsAlign(android.graphics.Paint.Align.CENTER);
    renderer.setXLabelsColor(Color.BLACK);
    renderer.setYLabelsColor(0, Color.BLACK);
    renderer.setAxesColor(Color.BLUE);
    renderer.setLabelsColor(Color.RED);
    renderer.setPanEnabled(false, false);
    renderer.setZoomEnabled(false, false);
    renderer.setApplyBackgroundColor(true);
    renderer.setGridColor(Color.argb(0x00, 0x01, 0x01, 0x01));
    renderer.setMarginsColor(Color.argb(0x00, 0x01, 0x01, 0x01));
    renderer.setBackgroundColor(Color.argb(0x00, 0x01, 0x01, 0x01));
    renderer.setBarSpacing(0.75);
    renderer.clearXTextLabels();
    renderer.setInScroll(true);
}

public void setChartData(HashMap<String, Double> teamData){
    createSeriesRenderer(1);

    double space = 0.75f;
    CategorySeries categorySeries = new CategorySeries("% aproveitamento");
    for(Map.Entry<String, Double> currentEntry : teamData.entrySet()){
        String label = currentEntry.getKey();
        DecimalFormat decimalFormat = new DecimalFormat("#0.0");
        String formattedNum = decimalFormat.format(currentEntry.getValue());
        xyRenderer.addXTextLabel(space, label);
        categorySeries.add(Double.parseDouble(formattedNum));
        space += 0.75;
    }

    xyDataset.addSeries(categorySeries.toXYSeries());
}

private void createSeriesRenderer(int howMany){
    for(int i = 0; i < howMany; i++){
        SimpleSeriesRenderer seriesRenderer = new SimpleSeriesRenderer();
        seriesRenderer.setColor(Color.RED);
        xyRenderer.addSeriesRenderer(seriesRenderer);
    }
}

最奇怪的是在 AChartEngine 条形样本上,这种行为不会发生并且条形正确对齐。这是 AChartEngine 的错误吗?

4

2 回答 2

2

让你的间距renderer.setBarSpacing(-0.5),看看它会完美地为你工作,你会得到你的酒吧的正确对齐。

于 2012-11-09T06:25:00.870 回答
1

尝试注释掉 renderer.setBarSpacing(0.75) 调用,您应该可以很好地对齐条形。

于 2012-08-02T08:33:24.763 回答