AChart Enigne条形图 - 滚动到权当隐藏系列 [英] AChart Enigne Bar Chart - hide the series when scrolling to right

查看:265
本文介绍了AChart Enigne条形图 - 滚动到权当隐藏系列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用的是优秀的库AChart引擎生成柱状图。所有功能都工作正常,但我有几件事情,我是不是能解决:

这是我的屏幕截图:

现在有两件事情需要修复:

1)隐藏的系列,当它被滚动到权,目前该系列甚至三月也0,0之后是可见的。

2)的网格线是图表上的顶部,但它应是曲线图的后面。

3)如何显示在右上角,而不是底部的传说。

这是我的低于code:

 私人无效openChart(){
        INT [] X = {10,20,30,40,50,60,70,80};
       // INT [] Y = {10,20,30,40,50,60,70};
        INT [] =收入{20,25,27,30,28,35,37,38};
        INT []费用= {22,27,29,28,26,30,33,34};
        INT [] =样品22 {27,29,28,26,30,33,34};        //创建收入的XYSeries
        XYSeries incomeSeries =新XYSeries(收入);
        //创建了一个费用XYSeries
        XYSeries expenseSeries =新XYSeries(费用);
     //创建了一个费用XYSeries
        XYSeries sampleseries =新XYSeries(样本);
        //将数据添加到收入和支出系列
        的for(int i = 0; I< x.length;我++){
            incomeSeries.add(ⅰ,收入由[i]);
            expenseSeries.add(I,费用由[i]);
            sampleseries.add(I,样本[I]);
        }        //创建一个数据集来保存每个系列
        XYMultipleSeriesDataset数据=新XYMultipleSeriesDataset();
        //增加收入系列的数据集
        dataset.addSeries(incomeSeries);
        //添加费用为系列数据
        dataset.addSeries(expenseSeries);
        //添加费用为系列数据
        dataset.addSeries(sampleseries);        //创建XYSeriesRenderer定制incomeSeries
        XYSeriesRenderer incomeRenderer =新XYSeriesRenderer();
        incomeRenderer.setColor(Color.rgb(130,130,230));
        incomeRenderer.setFillPoints(真);
        incomeRenderer.setLineWidth(2);
        incomeRenderer.setChartValues​​TextAlign(Align.CENTER);
        incomeRenderer.setChartValues​​TextSize(18);
        incomeRenderer.setDisplayChartValues​​(真);        //创建XYSeriesRenderer定制expenseSeries
        XYSeriesRenderer expenseRenderer =新XYSeriesRenderer();
        expenseRenderer.setColor(Color.rgb(220,80,80));
        expenseRenderer.setFillPoints(真);
        expenseRenderer.setLineWidth(2);
        expenseRenderer.setChartValues​​TextAlign(Align.CENTER);
        expenseRenderer.setChartValues​​TextSize(18);
        expenseRenderer.setDisplayChartValues​​(真);     //创建XYSeriesRenderer定制expenseSeries
        XYSeriesRenderer samplseries =新XYSeriesRenderer();
        samplseries.setColor(Color.rgb(120,40,40));
        samplseries.setFillPoints(真);
        samplseries.setLineWidth(2);
        samplseries.setChartValues​​TextAlign(Align.CENTER);
        samplseries.setChartValues​​TextSize(18);
        samplseries.setDisplayChartValues​​(真);
        //创建一个XYMultipleSeriesRenderer自定义整个图表
        XYMultipleSeriesRenderer multiRenderer =新XYMultipleSeriesRenderer();
        multiRenderer.setMargins(新INT [] {30,50,60,0});
        multiRenderer.setXRoundedLabels(真);
        multiRenderer.setLegendTextSize(24);
        multiRenderer.setZoomRate(0.2F);
        multiRenderer.setZoomEnabled(假的,假的);
        multiRenderer.setBarSpacing(0.3f);
        multiRenderer.setXAxisMin(-1);
        multiRenderer.setXAxisMax(5);
        multiRenderer.setYAxisMin(0);
        multiRenderer.setYAxisMax(50);
        multiRenderer.setAxisTitleTextSize(20);
        multiRenderer.setAxesColor(Color.BLACK);
        multiRenderer.setGridColor(Color.GRAY);
        multiRenderer.setShowGridX(真);
        multiRenderer.setXLabels(0);        multiRenderer.setPanLimits(新的双[] {-​​1,x.length,0,x.length});        multiRenderer.setLabelsColor(Color.BLACK);
        multiRenderer.setLabelsTextSize(20);        multiRenderer.setXLabelsColor(Color.BLACK);
        multiRenderer.setXTitle(测试);
        multiRenderer.setYLabelsAlign(Align.RIGHT);
        multiRenderer.setYLabelsColor(0,Color.BLACK);
        multiRenderer.setYTitle(分数);        的for(int i = 0; I< x.length;我++){
            multiRenderer.addXTextLabel(ⅰ,mMonth [I]);
        }        //添加incomeRenderer和expenseRenderer到multipleRenderer
        //注意:添加到dataseries数据集渲染器multipleRenderer的顺序
        //应该是相同的
        multiRenderer.addSeriesRenderer(incomeRenderer);
        multiRenderer.addSeriesRenderer(expenseRenderer);
        multiRenderer.addSeriesRenderer(samplseries);        //使用的数据集和multipleRenderer创建意图情节条形图
        意图意图= ChartFactory.getBarChartIntent(getBaseContext(),数据集,multiRenderer,Type.DEFAULT);        //开始活动
        startActivity(意向);    }


解决方案

  1. renderer.setMarginsColor()和使用A​​CE的正确版本。

  2. 隐藏它们。

  3. 隐藏它,或者让它事情是这样的。

更新:我还添加了一个新的API调用,这将让你避免那些在图表上显示的部分要显示的值

  renderer.setDisplayBoundingPoints(假);

您可以下载包括这个功能<一个版本href=\"https://repository-achartengine.forge.cloudbees.com/snapshot/org/achartengine/achartengine/1.1.0/\"相对=nofollow>这里。

I am using an excellent library AChart engine for generating bar chart. All features are working fine, but I have couple of things which I am not able to resolve :

this is my screen shot:

Now there are two things that needs to be fixed :

1) Hide the series when it is scrolled to right, currently the series March is visible even after 0,0 also.

2) Gridlines are on top of the graph but it should be behind the graph.

3) How to display the legends on top right corner instead of bottom.

here is my below code:

private void openChart(){
        int[] x = { 10,20,30,40,50,60,70,80 };
       // int[] y = { 10,20,30,40,50,60,70 };
        int[] income = { 20,25,27,30,28,35,37,38};
        int[] expense = {22, 27, 29, 28, 26, 30, 33, 34 };
        int[] sample = {22, 27, 29, 28, 26, 30, 33, 34};

        // Creating an  XYSeries for Income
        XYSeries incomeSeries = new XYSeries("Income");
        // Creating an  XYSeries for Expense
        XYSeries expenseSeries = new XYSeries("Expense");
     // Creating an  XYSeries for Expense
        XYSeries sampleseries = new XYSeries("Sample");
        // Adding data to Income and Expense Series
        for(int i=0;i<x.length;i++){
            incomeSeries.add(i,income[i]);
            expenseSeries.add(i,expense[i]);
            sampleseries.add(i,sample[i]);
        }

        // Creating a dataset to hold each series
        XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
        // Adding Income Series to the dataset
        dataset.addSeries(incomeSeries);
        // Adding Expense Series to dataset
        dataset.addSeries(expenseSeries);
        // Adding Expense Series to dataset
        dataset.addSeries(sampleseries);

        // Creating XYSeriesRenderer to customize incomeSeries
        XYSeriesRenderer incomeRenderer = new XYSeriesRenderer();
        incomeRenderer.setColor(Color.rgb(130, 130, 230));
        incomeRenderer.setFillPoints(true);
        incomeRenderer.setLineWidth(2);
        incomeRenderer.setChartValuesTextAlign(Align.CENTER);
        incomeRenderer.setChartValuesTextSize(18);
        incomeRenderer.setDisplayChartValues(true);

        // Creating XYSeriesRenderer to customize expenseSeries
        XYSeriesRenderer expenseRenderer = new XYSeriesRenderer();
        expenseRenderer.setColor(Color.rgb(220, 80, 80));
        expenseRenderer.setFillPoints(true);
        expenseRenderer.setLineWidth(2);
        expenseRenderer.setChartValuesTextAlign(Align.CENTER);
        expenseRenderer.setChartValuesTextSize(18);
        expenseRenderer.setDisplayChartValues(true);

     // Creating XYSeriesRenderer to customize expenseSeries
        XYSeriesRenderer samplseries = new XYSeriesRenderer();
        samplseries.setColor(Color.rgb(120, 40, 40));
        samplseries.setFillPoints(true);
        samplseries.setLineWidth(2);
        samplseries.setChartValuesTextAlign(Align.CENTER);
        samplseries.setChartValuesTextSize(18);
        samplseries.setDisplayChartValues(true);


        // Creating a XYMultipleSeriesRenderer to customize the whole chart
        XYMultipleSeriesRenderer multiRenderer = new XYMultipleSeriesRenderer();
        multiRenderer.setMargins(new int[]{30,50,60,0});
        multiRenderer.setXRoundedLabels(true);
        multiRenderer.setLegendTextSize(24);
        multiRenderer.setZoomRate(0.2f); 
        multiRenderer.setZoomEnabled(false, false); 
        multiRenderer.setBarSpacing(0.3f); 
        multiRenderer.setXAxisMin(-1); 
        multiRenderer.setXAxisMax(5);
        multiRenderer.setYAxisMin(0);
        multiRenderer.setYAxisMax(50);
        multiRenderer.setAxisTitleTextSize(20); 
        multiRenderer.setAxesColor(Color.BLACK); 
        multiRenderer.setGridColor(Color.GRAY); 
        multiRenderer.setShowGridX(true); 
        multiRenderer.setXLabels(0);

        multiRenderer.setPanLimits(new double[] { -1, x.length, 0, x.length});

        multiRenderer.setLabelsColor(Color.BLACK); 
        multiRenderer.setLabelsTextSize(20);  

        multiRenderer.setXLabelsColor(Color.BLACK); 
        multiRenderer.setXTitle("Tests"); 
        multiRenderer.setYLabelsAlign(Align.RIGHT);
        multiRenderer.setYLabelsColor(0, Color.BLACK);
        multiRenderer.setYTitle("Scores");

        for(int i=0; i< x.length;i++){
            multiRenderer.addXTextLabel(i, mMonth[i]);
        }

        // Adding incomeRenderer and expenseRenderer to multipleRenderer
        // Note: The order of adding dataseries to dataset and renderers to multipleRenderer
        // should be same
        multiRenderer.addSeriesRenderer(incomeRenderer);
        multiRenderer.addSeriesRenderer(expenseRenderer);
        multiRenderer.addSeriesRenderer(samplseries);

        // Creating an intent to plot bar chart using dataset and multipleRenderer
        Intent intent = ChartFactory.getBarChartIntent(getBaseContext(), dataset, multiRenderer, Type.DEFAULT);

        // Start Activity
        startActivity(intent);

    }

解决方案

  1. renderer.setMarginsColor() and use the right version of ACE.
  2. Hide them.
  3. Hide it or let it the way it is.

Update: I have also added a new API call that will allow you to avoid the values that are partially displayed on the chart to be displayed.

renderer.setDisplayBoundingPoints(false);

You can download a version including this feature here.

这篇关于AChart Enigne条形图 - 滚动到权当隐藏系列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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