MPAndroidChart:LineChart填充不会在XAxis处停止

时间:2015-01-31 03:26:07

标签: android linechart mpandroidchart

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

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

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

2 个答案:

答案 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,因此 应该。

修正结果: enter image description here