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

6

我正在使用MPAndroid Chart库绘制折线图,并在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。你有什么想法吗?谢谢!

你可以在图表中省略添加0.0。 - Sree
@Sree 我需要做什么才能跳过这些值? - GS Nayma
你找到任何解决方案了吗?如果有,请分享一下。我也陷入了同样的情况。 - Rahul Parihar
@RahulParihar 是的,它已经完成了,但需要找到那段代码,很快就会在这里发布。 - GS Nayma
4个回答

2

经过大量的互联网搜索,我终于找到了解决方案。我尝试了很多方法,但在我的情况下,最佳选择也是最适合问题的。

获取轴,假设我们计划从 x 轴中隐藏无用的序列值。

xAxis.setLabelCount(originalValueArray.size, true)

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

originalValueArray 是原始数据源的数组。


1

如果为您的图形的每个连续部分添加一个数据集,会怎样呢?


1
你可以尝试重写LineChartRender中的drawData方法,并执行以下操作:
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);
    }
}

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

该库将自动绘制它,就像第二张截图一样。


这个不起作用。在在这里发布我的问题之前我已经尝试过了。 - GS Nayma
我有类似的任务,不添加数据对我有用。另一个选项是将点的颜色的数组列表设置为00,00f条目的透明颜色。然后在计算出新值后再更改它。 - Evgeny

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接