5

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

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

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

4

2 回答 2

5

另一种选择是使用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());
于 2015-02-03T16:09:30.333 回答
0

好吧,我只是想出了一个简单的解决方法。问题似乎在于与 x 轴重叠的限制线 - 所以你所要做的就是防止 0 y 值发生。

我之前有的是:

LimitLine line= new LimitLine((float) foo);

为了防止这种情况发生,我将其更改为以下内容:

if(foo == 0)
    foo = 0.00000001f;
LimitLine line= new LimitLine((float) foo);

它不漂亮,但就我而言,它可以完成工作并且显示效果很好。限制线的默认值格式化程序无论如何都会将此值四舍五入为 0,所以应该没问题。

固定结果: 在此处输入图像描述

于 2015-01-31T03:33:44.810 回答