MPAndroidChart:线形图填充不会在XAxis处停止

MPAndroidChart:线形图填充不会在XAxis处停止,android,linechart,mpandroidchart,Android,Linechart,Mpandroidchart,我正在使用。当我使用LineChart setDrawFilled()方法填充直线和x轴之间的空间,并手动将范围调整为大于默认值时,填充部分将超过x轴,如此屏幕截图所示: 蓝色填充应在绿色虚线处停止,该虚线位于x轴上方,但它延伸到x轴上方并进入正y值 *经过进一步调查,我发现只有当绿线设置为0时才会发生这种情况。好吧,我刚刚想出了一个简单的解决办法。问题似乎在于限制线与x轴重叠-因此您所要做的就是防止出现0 y值 我以前的经历是: LimitLine line= new LimitLine((f

我正在使用。当我使用LineChart setDrawFilled()方法填充直线和x轴之间的空间,并手动将范围调整为大于默认值时,填充部分将超过x轴,如此屏幕截图所示:

蓝色填充应在绿色虚线处停止,该虚线位于x轴上方,但它延伸到x轴上方并进入正y值


*经过进一步调查,我发现只有当绿线设置为0时才会发生这种情况。

好吧,我刚刚想出了一个简单的解决办法。问题似乎在于限制线与x轴重叠-因此您所要做的就是防止出现0 y值

我以前的经历是:

LimitLine line= new LimitLine((float) foo);
为了防止这种情况发生,我将其更改为以下内容:

if(foo == 0)
    foo = 0.00000001f;
LimitLine line= new LimitLine((float) foo);
它不漂亮,但在我的情况下,它确实很好,而且显示效果也很好。限制行的默认值格式化程序无论如何都会将该值舍入为0,因此应该都很好

固定结果:

另一种选择是使用库提供的
FillFormatter
接口:

这个类允许您创建自己的逻辑,说明“填充线”应该在哪里结束

只需在自定义格式化程序类中实现
FillFormatter
类,并返回希望填充行结束的值

例如:

class MyCustomFillFormatter implements FillFormatter {

    // return the fill position
    public float getFillLinePosition(LineDataSet dataSet, LineData data, float chartMaxY, float chartMinY) {
        return 0f;
    }
}
getFillLinePosition(…)
方法中,您当然可以根据各种影响因素开发自己的逻辑,确定行的位置

创建格式化程序后,将其设置为
折线图

lineChart.setFillFormatter(new MyCustomFillFormatter());

是的,这是一个更好的解决方案-谢谢!稍微不相关的问题-是否需要在x轴上方和下方分别自定义填充颜色?