AChart引擎条形图-向右滚动时隐藏系列 [英] AChart Engine Bar Chart - hide the series when scrolling to right

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

问题描述

我正在使用一个出色的AChart库引擎来生成条形图。所有功能都可以正常使用,但是我有一些无法解决的问题:

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)当滚动到右侧时隐藏该系列,当前该系列甚至在0,0之后也可见。

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

2)网格线在图形的顶部,但应该在图形的后面。

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

3)如何在图的右上角显示图例

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

这是我的以下代码:

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()并使用正确版本的ACE。

  2. 隐藏它们。

  3. 隐藏它或使其保持原样。

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

更新:还添加了一个新的API调用,可以避免显示在图表上部分显示的值。

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引擎条形图-向右滚动时隐藏系列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

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