【问题标题】:aChartEngine - How to mask bars?aChartEngine - 如何屏蔽条形图?
【发布时间】:2013-11-19 03:21:14
【问题描述】:

我用aChartEngine 创建了一个条形图。我遇到的问题是为每个值创建条形,包括 0。这意味着如果值为 0,它会在相邻条形之间创建一个空间。

我想摆脱那个空间 - 我认为唯一的方法是在它们的值为 0 时删除或隐藏条形。我在网上寻找解决方案并尝试了不同的方法 - 例如将条形间距设置为 0 - 但到目前为止我还没有发现任何有用的东西。

这是我的代码:

//DATA 1
    int[] y = {5, 0, 8, 13, 0, 16, 8};
    CategorySeries series = new CategorySeries("Category 1");
    for(int i = 0; i < y.length; i++){
        series.add(y[i]);
    }

    //DATA 2
    int[] y2 = {0, 5, 0, 10, 0, 0, 3};
    CategorySeries series2 = new CategorySeries("Category 2");
    for(int i = 0; i < y2.length; i++){
        series2.add(y2[i]);
    }

    //DATA 3
    int[] y3 = {25, 5, 2, 9, 22, 24, 6};
    CategorySeries series3 = new CategorySeries("Category 3");
    for(int i = 0; i < y3.length; i++){
        series3.add(y3[i]);
    }

    XYMultipleSeriesDataset dataset = new XYMultipleSeriesDataset();
    dataset.addSeries(series.toXYSeries());
    dataset.addSeries(series2.toXYSeries());
    dataset.addSeries(series3.toXYSeries());

    XYSeriesRenderer renderer = new XYSeriesRenderer();
    renderer.setChartValuesSpacing((float) 10);
    renderer.setColor(Color.GREEN);

    XYSeriesRenderer renderer2 = new XYSeriesRenderer();
    renderer2.setChartValuesSpacing((float) 10);
    renderer2.setColor(Color.YELLOW);

    XYSeriesRenderer renderer3 = new XYSeriesRenderer();
    renderer3.setChartValuesSpacing((float) 10);
    renderer3.setColor(Color.BLUE);

    XYMultipleSeriesRenderer mRenderer = new XYMultipleSeriesRenderer();
    mRenderer.addSeriesRenderer(renderer);
    mRenderer.addSeriesRenderer(renderer2);
    mRenderer.addSeriesRenderer(renderer3);
    mRenderer.setChartTitle("MY GRAPH");
    mRenderer.setYTitle("Y AXIS TITLE");
    mRenderer.setBarSpacing(0);

    mRenderer.setXLabels(1);
    mRenderer.setYLabels(12);
    mRenderer.setShowGrid(true);

    mRenderer.addXTextLabel(1, "col 1");
    mRenderer.addXTextLabel(2, "col 2");
    mRenderer.addXTextLabel(3, "col 3");
    mRenderer.addXTextLabel(4, "col 4");
    mRenderer.addXTextLabel(5, "col 5");
    mRenderer.addXTextLabel(6, "col 6");
    mRenderer.addXTextLabel(7, "col 7");
    mRenderer.setFitLegend(true);       

    Intent intent = ChartFactory.getBarChartIntent(context, dataset, mRenderer, Type.DEFAULT);

有人知道如何仅删除或屏蔽某些条吗?

提前致谢!

【问题讨论】:

    标签: java android achartengine


    【解决方案1】:

    我认为0的值仍然是一个值,需要显示。如果您不想显示它,则可以在代码逻辑中跳过它。

    另一种可能的解决方案是改用MathHelper.NULL_VALUE

    【讨论】:

    • 感谢您的回答。你是对的,我不能跳过空值。我最终保留了它们并扩大了条形间距,所以它看起来不会太混乱。
    • @Dan,我怎样才能使用 MathHelper.NULL_VALUE 而不是 0?
    • @Dan,在我的情况下,0 值的条形也可见。我需要显示大于 0 的值的条形。
    猜你喜欢
    • 2013-02-19
    • 1970-01-01
    • 1970-01-01
    • 2013-07-14
    • 2011-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多