2012-08-01 117 views
3

我在Achartengine遇到一些问题。我知道这非常有用。 我正面临酒吧对齐问题。我的标签在中间,而我的酒吧似乎有点流离失所。 我把一个链接的图像: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的错误吗?

回答

1

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

+0

我的意图是正确对齐条形和维持它们之间的偏移。 AChartEngine afaik不允许您在开始渲染时明确对齐条形图。 – learner 2012-08-02 14:19:31

2

使您的间距renderer.setBarSpacing(-0.5),看到它会完美的为你工作,你会得到适当的对齐你的酒吧。

+0

非常感谢。 – 2014-06-18 13:57:55