SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, and iOS Chart & Android Chart Components
I am using SciChart to create mountain chart. Now I want to change whole dataset when some button is clicked. So I am updating the dataset and calling invalidateElement on ScichartSurface. It is not animating while redrawing itself. First time it is animating.
@objc func changeDataValue() {
if isFirstDataSet {
for i in 0 ..< yValues3.count {
ds1.update(at: Int32(i), x: SCIGeneric(i), y: SCIGeneric(yValues3[i]))
ds2.update(at: Int32(i), x: SCIGeneric(i), y: SCIGeneric(yValues4[i]))
}
} else {
for i in 0 ..< yValues1.count {
ds1.update(at: Int32(i), x: SCIGeneric(i), y: SCIGeneric(yValues1[i]))
ds2.update(at: Int32(i), x: SCIGeneric(i), y: SCIGeneric(yValues2[i]))
}
}
isFirstDataSet = !isFirstDataSet
sciChartSurface.invalidateElement()
sciChartSurface.zoomExtents()
}
Code to add ScichartSurface is
private func configureChartSurface() {
sciChartSurface = SCIChartSurface(frame: view.bounds)
sciChartSurface.autoresizingMask = [.flexibleWidth, .flexibleHeight]
sciChartSurface.translatesAutoresizingMaskIntoConstraints = true
view.addSubview(sciChartSurface)
for i in 0..<yValues1.count {
ds1.appendX(SCIGeneric(i), y: SCIGeneric(yValues1[i]))
ds2.appendX(SCIGeneric(i), y: SCIGeneric(yValues2[i]))
}
let rSeries1 = SCIStackedMountainRenderableSeries()
rSeries1.dataSeries = ds1
rSeries1.strokeStyle = SCISolidPenStyle(colorCode: 0xFFffffff, withThickness: 1)
rSeries1.areaStyle = SCILinearGradientBrushStyle(colorCodeStart: 0xDDDBE0E1, finish: 0x88B6C1C3, direction: .vertical)
let rSeries2 = SCIStackedMountainRenderableSeries()
rSeries2.dataSeries = ds2
rSeries2.strokeStyle = SCISolidPenStyle(colorCode: 0xFFffffff, withThickness: 1)
rSeries2.areaStyle = SCILinearGradientBrushStyle(colorCodeStart: 0xDDACBCCA, finish: 0x88439AAF, direction: .vertical)
seriesCollection.add(rSeries1)
seriesCollection.add(rSeries2)
self.sciChartSurface.xAxes.add(SCINumericAxis())
self.sciChartSurface.yAxes.add(SCINumericAxis())
self.sciChartSurface.renderableSeries.add(self.seriesCollection)
self.sciChartSurface.chartModifiers = SCIChartModifierCollection(childModifiers: [SCITooltipModifier()])
self.seriesCollection.addAnimation(SCIWaveRenderableSeriesAnimation(duration: 3, curveAnimation: .easeOut))
}
Hi there,
you might notice, that we adding animation while, so you need to do the same while updating your data, in case of line renderable series it would be like below:
// In your changeDataValue functionalists
rSeries.addAnimation(SCISweepRenderableSeriesAnimation(duration: 1, curveAnimation: .easeOut))
surface.invalidateAnimationsContext()
Hope that helps.
Best Regards,
Nazar R.
Please login first to submit.