protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our chart from the layout resource,
            var chart = FindViewById <SciChartSurface>(Resource.Id.Chart);

            // Create a numeric X axis
            var xAxis = new NumericAxis(this)
            {
                AxisTitle = "Number of Samples (per Series)"
            };

            // Create a numeric Y axis
            var yAxis = new NumericAxis(this)
            {
                AxisTitle    = "Value",
                VisibleRange = new DoubleRange(-1, 1)
            };

            // Add xAxis to the XAxes collection of the chart
            chart.XAxes.Add(xAxis);

            // Add yAxis to the YAxes collection of the chart
            chart.YAxes.Add(yAxis);

            // Create XyDataSeries to host data for our chart
            var lineData = new XyDataSeries <double, double>()
            {
                SeriesName = "Sin(x)"
            };
            var scatterData = new XyDataSeries <double, double>()
            {
                SeriesName = "Cos(x)"
            };

            // Append data which should be drawn
            for (var i = 0; i < 1000; i++)
            {
                lineData.Append(i, Math.Sin(i * 0.1));
                scatterData.Append(i, Math.Cos(i * 0.1));
            }

            double phase = 0;

            var timer = new Timer(30)
            {
                AutoReset = true
            };
            var lineBuffer    = new DoubleValues(1000);
            var scatterBuffer = new DoubleValues(1000);

            // Update on each tick of timer
            timer.Elapsed += (s, e) =>
            {
                lineBuffer.Clear();
                scatterBuffer.Clear();

                for (int i = 0; i < 1000; i++)
                {
                    lineBuffer.Add(Math.Sin(i * 0.1 + phase));
                    scatterBuffer.Add(Math.Cos(i * 0.1 + phase));
                }

                using (chart.SuspendUpdates())
                {
                    lineData.UpdateRangeYAt(0, lineBuffer);
                    scatterData.UpdateRangeYAt(0, scatterBuffer);
                }

                phase += 0.01;
            };

            timer.Start();

            var lineSeries = new FastLineRenderableSeries()
            {
                DataSeries  = lineData,
                StrokeStyle = new SolidPenStyle(Color.LightBlue, 2)
            };

            // Create scatter series with data appended into scatterData
            var scatterSeries = new XyScatterRenderableSeries()
            {
                DataSeries  = scatterData,
                PointMarker = new EllipsePointMarker()
                {
                    Width       = 10,
                    Height      = 10,
                    StrokeStyle = new SolidPenStyle(Color.Green, 2),
                    FillStyle   = new SolidBrushStyle(Color.LightBlue)
                }
            };

            // Add the renderable series to the RenderableSeries collection of the chart
            chart.RenderableSeries.Add(lineSeries);
            chart.RenderableSeries.Add(scatterSeries);

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();

            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();

            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();

            zoomExtentsModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();

            yAxisDragModifier.SetReceiveHandledEvents(true);

            // Create and configure legend
            var legendModifier = new LegendModifier(this);

            legendModifier.SetLegendPosition(GravityFlags.Bottom | GravityFlags.CenterHorizontal, 10);
            legendModifier.SetOrientation(Orientation.Horizontal);

            // Create RolloverModifier to show tooltips
            var rolloverModifier = new RolloverModifier();

            rolloverModifier.SetReceiveHandledEvents(true);

            // Create modifier group from declared modifiers
            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, yAxisDragModifier, rolloverModifier, legendModifier);

            // Add the interactions to the ChartModifiers collection of the chart
            chart.ChartModifiers.Add(modifiers);
        }
        private void InitSecondChart()
        {
            WvlLogger.Log(LogType.TraceAll, "InitFirstChart()");

            var xAxis = new NumericAxis(this)
            {
                AutoRange = AutoRange.Always,
                //AutoRange = AutoRange.Never,

                /*
                 * DrawMajorBands = false,
                 * DrawLabels = false,
                 * DrawMajorTicks = false,
                 * DrawMinorTicks = false,
                 * DrawMajorGridLines = false,
                 * DrawMinorGridLines = false,
                 */
                FlipCoordinates = true,
                AxisAlignment   = AxisAlignment.Left,

                //VisibleRange = new DoubleRange(900, 1000)
                //VisibleRange = new DoubleRange(0, 5)
                //VisibleRange = new DoubleRange(-200,2048)
                //VisibleRange = new DoubleRange(100, 110),
                //GrowBy = new DoubleRange(1, 1),
            };

            var yAxis = new NumericAxis(this)
            {
                //AutoRange = AutoRange.Always,
                //AutoRange = AutoRange.Never,

                /*
                 * DrawMajorBands = false,
                 * DrawLabels = false,
                 * DrawMajorTicks = false,
                 * DrawMinorTicks = false,
                 * DrawMajorGridLines = false,
                 * DrawMinorGridLines = false,
                 */
                FlipCoordinates = true,
                AxisAlignment   = AxisAlignment.Bottom,



                //VisibleRange = new DoubleRange(height-60, height),

                //VisibleRange = new DoubleRange(height-120, height),
                //VisibleRange = new DoubleRange(height - 10, height),
                VisibleRange = new DoubleRange(height / 2, height),
                //VisibleRange = new DoubleRange(-3000, 20000)
                //VisibleRange = new DoubleRange(-300,2048)
                //GrowBy = new DoubleRange(1, 1),
            };

            // from XF sample

            /*
             * var rs = new FastUniformHeatmapRenderableSeries
             * {
             *  DataSeries = heatmapSeries,
             *  ColorMap = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
             *      new int[] { Color.Transparent, Color.DarkBlue, Color.Purple, Color.Red, Color.Yellow, Color.White },
             *      new float[] { 0f, 0.2f, 0.4f, 0.6f, 0.8f, 1f }
             *      )
             * };
             */


            // from Android.Kotlin sample
            var rs = new FastUniformHeatmapRenderableSeries
            {
                DataSeries = heatmapSeries,

                //Maximum = 70,
                //Minimum = -30,

                //Maximum = 30,
                //Minimum = -40,

                Maximum = 40,
                Minimum = -40,

                /*
                 * CellTextStyle = new Font().
                 *
                 *        .withCellTextStyle(sciChartBuilder.newFont().withTextSize(8).withTextColor(ColorUtil.White).build())
                 * .withDrawTextInCell(true)
                 */

                //ColorMap = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
                //    new int[] { Color.Transparent, Color.DarkBlue, Color.Purple, Color.Red, Color.Yellow, Color.White },
                //    new float[] { 0f, 0.0001f, 0.25f, 0.50f, 0.75f, 1f })


                /*
                 * ColorMap = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
                 *      //new int[] {
                 *      //    Color.Transparent,
                 *      //    Color.White,
                 *      //    Color.LightYellow,
                 *      //    Color.Yellow,
                 *      //    Color.Orange,
                 *      //    Color.OrangeRed,
                 *      //    Color.Red,
                 *      //    Color.Pink,
                 *      //    Color.Purple,
                 *      //    Color.DarkBlue,
                 *      //    Color.Black },
                 *      new int[] {
                 *      Color.Black,
                 *      Color.DarkBlue,
                 *      Color.Purple,
                 *      Color.Pink,
                 *      Color.Red,
                 *      Color.OrangeRed,
                 *      Color.Orange,
                 *      Color.Yellow,
                 *      Color.LightYellow,
                 *      Color.White,
                 *      Color.Transparent },
                 *  new float[] {
                 *      0f,
                 *      0.10f,
                 *      0.20f,
                 *      0.30f,
                 *      0.40f,
                 *      0.50f,
                 *      0.60f,
                 *      0.70f,
                 *      0.80f,
                 *      0.90f,
                 *      1f }),
                 *  //new float[] {
                 *  //    0f,
                 *  //    0.55f,
                 *  //    0.60f,
                 *  //    0.65f,
                 *  //    0.70f,
                 *  //    0.75f,
                 *  //    0.80f,
                 *  //    0.85f,
                 *  //    0.90f,
                 *  //    0.95f,
                 *  //    1f }),
                 */



                ColorMap = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
                    new int[] {
                    Color.Black,
                    Color.Purple,
                    Color.Red,
                    Color.Orange,
                    Color.Yellow,
                    Color.White
                },
                    //new float[] {
                    //    0f,
                    //    0.20f,
                    //    0.40f,
                    //    0.60f,
                    //    0.80f,
                    //    1f }),
                    //new float[] {
                    //    0.50f,
                    //    0.60f,
                    //    0.70f,
                    //    0.80f,
                    //    0.90f,
                    //    1f }),
                    new float[] {
                    0.25f,
                    0.50f,
                    0.65f,
                    0.80f,
                    0.90f,
                    1f
                }),


                /*
                 * CellTextStyle = new SciChart.Drawing.Common.FontStyle(16, Color.White),
                 * DrawTextInCell = true,
                 */
            };


            #region Zoom and Pan

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();
            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();
            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();
            zoomExtentsModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();
            yAxisDragModifier.SetReceiveHandledEvents(true);

            var rollOverModifer = new RolloverModifier
            {
                ShowTooltip      = true,
                ShowAxisLabels   = true,
                DrawVerticalLine = true
            };

            // Create modifier group from declared modifiers
            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, yAxisDragModifier, rollOverModifer);

            #endregion

            using (HeatmapSurface.SuspendUpdates())
            {
                HeatmapSurface.XAxes.Add(xAxis);
                HeatmapSurface.YAxes.Add(yAxis);
                HeatmapSurface.RenderableSeries.Add(rs);
                //HeatmapSurface.ChartModifiers.Add(modifiers);
            }
        }
        private void InitSecondChart()
        {
            WvlLogger.Log(LogType.TraceAll, "InitSecondChart()");

            var xAxis = new NumericAxis(this)
            {
                AutoRange          = AutoRange.Always,
                DrawMajorBands     = false,
                DrawLabels         = false,
                DrawMajorTicks     = false,
                DrawMinorTicks     = false,
                DrawMajorGridLines = false,
                DrawMinorGridLines = false,
                FlipCoordinates    = true,
                AxisAlignment      = AxisAlignment.Left
            };

            var yAxis = new NumericAxis(this)
            {
                DrawMajorBands     = false,
                DrawLabels         = false,
                DrawMajorTicks     = false,
                DrawMinorTicks     = false,
                DrawMajorGridLines = false,
                DrawMinorGridLines = false,
                FlipCoordinates    = true,
                AxisAlignment      = AxisAlignment.Bottom
            };

            // from XF sample

            /*
             * var rs = new FastUniformHeatmapRenderableSeries
             * {
             *  DataSeries = heatmapSeries,
             *  ColorMap = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
             *      new int[] { Color.Transparent, Color.DarkBlue, Color.Purple, Color.Red, Color.Yellow, Color.White },
             *      new float[] { 0f, 0.2f, 0.4f, 0.6f, 0.8f, 1f }
             *  )
             * };
             */

            // from Android sample
            var rs = new FastUniformHeatmapRenderableSeries
            {
                DataSeries = heatmapSeries,
                Maximum    = 70,
                Minimum    = -30,
                ColorMap   = new SciChart.Charting.Visuals.RenderableSeries.ColorMap(
                    new int[] { Color.Transparent, Color.DarkBlue, Color.Purple, Color.Red, Color.Yellow, Color.White },
                    new float[] { 0f, 0.0001f, 0.25f, 0.50f, 0.75f, 1f }
                    )
            };

            #region Zoom and Pan

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();
            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();
            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();
            zoomExtentsModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();
            yAxisDragModifier.SetReceiveHandledEvents(true);

            // Create modifier group from declared modifiers
            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, yAxisDragModifier);

            #endregion

            using (HeatmapSurface.SuspendUpdates())
            {
                HeatmapSurface.XAxes.Add(xAxis);
                HeatmapSurface.YAxes.Add(yAxis);
                HeatmapSurface.RenderableSeries.Add(rs);
                HeatmapSurface.ChartModifiers.Add(modifiers);
            }
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our chart from the layout resource,
            var chart = FindViewById <SciChartSurface>(Resource.Id.Chart);

            // Create a numeric X axis
            var xAxis = new NumericAxis(this)
            {
                AxisTitle = "Number of Samples (per Series)"
            };

            // Create a numeric Y axis
            var yAxis = new NumericAxis(this)
            {
                AxisTitle    = "Value",
                VisibleRange = new DoubleRange(-1, 1)
            };

            // Add xAxis to the XAxes collection of the chart
            chart.XAxes.Add(xAxis);

            // Add yAxis to the YAxes collection of the chart
            chart.YAxes.Add(yAxis);

            // Create XyDataSeries to host data for our chart
            var lineData = new XyDataSeries <double, double>()
            {
                SeriesName = "Sin(x)"
            };
            var scatterData = new XyDataSeries <double, double>()
            {
                SeriesName = "Cos(x)"
            };

            // Append data which should be drawn
            for (var i = 0; i < 1000; i++)
            {
                lineData.Append(i, Math.Sin(i * 0.1));
                scatterData.Append(i, Math.Cos(i * 0.1));
            }

            var lineSeries = new FastLineRenderableSeries()
            {
                DataSeries  = lineData,
                StrokeStyle = new SolidPenStyle(Color.LightBlue, 2)
            };

            // Create scatter series with data appended into scatterData
            var scatterSeries = new XyScatterRenderableSeries()
            {
                DataSeries  = scatterData,
                PointMarker = new EllipsePointMarker()
                {
                    Width       = 10,
                    Height      = 10,
                    StrokeStyle = new SolidPenStyle(Color.Green, 2),
                    FillStyle   = new SolidBrushStyle(Color.LightBlue)
                }
            };

            // Add the renderable series to the RenderableSeries collection of the chart
            chart.RenderableSeries.Add(lineSeries);
            chart.RenderableSeries.Add(scatterSeries);

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();

            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();

            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();

            zoomExtentsModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();

            yAxisDragModifier.SetReceiveHandledEvents(true);

            // Create modifier group from declared modifiers
            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, yAxisDragModifier);

            // Add the interactions to the ChartModifiers collection of the chart
            chart.ChartModifiers.Add(modifiers);
        }
        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            // Set our view from the "main" layout resource
            SetContentView(Resource.Layout.Main);

            // Get our chart from the layout resource,
            var chart = FindViewById <SciChartSurface>(Resource.Id.Chart);

            // Create a numeric X axis
            var xAxis = new NumericAxis(this)
            {
                AxisTitle = "Number of Samples (per Series)"
            };

            // Create a numeric Y axis
            var yAxis = new NumericAxis(this)
            {
                AxisTitle    = "Value",
                VisibleRange = new DoubleRange(-1, 1)
            };

            // Create a secondary numeric Y Axis
            var secondaryYAxis = new NumericAxis(this)
            {
                AxisTitle     = "Secondary",
                AxisId        = "SecondaryAxis",
                AxisAlignment = AxisAlignment.Left,
                VisibleRange  = new DoubleRange(-2, 2)
            };

            // Add xAxis to the XAxes collection of the chart
            chart.XAxes.Add(xAxis);

            // Add yAxis to the YAxes collection of the chart
            chart.YAxes.Add(yAxis);

            // Add secondaryYAxis to the YAxes collection of the chart
            chart.YAxes.Add(secondaryYAxis);

            const int fifoCapacity = 500;

            // Create XyDataSeries to host data for our chart
            var lineData =
                new XyDataSeries <double, double>()
            {
                SeriesName = "Sin(x)", FifoCapacity = new Integer(fifoCapacity)
            };
            var scatterData =
                new XyDataSeries <double, double>()
            {
                SeriesName = "Cos(x)", FifoCapacity = new Integer(fifoCapacity)
            };

            var timer = new Timer(30)
            {
                AutoReset = true
            };

            var x = lineData.Count;

            // Append on each tick of timer
            timer.Elapsed += (s, e) =>
            {
                using (chart.SuspendUpdates())
                {
                    lineData.Append(x, Math.Sin(x * 0.1));
                    scatterData.Append(x, Math.Cos(x * 0.1));

                    // add label every 100 data points
                    if (x % 100 == 0)
                    {
                        // create text annotation with label
                        var label = new TextAnnotation(this)
                        {
                            Text    = "N",
                            X1Value = x,
                            Y1Value = 0,
                            HorizontalAnchorPoint = HorizontalAnchorPoint.Center,
                            VerticalAnchorPoint   = VerticalAnchorPoint.Center,
                            FontStyle             = new FontStyle(20, Color.White),
                            Background            = new ColorDrawable(Color.DarkGreen),
                            ZIndex  = 1,
                            YAxisId = x % 200 == 0 ? AxisBase.DefaultAxisId : "SecondaryAxis"
                        };

                        // add label into annotation collection
                        chart.Annotations.Add(label);

                        // if we add annotation and x > fifoCapacity
                        // then we need to remove annotation which goes out of the screen
                        if (x > fifoCapacity)
                        {
                            chart.Annotations.Remove(0);
                        }
                    }

                    // zoom series to fit viewport size into XAxis direction
                    chart.ZoomExtentsX();
                    x++;
                }
            };

            timer.Start();

            // Create line series with data appended into lineData
            var lineSeries = new FastLineRenderableSeries()
            {
                DataSeries  = lineData,
                StrokeStyle = new SolidPenStyle(Color.LightBlue, 2)
            };

            // Create scatter series with data appended into scatterData
            var scatterSeries = new XyScatterRenderableSeries()
            {
                DataSeries  = scatterData,
                PointMarker = new EllipsePointMarker()
                {
                    Width       = 10,
                    Height      = 10,
                    StrokeStyle = new SolidPenStyle(Color.Green, 2),
                    FillStyle   = new SolidBrushStyle(Color.LightBlue)
                },
                YAxisId = "SecondaryAxis"
            };

            // Add the renderable series to the RenderableSeries collection of the chart
            chart.RenderableSeries.Add(lineSeries);
            chart.RenderableSeries.Add(scatterSeries);

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();

            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();

            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();

            zoomExtentsModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();

            yAxisDragModifier.SetReceiveHandledEvents(true);

            // Create and configure legend
            var legendModifier = new LegendModifier(this);

            legendModifier.SetLegendPosition(GravityFlags.Bottom | GravityFlags.CenterHorizontal, 10);
            legendModifier.SetOrientation(Orientation.Horizontal);

            // Create RolloverModifier to show tooltips
            var rolloverModifier = new RolloverModifier();

            rolloverModifier.SetReceiveHandledEvents(true);

            // Create modifier group from declared modifiers
            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, yAxisDragModifier, rolloverModifier, legendModifier);

            // Add the interactions to the ChartModifiers collection of the chart
            chart.ChartModifiers.Add(modifiers);
        }
        private void InitChart(SciChartSurface chart)
        {
            // Create a numeric X axis
            var xAxis = new NumericAxis(this)
            {
                AxisTitle = "Number of Samples (per Series)"
            };

            // Create a numeric Y axis
            var yAxis = new NumericAxis(this)
            {
                AxisTitle    = "Value",
                VisibleRange = new DoubleRange(-1, 1)
            };

            // Create a secondary numeric Y Axis
            var secondaryYAxis = new NumericAxis(this)
            {
                AxisTitle     = "Secondary",
                AxisId        = "SecondaryAxis",
                AxisAlignment = AxisAlignment.Left,
                VisibleRange  = new DoubleRange(-2, 2)
            };

            // Create interactivity modifiers
            var pinchZoomModifier = new PinchZoomModifier();

            pinchZoomModifier.SetReceiveHandledEvents(true);

            var zoomPanModifier = new ZoomPanModifier();

            zoomPanModifier.SetReceiveHandledEvents(true);

            var zoomExtentsModifier = new ZoomExtentsModifier();

            zoomExtentsModifier.SetReceiveHandledEvents(true);

            // Create RolloverModifier to show tooltips
            var rolloverModifier = new RolloverModifier();

            rolloverModifier.SetReceiveHandledEvents(true);

            var yAxisDragModifier = new YAxisDragModifier();

            yAxisDragModifier.SetReceiveHandledEvents(true);

            // Create and configure legend
            var legendModifier = new LegendModifier(this);

            legendModifier.SetLegendPosition(GravityFlags.Bottom | GravityFlags.CenterHorizontal, 10);
            legendModifier.SetOrientation(Orientation.Horizontal);

            var modifiers = new ModifierGroup(pinchZoomModifier, zoomPanModifier, zoomExtentsModifier, rolloverModifier,
                                              legendModifier, yAxisDragModifier);

            modifiers.SetReceiveHandledEvents(true);
            modifiers.MotionEventGroup = "SharedEvents";

            // Add xAxis to the XAxes collection of the chart
            chart.XAxes.Add(xAxis);

            // Add yAxis to the YAxes collection of the chart
            chart.YAxes.Add(yAxis);

            // Add secondaryYAxis to the YAxes collection of the chart
            chart.YAxes.Add(secondaryYAxis);

            // Add the interactions to the ChartModifiers collection of the chart
            chart.ChartModifiers.Add(modifiers);
        }