如何显示AChartEngine条形图正确 [英] How to Display AChartEngine bar chart properly

查看:134
本文介绍了如何显示AChartEngine条形图正确的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的 achartengine 1.0.1 (最新的),并希望证明柱状图。

这就是我想要的:

我的期望图

我迄今取得

1:1的看法:

的缩小查看:

问题:

  1. 图的左侧和右侧部分消失在1:1。查看
  2. 在酒吧之​​间的距离是如此的高。我需要减少它。
  3. 在该酒吧是不恰当的文字标签之上。
  4. 的文本标签的颜色为白色。我试过 setLabelColor(),但不工作。
  5. 文本,规模以上的酒吧小。
  6. XAXIS文本交流,WA等是重叠的1,2,3,我想删除1,2,3和只显示AC,WA等

你知道如何解决这些问题呢?我需要一个图形大约像我的所需的图的。先谢谢了。

编辑:

这是我的艰难code:

 公共GraphicalView getView(上下文的背景下)
    {
        //吧1

        XYMultipleSeriesDataset数据集=新XYMultipleSeriesDataset();

        XYSeries交流=新XYSeries(AC);
        XYSeries PE =新XYSeries(PE);
        XYSeries WA =新XYSeries(WA);
        XYSeries TL =新XYSeries(TL);
        XYSeries毫升=新XYSeries(ML);
        XYSeries CE =新XYSeries(CE);
        XYSeries重新=新XYSeries(RE);
        XYSeries OT =新XYSeries(旧约);
        ac.add(1,291);
        pe.add(2,11);
        wa.add(3,204);
        tl.add(4,28);
        ml.add(5,0);
        ce.add(6,21);
        re.add(7,51);
        ot.add(8,4);
        dataset.addSeries(交流);
        dataset.addSeries(PE);
        dataset.addSeries(WA);
        dataset.addSeries(TL);
        dataset.addSeries(毫升);
        dataset.addSeries(CE);
        dataset.addSeries(重);
        dataset.addSeries(OT);


        XYMultipleSeriesRenderer mRenderer =新XYMultipleSeriesRenderer();
        mRenderer.setChartTitle(提交统计);
        mRenderer.setXTitle(判决书code);
        mRenderer.setYTitle(没有意见的。);
        mRenderer.setAxesColor(Color.BLACK);
        mRenderer.setLabelsColor(Color.BLACK);
        mRenderer.setApplyBackgroundColor(真正的);
        mRenderer.setBackgroundColor(Color.WHITE);
        mRenderer.setMarginsColor(Color.WHITE);
        mRenderer.setZoomEnabled(真正的);
        mRenderer.setZoomButtonsVisible(真正的);
        mRenderer.setBarSpacing(-0.5);
// mRenderer.setMargins(新INT [] {20,30,15,0});
        mRenderer.setAxisTitleTextSize(16);
        mRenderer.setChartTitleTextSize(20);
        mRenderer.setLabelsTextSize(15);
        mRenderer.setLegendTextSize(15);
        mRenderer.addXTextLabel(1,AC);
        mRenderer.addXTextLabel(2,PE​​);
        mRenderer.addXTextLabel(3,WA);
        mRenderer.addXTextLabel(4,TL);
        mRenderer.addXTextLabel(5,ML);
        mRenderer.addXTextLabel(6,CE);
        mRenderer.addXTextLabel(7,RE);
        mRenderer.addXTextLabel(8,OT);
        mRenderer.setBarWidth(50);
// mRenderer.setXAxisMax(9);
        mRenderer.setXAxisMin(0);
        mRenderer.setYAxisMin(0);

        XYSeriesRenderer渲染器=新XYSeriesRenderer();
        renderer.setColor(Color.parseColor(#00AA00));
        renderer.setDisplayChartValues​​(真正的);



        XYSeriesRenderer renderer2 =新XYSeriesRenderer();
        renderer2.setColor(Color.parseColor(#666600));
        renderer2.setDisplayChartValues​​(真正的);

        XYSeriesRenderer renderer3 =新XYSeriesRenderer();
        renderer3.setColor(Color.parseColor(#FF0000));
        renderer3.setDisplayChartValues​​(真正的);

        XYSeriesRenderer renderer4 =新XYSeriesRenderer();
        renderer4.setColor(Color.parseColor(#0000FF));
        renderer4.setDisplayChartValues​​(真正的);

        XYSeriesRenderer renderer5 =新XYSeriesRenderer();
        renderer5.setColor(Color.parseColor(#6767D0));
        renderer5.setDisplayChartValues​​(真正的);

        XYSeriesRenderer renderer6 =新XYSeriesRenderer();
        renderer6.setColor(Color.parseColor(#AAAA00));
        renderer6.setDisplayChartValues​​(真正的);

        XYSeriesRenderer renderer7 =新XYSeriesRenderer();
        renderer7.setColor(Color.parseColor(#00AAAA));
        renderer7.setDisplayChartValues​​(真正的);

        XYSeriesRenderer renderer8 =新XYSeriesRenderer();
        renderer8.setColor(Color.parseColor(#000000));
        renderer8.setDisplayChartValues​​(真正的);


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

        返回ChartFactory.getBarChartView(背景下,数据集,mRenderer,Type.DEFAULT);
    }
 

修改(以后将丹的建议)

我的新code:

  .........
mRenderer.setChartTitle(提交统计);
        mRenderer.setXTitle(判决书code);
        mRenderer.setYTitle(没有意见的。);
        mRenderer.setAxesColor(Color.BLACK);
        mRenderer.setApplyBackgroundColor(真正的);
        mRenderer.setBackgroundColor(Color.WHITE);
        mRenderer.setMarginsColor(Color.WHITE);
        mRenderer.setZoomEnabled(真正的);
        mRenderer.setBarSpacing(-0.5);
        mRenderer.setMargins(新INT [] {20,30,15,0});
        mRenderer.setShowLegend(假);
        mRenderer.setAxisTitleTextSize(16);
        mRenderer.setChartTitleTextSize(20);
        mRenderer.setLabelsTextSize(15);
        mRenderer.setLegendTextSize(15);
        mRenderer.addXTextLabel(1,AC);
        mRenderer.addXTextLabel(2,PE​​);
        mRenderer.addXTextLabel(3,WA);
        mRenderer.addXTextLabel(4,TL);
        mRenderer.addXTextLabel(5,ML);
        mRenderer.addXTextLabel(6,CE);
        mRenderer.addXTextLabel(7,RE);
        mRenderer.addXTextLabel(8,OT);
        mRenderer.setBarWidth(50);
        mRenderer.setXAxisMin(-2);
        mRenderer.setXAxisMax(11);
        mRenderer.setYAxisMin(0);
        mRenderer.setYLabelsAlign(Align.RIGHT);
        mRenderer.setXLabelsColor(Color.BLACK);
        mRenderer.setYLabelsColor(0,Color.BLACK);
        mRenderer.setXLabels(0);
        mRenderer.setChartValues​​TextSize(16);
.........
 

现在的问题是:

  1. mRenderer.setChartValues​​TextSize(大小); 是行不通的,因为它是 德precated
  2. 栏文本现在仍然很小,直到
  3. 的最高的酒吧在顶部
  4. 分拆 X轴标签是不符合巴正确对准
解决方案

按照你的编号方案:

    mRenderer.setXAxisMax; mRenderer.setXAxisMin(分钟):
  1. 您可以通过设置可见区域的X轴最小值和最大值解决这个问题(最大);
  2. 您可以通过增加宽度或通过使用上述的方法,例如有在左,右更多的空间减少了。
  3. 有一个打开的问题这一点。
  4. 尝试 mRenderer.setXLabelsColor(彩色);
  5. renderer.setChartValues​​TextSize(大小);
  6. mRenderer.setXLabels(0)

编辑:

  1. 使用 renderer.setChartValues​​TextSize(大小);
  2. 在同#1。
  3. mRenderer.setYAxisMax(300);
  4. 已知问题:的http:// code .google.com / P / achartengine /问题/详细信息?ID = 312

I am using achartengine 1.0.1 (latest) and want to demonstrate a bar chart.

This is what I want:

My Desired Graph

What I achieved so far

1:1 view:

Zoom-out View:

Problems:

  1. the left and right portion of graph are lost in 1:1 view.
  2. The distance between Bar is so much high. I need to reduce it.
  3. The Bar is not appropriately above the text label.
  4. The text label color is white. I tried setLabelColor() but not working.
  5. The text-size above bar is small.
  6. XAxis Text "AC", "WA" etc are overlapping with 1, 2, 3. I want to remove 1, 2, 3 and only show "AC", "WA" etc.

Do you know how to fix these problems? I need a graph approximately like my desired graph. Thanks in advance.

Edit:

This is my trying code:

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

        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();

        XYSeries ac = new XYSeries("AC");
        XYSeries pe = new XYSeries("PE");
        XYSeries wa = new XYSeries("WA");
        XYSeries tl = new XYSeries("TL");
        XYSeries ml = new XYSeries("ML");
        XYSeries ce = new XYSeries("CE");
        XYSeries re = new XYSeries("RE");
        XYSeries ot = new XYSeries("OT");
        ac.add(1, 291);
        pe.add(2, 11);
        wa.add(3, 204);
        tl.add(4, 28);
        ml.add(5, 0);
        ce.add(6, 21);
        re.add(7, 51);
        ot.add(8, 4);
        dataset.addSeries(ac);
        dataset.addSeries(pe);
        dataset.addSeries(wa);
        dataset.addSeries(tl);
        dataset.addSeries(ml);
        dataset.addSeries(ce);
        dataset.addSeries(re);
        dataset.addSeries(ot);


        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);
        mRenderer.setBarSpacing(-0.5);
//      mRenderer.setMargins(new int[] {20, 30, 15, 0});
        mRenderer.setAxisTitleTextSize(16);
        mRenderer.setChartTitleTextSize(20);
        mRenderer.setLabelsTextSize(15);
        mRenderer.setLegendTextSize(15);
        mRenderer.addXTextLabel(1, "AC");
        mRenderer.addXTextLabel(2, "PE");
        mRenderer.addXTextLabel(3, "WA");
        mRenderer.addXTextLabel(4, "TL");
        mRenderer.addXTextLabel(5, "ML");
        mRenderer.addXTextLabel(6, "CE");
        mRenderer.addXTextLabel(7, "RE");
        mRenderer.addXTextLabel(8, "OT");
        mRenderer.setBarWidth(50);
//      mRenderer.setXAxisMax(9);
        mRenderer.setXAxisMin(0);
        mRenderer.setYAxisMin(0);

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



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

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

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

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

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

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

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


        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);
    }

Edit (After applying Dan's suggestion)

My new code:

.........
mRenderer.setChartTitle("Submission Statistics");
        mRenderer.setXTitle("Verdict Code");
        mRenderer.setYTitle("No. of Submissions");
        mRenderer.setAxesColor(Color.BLACK);
        mRenderer.setApplyBackgroundColor(true);
        mRenderer.setBackgroundColor(Color.WHITE);
        mRenderer.setMarginsColor(Color.WHITE);
        mRenderer.setZoomEnabled(true);
        mRenderer.setBarSpacing(-0.5);
        mRenderer.setMargins(new int[] {20, 30, 15, 0});
        mRenderer.setShowLegend(false);
        mRenderer.setAxisTitleTextSize(16);
        mRenderer.setChartTitleTextSize(20);
        mRenderer.setLabelsTextSize(15);
        mRenderer.setLegendTextSize(15);
        mRenderer.addXTextLabel(1, "AC");
        mRenderer.addXTextLabel(2, "PE");
        mRenderer.addXTextLabel(3, "WA");
        mRenderer.addXTextLabel(4, "TL");
        mRenderer.addXTextLabel(5, "ML");
        mRenderer.addXTextLabel(6, "CE");
        mRenderer.addXTextLabel(7, "RE");
        mRenderer.addXTextLabel(8, "OT");
        mRenderer.setBarWidth(50);
        mRenderer.setXAxisMin(-2);
        mRenderer.setXAxisMax(11);
        mRenderer.setYAxisMin(0);
        mRenderer.setYLabelsAlign(Align.RIGHT);
        mRenderer.setXLabelsColor(Color.BLACK);
        mRenderer.setYLabelsColor(0, Color.BLACK);
        mRenderer.setXLabels(0);
        mRenderer.setChartValuesTextSize(16);
.........

Now the problems are:

  1. mRenderer.setChartValuesTextSize(size); is not working as it is deprecated
  2. Bar text remains small till now
  3. The highest bar is split off at the top
  4. X Axis Label is not in proper alignment with bar

解决方案

Following your numbering scheme:

  1. You can fix this by setting the X axis min and max of the visible area: mRenderer.setXAxisMin(min); and mRenderer.setXAxisMax(max);
  2. You can reduce it by increasing the width or by using the above methods such as there is more space to the left and right.
  3. There is an opened issue for this.
  4. Try mRenderer.setXLabelsColor(color);
  5. renderer.setChartValuesTextSize(size);
  6. mRenderer.setXLabels(0);

Edit:

  1. Use renderer.setChartValuesTextSize(size);
  2. Same as #1.
  3. mRenderer.setYAxisMax(300);
  4. Known issue: http://code.google.com/p/achartengine/issues/detail?id=312

这篇关于如何显示AChartEngine条形图正确的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆