我正在尝试使用每个点的最小值和最大值创建一个区域图。但是没有找到任何地方。我想在两个折线图之间的区域设置背景颜色应该可以解决这个问题。
尝试将两个数据集的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;
}];
答案 0 :(得分:1)
除非您需要调整填充行为,否则您不必设置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)
答案 1 :(得分:0)
现在有一个快速示例,可以满足您的要求:
在演示应用中看起来像这样: