我正在使用MPAndroidChart。当我使用LineChart setDrawFilled()方法填充线和x轴之间的空间,并手动调整范围大于默认值时,填充部分将超过x轴,如此处所示截图:
蓝色填充应停在绿色虚线上,该虚线位于x轴上方,但它会在其上方延伸并进入正y值。
*经过进一步调查,我发现只有在绿线设置为0时才会发生。
答案 0 :(得分:3)
另一种方法是使用库提供的FillFormatter
界面:https://github.com/PhilJay/MPAndroidChart/blob/master/MPChartLib/src/com/github/mikephil/charting/utils/FillFormatter.java
这个课程允许你做的是在"填充线"的位置创建自己的逻辑。应该结束。
只需在自定义格式化程序类中实现FillFormatter
类,然后返回希望填充行结束的值。
示例:
class MyCustomFillFormatter implements FillFormatter {
// return the fill position
public float getFillLinePosition(LineDataSet dataSet, LineData data, float chartMaxY, float chartMinY) {
return 0f;
}
}
在getFillLinePosition(...)
方法中,您当然可以根据各种影响因素在线的位置上建立自己的逻辑。
创建格式化程序后,将其设置为LineChart
:
lineChart.setFillFormatter(new MyCustomFillFormatter());
答案 1 :(得分:0)
好吧,我刚刚想出了一个简单的工作原理。问题似乎在于限制线与x轴重叠 - 所以你所要做的就是防止0 y值发生。
我以前拥有的是:
LimitLine line= new LimitLine((float) foo);
为防止这种情况发生,我将其更改为:
if(foo == 0)
foo = 0.00000001f;
LimitLine line= new LimitLine((float) foo);
它并不漂亮,但在我的情况下,它完成了工作,显示效果很好。限制行的默认值格式化程序无论如何都将此值舍入为0,因此 应该。
修正结果: