SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, iOS Chart, Android Chart and JavaScript Chart Components


Using Following Code to Construct Sync Multiple Graphs

   let _rangeSync = SCIAxisRangeSynchronization()
    let _zoomExtentsModifierSync = SCIMultiSurfaceModifier(modifierType: SCIZoomExtentsModifier.self)
    let _pinchZoomModifierSync = SCIMultiSurfaceModifier(modifierType: SCIPinchZoomModifier.self)
    let _xDragModifierSync = SCIMultiSurfaceModifier(modifierType: SCIXAxisDragModifier.self)
    let _yDragModifierSync = SCIMultiSurfaceModifier(modifierType: SCIYAxisDragModifier.self)
    let _rolloverModifierSync = SCIMultiSurfaceModifier(modifierType: SCIRolloverModifier.self)

func getGraphs() -> [(String,CustomClassThatHoldsData)] {

    let keys = Array(historicChats!.data!.keys)
    var arrayOfTuples = [(String,CustomClassThatHoldsData)]()
    for key in keys {
    arrayOfTuples.append((key, (self.historicChats?.data![key])!))
    return arrayOfTuples

 func drawMultichartWithDefault() {

        for data in arrayOfGraphs {
        let chart = SCIChartSurface(frame: CGRect(x: 0, y: 0, width: self.stkCharts.frame.width-50, height: 200))
        initChart(chart, data.1)


fileprivate func initChart(_ chart: SCIChartSurface, _ data: VitalHistoryData) {
    SCIUpdateSuspender.usingWithSuspendable(chart) {
    let xAxis = SCIDateTimeAxis()
    xAxis.growBy = SCIDoubleRange(min: SCIGeneric(0.1), max: SCIGeneric(0.1))

    let yAxis = SCINumericAxis()
    yAxis.growBy = SCIDoubleRange(min: SCIGeneric(0.1), max: SCIGeneric(0.1))

    let dataSeries = SCIXyDataSeries(xType: .dateTime, yType: .double)
    let dataArray = data.getDataArray()
    for tuple in dataArray {
    dataSeries.appendX(SCIGeneric(tuple.1), y: SCIGeneric((tuple.0)))

    let rSeries = SCIFastLineRenderableSeries()
    rSeries.dataSeries = dataSeries
    rSeries.strokeStyle = SCISolidPenStyle(color:, withThickness: 1.0)

    chart.chartModifiers = SCIChartModifierCollection(childModifiers: [self._xDragModifierSync, self._yDragModifierSync, self._pinchZoomModifierSync, self._zoomExtentsModifierSync, self._rolloverModifierSync])


On 2 graphs it works quite fine but with the more then 2 graphs it starts lagging

v 2.5
  • You must to post comments

Hi Atiq,

Just an update for you. We’ve greatly improved performance in SciChart iOS v3 which is available ini BETA now.
You can get 3.x beta via the CocoaPods, as described here –

Let us know, if you need any help with it if you decided to try it out.

Best Regards,
Nazar R.
SciChart Developer

  • You must to post comments
Showing 1 result
Your Answer

Please first to submit.