【问题标题】:How to display Bar Chart properly in AChart Engine android如何在 AChart Engine android 中正确显示条形图
【发布时间】:2013-07-15 19:44:23
【问题描述】:

我正在使用 AChart Engine 显示条形图,并希望显示这样的条形图:

但结果是这样的:

这非常令人沮丧,我在过去的 4 个小时里一直在尝试给它一个正确的格式,但失败了。我在互联网上搜索了一个合适的教程,但无法管理。你能告诉我应该包括什么 sn-p 吗?

这是我尝试的代码:

public class BarGraph{

    public GraphicalView getView(Context context) 
    {   
        // Bar 1

        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

        CategorySeries ac = new CategorySeries("AC");
        CategorySeries pe = new CategorySeries("PE");
        CategorySeries wa = new CategorySeries("WA");
        CategorySeries tl = new CategorySeries("TL");
        CategorySeries ml = new CategorySeries("ML");
        CategorySeries ce = new CategorySeries("CE");
        CategorySeries re = new CategorySeries("RE");
        CategorySeries ot = new CategorySeries("OT");
        ac.add(291);
        dataset.addSeries(ac.toXYSeries());
        pe.add(11);
        dataset.addSeries(pe.toXYSeries());
        wa.add(204);
        dataset.addSeries(ac.toXYSeries());
        tl.add(28);
        dataset.addSeries(pe.toXYSeries());
        ml.add(0);
        dataset.addSeries(ac.toXYSeries());
        ce.add(21);
        dataset.addSeries(pe.toXYSeries());
        re.add(51);
        dataset.addSeries(ac.toXYSeries());
        ot.add(4);
        dataset.addSeries(pe.toXYSeries());


        XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
        mRenderer.setChartTitle("Submission Statistics");
        mRenderer.setXTitle("Verdict Code");
        mRenderer.setYTitle("No. of Submissions");
        mRenderer.setAxesColor(Color.BLACK);
        mRenderer.setLabelsColor(Color.BLACK);
        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(Color.WHITE);
        mRenderer.setMarginsColor(Color.WHITE);
        mRenderer.setZoomEnabled(true);
        mRenderer.setZoomButtonsVisible(true);

        XYSeriesRenderer renderer = new XYSeriesRenderer();
        renderer.setColor(Color.parseColor("#00AA00"));
        renderer.setDisplayChartValues(true);
        renderer.setChartValuesSpacing((float) 0.5);

        XYSeriesRenderer renderer2 = new XYSeriesRenderer();
        renderer2.setColor(Color.parseColor("#666600"));
        renderer2.setDisplayChartValues(true);
        renderer2.setChartValuesSpacing((float) 0.5);

        XYSeriesRenderer renderer3 = new XYSeriesRenderer();
        renderer3.setColor(Color.parseColor("#FF0000"));
        renderer3.setDisplayChartValues(true);
        renderer3.setChartValuesSpacing((float) 0.5);

        XYSeriesRenderer renderer4 = new XYSeriesRenderer();
        renderer4.setColor(Color.parseColor("#0000FF"));
        renderer4.setDisplayChartValues(true);
        renderer4.setChartValuesSpacing((float) 0.5);

        XYSeriesRenderer renderer5 = new XYSeriesRenderer();
        renderer5.setColor(Color.parseColor("#6767D0"));
        renderer5.setDisplayChartValues(true);
        renderer5.setChartValuesSpacing((float) 0.5);

        XYSeriesRenderer renderer6 = new XYSeriesRenderer();
        renderer6.setColor(Color.parseColor("#AAAA00"));
        renderer6.setDisplayChartValues(true);
        renderer6.setChartValuesSpacing((float) 0.5);

        XYSeriesRenderer renderer7 = new XYSeriesRenderer();
        renderer7.setColor(Color.parseColor("#00AAAA"));
        renderer7.setDisplayChartValues(true);
        renderer7.setChartValuesSpacing((float) 0.5);

        XYSeriesRenderer renderer8 = new XYSeriesRenderer();
        renderer8.setColor(Color.parseColor("#000000"));
        renderer8.setDisplayChartValues(true);
        renderer8.setChartValuesSpacing((float) 0.5);


        mRenderer.addSeriesRenderer(renderer);
        mRenderer.addSeriesRenderer(renderer2);
        mRenderer.addSeriesRenderer(renderer3);
        mRenderer.addSeriesRenderer(renderer4);
        mRenderer.addSeriesRenderer(renderer5);
        mRenderer.addSeriesRenderer(renderer6);
        mRenderer.addSeriesRenderer(renderer7);
        mRenderer.addSeriesRenderer(renderer8);

        return ChartFactory.getBarChartView(context, dataset,mRenderer, Type.DEFAULT);
    }

}

【问题讨论】:

    标签: android achartengine


    【解决方案1】:

    我建议不要构建CategorySeries,而是构建XYSeries。然后,在第一个系列中执行:series.add(1, 291); 第二个将是 series.add(2, 11);,依此类推。

    【讨论】:

    • 谢谢!好的,我会尝试让你知道我得到了什么:)
    • 按照您的建议后,图表看起来不错:) 但我无法增加条形宽度。我使用了mRenderer.setBarSpacing(-0.5);,它稍微增加了条形宽度。但是这个负值是如何工作的呢?
    • 在您的情况下,您可以使用 mRenderer.setBarWidth(widthInPixels) 因为每个系列都有一个项目。
    • 我尝试使用setBarWidth(),但无法使用:(我正在使用achartengine-0.7.0.jar
    • 哎哟。使用最新版本。
    猜你喜欢
    • 2013-07-14
    • 1970-01-01
    • 2016-05-16
    • 2012-12-05
    • 2017-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-19
    相关资源
    最近更新 更多