Сглаживание линейных данных с использованием SCIChart - PullRequest
0 голосов
/ 04 мая 2018

Можно ли автоматически сгладить данные для линейного графика, чтобы они отображались в виде красивой изящной кривой, а не неровными линиями вверх-вниз? Или мне нужно вручную манипулировать моими данными?

Редактировать: добавлен пример неровного графика

sciChartSurface = SCIChartSurface()
view.addSubview(sciChartSurface)
sciChartSurface.translatesAutoresizingMaskIntoConstraints = false
sciChartSurface.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
sciChartSurface.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
sciChartSurface.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
sciChartSurface.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true

let xAxis = SCIDateTimeAxis()
xAxis.visibleRange = SCIDateRange(dateMin: Date().addingTimeInterval(-86400), max: Date().addingTimeInterval(2 * 86400))
xAxis.growBy = SCIDoubleRange(min: SCIGeneric(0.1), max: SCIGeneric(0.1))
xAxis.textFormatting = "MMM d"
sciChartSurface?.xAxes.add(xAxis)

let yAxis = SCINumericAxis()
yAxis.textFormatting = "%.1f"
yAxis.axisTitle = "Temperature"
sciChartSurface?.yAxes.add(yAxis)

lineDataSeries = SCIXyDataSeries(xType: .dateTime, yType: .double)
lineDataSeries.appendX(SCIGeneric(Date().addingTimeInterval(-86400)), y: SCIGeneric(28))
lineDataSeries.appendX(SCIGeneric(Date()), y: SCIGeneric(30))
lineDataSeries.appendX(SCIGeneric(Date().addingTimeInterval(86400)), y: SCIGeneric(26))
lineDataSeries.appendX(SCIGeneric(Date().addingTimeInterval(2 * 86400)), y: SCIGeneric(28))

let series = SCIFastLineRenderableSeries()
series.dataSeries = lineDataSeries
series.strokeStyle = SCISolidPenStyle(colorCode: 0xFF279B27, withThickness: 1.0)
sciChartSurface.renderableSeries.add(series)

enter image description here

1 Ответ

0 голосов
/ 07 мая 2018

SciChart поддерживает тип интерполяции сплайнов через пользовательский ряд. Вы можете увидеть пример здесь:

Пример сплайновой линии iOS Custom

Для этого необходимо создать собственную серию (полный исходный код приведен в примере выше, а также размещен на GitHub здесь .)

К сожалению, нет простой кнопки «включить или выключить сплайн», но она кажется возможной.

...