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))
}
- Keshav Raj asked 5 years ago
- You must login to post comments
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.
- Nazar Rudnyk answered 5 years ago
- You must login to post comments
Please login first to submit.