AChartEngine条形图条形对齐

时间:2012-08-01 20:43:33

标签: android bar-chart achartengine alignment

我遇到了Achartengine的一些问题。我知道这非常有用。 我正面临着条形对齐问题。我的标签位于中心,而我的酒吧似乎有点流离失所。 我为图片添加了一个链接:

BarChart Alignment

标签对齐方式为橙色,条形对齐方式为绿色。就像你会注意到这种行为发生在整个条形图上。 这是我的代码:

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的错误吗?

2 个答案:

答案 0 :(得分:2)

制作你的间距renderer.setBarSpacing(-0.5),看它对你来说非常合适,你的酒吧会得到正确的对齐。

答案 1 :(得分:1)

尝试注释掉renderer.setBarSpacing(0.75)调用,你应该得到很好的条形对齐。

相关问题