如何使用MPAndroid图表库跳过折线图中特定索引的值?

时间:2016-02-25 09:55:22

标签: java android charts mpandroidchart

我正在使用MPAndroid Chart Library绘制折线图,​​我在LineChart上设置动态数据,但有时我将某些索引的数据作为值0.0,并且我不希望在任何索引上显示0.0值。 如何跳过具有0.0值的索引。

ArrayList<Entry> entries = new ArrayList<>();
       entries.add(new Entry(23.00f, 0));
       entries.add(new Entry(40.00f, 1));
       entries.add(new Entry(00.00f, 2)); // want to skip this index 2(Mar)
       entries.add(new Entry(00.00f, 3)); // want to skip this index 3 (Apr)
       entries.add(new Entry(94.00f, 4));
       entries.add(new Entry(20.00f, 5));

现在我变得像这样 enter image description here

但我想得到像这样的东西

enter image description here

关于这个的任何想法?

由于

4 个答案:

答案 0 :(得分:1)

如何添加多个数据集,一个用于图表的每个连续部分?

答案 1 :(得分:1)

您可以尝试从drawData覆盖LineChartRender方法并执行此操作:

int index = lineData.getDataSets().size();
for (ILineDataSet set : lineData.getDataSets()) {            
                if (set.getEntryForIndex(index).getY() != 0) {
                    if (set.isVisible()) {
                        drawDataSet(c, set);
                    }
                }

        c.drawBitmap(mDrawBitmap.get(), 0, 0, mRenderPaint);
    }
}

答案 2 :(得分:0)

您的代码应该看起来像:

ArrayList<Entry> entries = new ArrayList<>();
       entries.add(new Entry(23.00f, 0));
       entries.add(new Entry(40.00f, 1));
//       entries.add(new Entry(00.00f, 2)); // want to skip this index 2(Mar)
//       entries.add(new Entry(00.00f, 3)); // want to skip this index 3 (Apr)
       entries.add(new Entry(94.00f, 4));
       entries.add(new Entry(20.00f, 5));

lib会自动绘制它,如截屏2所示。

答案 3 :(得分:0)

最后,经过大量Internet搜索,我找到了解决方案。 我尝试了许多解决方案,但就我而言,最适合的问题也是。

假设我们正计划从xAxix隐藏无用的序列值,请获取轴

B[j]

其中For N = 1e2, takes ~0.02 sec For N = 1e3, takes ~0.05 sec For N = 1e4, takes ~0.38 sec For N = 1e5, takes ~3.80 sec 是原始数据源的数组。

上述解决方案只会绘制所需的标签,并且会删除不必要的序列数据。