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); }