我正在使用MPAndroidChart。当我使用 LineChart setDrawFilled() 方法填充线条和 x 轴之间的空间,并手动将范围调整为大于默认值时,填充的部分将超过 x 轴,如图所示截屏:
蓝色填充应在绿色虚线处停止,该虚线位于 x 轴上方,但它会在 x 轴上方延伸并进入正 y 值。
*经过进一步调查,我发现似乎只有在绿线设置为 0 时才会发生。
我正在使用MPAndroidChart。当我使用 LineChart setDrawFilled() 方法填充线条和 x 轴之间的空间,并手动将范围调整为大于默认值时,填充的部分将超过 x 轴,如图所示截屏:
蓝色填充应在绿色虚线处停止,该虚线位于 x 轴上方,但它会在 x 轴上方延伸并进入正 y 值。
*经过进一步调查,我发现似乎只有在绿线设置为 0 时才会发生。
另一种选择是使用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());
好吧,我只是想出了一个简单的解决方法。问题似乎在于与 x 轴重叠的限制线 - 所以你所要做的就是防止 0 y 值发生。
我之前有的是:
LimitLine line= new LimitLine((float) foo);
为了防止这种情况发生,我将其更改为以下内容:
if(foo == 0)
foo = 0.00000001f;
LimitLine line= new LimitLine((float) foo);
它不漂亮,但就我而言,它可以完成工作并且显示效果很好。限制线的默认值格式化程序无论如何都会将此值四舍五入为 0,所以应该没问题。
固定结果: