Я не уверен, какой именно график вы используете. Но, например, для LineChartView
вы можете определить свой пользовательский рендерер как потомок класса LineChartRenderer
и переопределить некоторые функции, например drawData
. Фактически, вы можете просто скопировать эту функцию в свой класс и изменить только порядок рисования наборов данных.
class MyCustomRenderer: LineChartRenderer {
// I define my custom initializer for convenience
init(for chart: LineChartView) {
super.init(dataProvider: chart, animator: chart.chartAnimator, viewPortHandler: chart.viewPortHandler)
}
init(view: LineChartView) {
super.init(dataProvider: view, animator: view.chartAnimator, viewPortHandler: view.viewPortHandler)
}
override func drawData(context: CGContext)
{
guard let lineData = dataProvider?.lineData else { return }
// Here you can change the drawing order !
for i in 0 ..< lineData.dataSetCount
{
guard let set = lineData.getDataSetByIndex(i) else { continue }
if set.isVisible
{
if !(set is ILineChartDataSet)
{
fatalError("Datasets for LineChartRenderer must conform to ILineChartDataSet")
}
drawDataSet(context: context, dataSet: set as! ILineChartDataSet)
}
}
}
}
И настройку, которую вы отображаете для своего графика, используя свойство renderer
.
myLineChartView.renderer = MyCustomRenderer(for: myLineChartView)