我正在尝试使用每个点的最小值和最大值创建一个区域图。但是没有找到任何地方。我想在两个线图之间的区域中设置背景颜色应该可以解决这个问题。
尝试将两个数据集的fillColor设置为。
.fillColor = UIColor.lightGrayColor()
.drawFilledEnabled = true
我从演示项目中看到过。它可以完成
set1 = [[LineChartDataSet alloc] initWithValues:yVals1 label:@"DataSet 1"];
set1.axisDependency = AxisDependencyLeft;
[set1 setColor:[UIColor colorWithRed:255/255.0 green:241/255.0 blue:46/255.0 alpha:1.0]];
set1.drawCirclesEnabled = NO;
set1.lineWidth = 2.0;
set1.circleRadius = 3.0;
set1.fillAlpha = 1.0;
set1.drawFilledEnabled = YES;
set1.fillColor = UIColor.whiteColor;
set1.highlightColor = [UIColor colorWithRed:244/255.0 green:117/255.0 blue:117/255.0 alpha:1.0];
set1.drawCircleHoleEnabled = NO;
set1.fillFormatter = [ChartDefaultFillFormatter withBlock:^CGFloat(id<ILineChartDataSet> _Nonnull dataSet, id<LineChartDataProvider> _Nonnull dataProvider) {
return _chartView.leftAxis.axisMinimum;
}];
set2 = [[LineChartDataSet alloc] initWithValues:yVals2 label:@"DataSet 2"];
set2.axisDependency = AxisDependencyLeft;
[set2 setColor:[UIColor colorWithRed:255/255.0 green:241/255.0 blue:46/255.0 alpha:1.0]];
set2.drawCirclesEnabled = NO;
set2.lineWidth = 2.0;
set2.circleRadius = 3.0;
set2.fillAlpha = 1.0;
set2.drawFilledEnabled = YES;
set2.fillColor = UIColor.whiteColor;
set2.highlightColor = [UIColor colorWithRed:244/255.0 green:117/255.0 blue:117/255.0 alpha:1.0];
set2.drawCircleHoleEnabled = NO;
set2.fillFormatter = [ChartDefaultFillFormatter withBlock:^CGFloat(id<ILineChartDataSet> _Nonnull dataSet, id<LineChartDataProvider> _Nonnull dataProvider) {
return _chartView.leftAxis.axisMaximum;
}];
但是我无法在swift中转换语法。
set2.fillFormatter = [ChartDefaultFillFormatter withBlock:^CGFloat(id<ILineChartDataSet> _Nonnull dataSet, id<LineChartDataProvider> _Nonnull dataProvider) {
return _chartView.leftAxis.axisMaximum;
}];
您不必设置fillFormatter
,除非您需要调整填充行为。就我而言,Swift接口中不存在静态withBlock:
。相反,你必须创建自己的ChartFillFormatter
实现并实现public func getFillLinePosition(dataSet dataSet: ILineChartDataSet, dataProvider: LineChartDataProvider) -> CGFloat
函数。
除了在drawFilledEnabled
上设置fillColor
和LineChartDataSet
之外,您不应该做任何其他事情,然后当然使用LineChartView
。
因此,如果您真的需要填充格式化程序,则必须执行以下操作:
public class MyFillFormatter: NSObject, ChartFillFormatter
{
private let _chartView: LineChartView
public override init(chartView: LineChartView)
{
super.init()
_chartView = chartView
}
public func getFillLinePosition(dataSet dataSet: ILineChartDataSet, dataProvider: LineChartDataProvider) -> CGFloat
{
return _chartView.leftAxis.axisMaximum
}
}
然后将其设置为:
set1.fillFormatter = MyFillFormatter(chartView: lineChartView)