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 に答える