protected override void InitExample() { var xAxis = new NumericAxis(Activity); var yAxis = new NumericAxis(Activity); var ds1 = new XyDataSeries <double, double> { SeriesName = "Curve A" }; var ds2 = new XyDataSeries <double, double> { SeriesName = "Curve B" }; var ds3 = new XyDataSeries <double, double> { SeriesName = "Curve C" }; var ds4 = new XyDataSeries <double, double> { SeriesName = "Curve D" }; var ds1Points = DataManager.Instance.GetStraightLine(4000, 1.0, 10); var ds2Points = DataManager.Instance.GetStraightLine(3000, 1.0, 10); var ds3Points = DataManager.Instance.GetStraightLine(2000, 1.0, 10); var ds4Points = DataManager.Instance.GetStraightLine(1000, 1.0, 10); ds1.Append(ds1Points.XData, ds1Points.YData); ds2.Append(ds2Points.XData, ds2Points.YData); ds3.Append(ds3Points.XData, ds3Points.YData); ds4.Append(ds4Points.XData, ds4Points.YData); var legendModifier = new LegendModifier(Activity); legendModifier.SetSourceMode(SourceMode.AllSeries); using (Surface.SuspendUpdates()) { Surface.XAxes.Add(xAxis); Surface.YAxes.Add(yAxis); Surface.RenderableSeries = new RenderableSeriesCollection { new FastLineRenderableSeries { DataSeries = ds1, StrokeStyle = new SolidPenStyle(0xFFFFFF00, 2f.ToDip(Activity)) }, new FastLineRenderableSeries { DataSeries = ds2, StrokeStyle = new SolidPenStyle(0xFF279B27, 2f.ToDip(Activity)) }, new FastLineRenderableSeries { DataSeries = ds3, StrokeStyle = new SolidPenStyle(0xFFFF1919, 2f.ToDip(Activity)) }, new FastLineRenderableSeries { DataSeries = ds4, IsVisible = false, StrokeStyle = new SolidPenStyle(0xFF1964FF, 2f.ToDip(Activity)) } }; Surface.ChartModifiers.Add(legendModifier); } }
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); }
protected override void InitExample() { var xAxis = new NumericAxis(Activity) { AutoTicks = false, MajorDelta = 1d.FromComparable(), MinorDelta = 0.5d.FromComparable(), DrawMajorBands = true, LabelProvider = new YearsLabelProvider(), }; var yAxis = new NumericAxis(Activity) { AutoRange = AutoRange.Always, AxisTitle = "billions of People", GrowBy = new DoubleRange(0, 0.1), DrawMajorBands = true, }; var china = new[] { 1.269, 1.330, 1.356, 1.304 }; var india = new[] { 1.004, 1.173, 1.236, 1.656 }; var usa = new[] { 0.282, 0.310, 0.319, 0.439 }; var indonesia = new[] { 0.214, 0.243, 0.254, 0.313 }; var brazil = new[] { 0.176, 0.201, 0.203, 0.261 }; var pakistan = new[] { 0.146, 0.184, 0.196, 0.276 }; var nigeria = new[] { 0.123, 0.152, 0.177, 0.264 }; var bangladesh = new[] { 0.130, 0.156, 0.166, 0.234 }; var russia = new[] { 0.147, 0.139, 0.142, 0.109 }; var japan = new[] { 0.126, 0.127, 0.127, 0.094 }; var restOfTheWorld = new[] { 2.466, 2.829, 3.005, 4.306 }; var chinaDataSeries = new XyDataSeries <double, double> { SeriesName = "China" }; var indiaDataSeries = new XyDataSeries <double, double> { SeriesName = "India" }; var usaDataSeries = new XyDataSeries <double, double> { SeriesName = "USA" }; var indonesiaDataSeries = new XyDataSeries <double, double> { SeriesName = "Indonesia" }; var brazilDataSeries = new XyDataSeries <double, double> { SeriesName = "Brazil" }; var pakistanDataSeries = new XyDataSeries <double, double> { SeriesName = "Pakistan" }; var nigeriaDataSeries = new XyDataSeries <double, double> { SeriesName = "Nigeria" }; var bangladeshDataSeries = new XyDataSeries <double, double> { SeriesName = "Bangladesh" }; var russiaDataSeries = new XyDataSeries <double, double> { SeriesName = "Russia" }; var japanDataSeries = new XyDataSeries <double, double> { SeriesName = "Japan" }; var restOfTheWorldDataSeries = new XyDataSeries <double, double> { SeriesName = "Rest Of The World" }; var totalDataSeries = new XyDataSeries <double, double> { SeriesName = "Total" }; for (var i = 0; i < 4; i++) { double xValue = i; chinaDataSeries.Append(xValue, china[i]); if (i != 2) { indiaDataSeries.Append(xValue, india[i]); usaDataSeries.Append(xValue, usa[i]); indonesiaDataSeries.Append(xValue, indonesia[i]); brazilDataSeries.Append(xValue, brazil[i]); } else { indiaDataSeries.Append(xValue, Double.NaN); usaDataSeries.Append(xValue, Double.NaN); indonesiaDataSeries.Append(xValue, Double.NaN); brazilDataSeries.Append(xValue, Double.NaN); } pakistanDataSeries.Append(xValue, pakistan[i]); nigeriaDataSeries.Append(xValue, nigeria[i]); bangladeshDataSeries.Append(xValue, bangladesh[i]); russiaDataSeries.Append(xValue, russia[i]); japanDataSeries.Append(xValue, japan[i]); restOfTheWorldDataSeries.Append(xValue, restOfTheWorld[i]); totalDataSeries.Append(xValue, china[i] + india[i] + usa[i] + indonesia[i] + brazil[i] + pakistan[i] + nigeria[i] + bangladesh[i] + russia[i] + japan[i] + restOfTheWorld[i]); } var columnsCollection = new HorizontallyStackedColumnsCollection(); columnsCollection.Add(GetRenderableSeries(chinaDataSeries, 0xff3399ff, 0xff2D68BC)); columnsCollection.Add(GetRenderableSeries(indiaDataSeries, 0xff014358, 0xff013547)); columnsCollection.Add(GetRenderableSeries(usaDataSeries, 0xff1f8a71, 0xff1B5D46)); columnsCollection.Add(GetRenderableSeries(indonesiaDataSeries, 0xffbdd63b, 0xff7E952B)); columnsCollection.Add(GetRenderableSeries(brazilDataSeries, 0xffffe00b, 0xffAA8F0B)); columnsCollection.Add(GetRenderableSeries(pakistanDataSeries, 0xfff27421, 0xffA95419)); columnsCollection.Add(GetRenderableSeries(nigeriaDataSeries, 0xffbb0000, 0xff840000)); columnsCollection.Add(GetRenderableSeries(bangladeshDataSeries, 0xff550033, 0xff370018)); columnsCollection.Add(GetRenderableSeries(russiaDataSeries, 0xff339933, 0xff2D732D)); columnsCollection.Add(GetRenderableSeries(japanDataSeries, 0xff00aba9, 0xff006C6A)); columnsCollection.Add(GetRenderableSeries(restOfTheWorldDataSeries, 0xff560068, 0xff3D0049)); var legendModifier = new LegendModifier(Activity); legendModifier.SetLegendPosition(GravityFlags.Top | GravityFlags.Left, 10); using (Surface.SuspendUpdates()) { Surface.XAxes.Add(xAxis); Surface.YAxes.Add(yAxis); Surface.RenderableSeries.Add(columnsCollection); Surface.ChartModifiers.Add(legendModifier); Surface.ChartModifiers.Add(new TooltipModifier()); } }
public static LegendModifier WithPosition(this LegendModifier legendModifier, GravityFlags gravity, int margin) { legendModifier.SetLegendPosition(gravity, margin); return(legendModifier); }
public static LegendModifier WithOrientation(this LegendModifier legendModifier, Orientation orientation) { legendModifier.SetOrientation(orientation); return(legendModifier); }
public static LegendModifier WithShowCheckBoxes(this LegendModifier legendModifier, bool showCheckBoxes) { legendModifier.SetShowCheckboxes(showCheckBoxes); return(legendModifier); }
private void SetupRenderableSeries() { var dataManager = DataManager.Instance; var priceBars = dataManager.GetPriceDataIndu(); var mountainDataSeries = new XyDataSeries <double, double> { SeriesName = "Mountain Series" }; var lineDataSeries = new XyDataSeries <double, double> { SeriesName = "Line Series" }; var columnDataSeries = new XyDataSeries <double, long> { SeriesName = "Column Series" }; var candlestickDataSeries = new OhlcDataSeries <double, double> { SeriesName = "Candlestick Series" }; var xValues = Enumerable.Range(0, priceBars.Count).Select(x => (double)x).ToArray(); mountainDataSeries.Append(xValues, priceBars.LowData.Select(x => x - 1000d)); lineDataSeries.Append(xValues, dataManager.ComputeMovingAverage(priceBars.CloseData, 50)); columnDataSeries.Append(xValues, priceBars.VolumeData); candlestickDataSeries.Append(xValues, priceBars.OpenData, priceBars.HighData, priceBars.LowData, priceBars.CloseData); var mountainSeries = new FastMountainRenderableSeries { DataSeries = mountainDataSeries, YAxisId = "PrimaryAxisId" }; var lineSeries = new FastLineRenderableSeries { DataSeries = lineDataSeries, YAxisId = "PrimaryAxisId" }; var columnSeries = new FastColumnRenderableSeries { DataSeries = columnDataSeries, YAxisId = "SecondaryAxisId" }; var candlestickSeries = new FastCandlestickRenderableSeries { DataSeries = candlestickDataSeries, YAxisId = "PrimaryAxisId" }; var legendModifier = new LegendModifier(Activity); legendModifier.SetShowCheckboxes(false); using (Surface.SuspendUpdates()) { Surface.RenderableSeries.Add(mountainSeries); Surface.RenderableSeries.Add(lineSeries); Surface.RenderableSeries.Add(columnSeries); Surface.RenderableSeries.Add(candlestickSeries); Surface.ChartModifiers = new ChartModifierCollection { legendModifier, new CursorModifier(), new PinchZoomModifier(), new ZoomExtentsModifier(), }; new ScaleAnimatorBuilder(mountainSeries, 10500d) { Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600 }.Start(); new ScaleAnimatorBuilder(candlestickSeries, 11700d) { Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600 }.Start(); new ScaleAnimatorBuilder(lineSeries, 12250d) { Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600 }.Start(); new ScaleAnimatorBuilder(columnSeries, 10500d) { Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600 }.Start(); } }
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); }
protected virtual void OnCreateModifiers(SciChartInteractionToolbar toolbar, ISciChartSurface scs) { var listMod = new List <ToolbarItem>(); var surface = scs as SciChartSurface; var isPolar = surface != null && (surface.IsPolarChart || surface.XAxes.Any(x => x.IsPolarAxis) || surface.YAxes.Any(x => x.IsPolarAxis)); // RubberBandXyZoomModifier var rbzm = new RubberBandXyZoomModifier { IsXAxisOnly = IsZoomXAxisOnly }; _modifiersInAllMode.ChildModifiers.Add(rbzm); _modifiersInDevMode.ChildModifiers.Add(rbzm); if (!isPolar) { // ZoomPanModifier var zpm = new ZoomPanModifier { ClipModeX = ClipMode.None, IsEnabled = false }; _modifiersInAllMode.ChildModifiers.Add(zpm); _modifiersInDevMode.ChildModifiers.Add(zpm); } // ZoomExtentsModifier var zoomExtents = new ZoomExtentsModifier { ExecuteOn = ExecuteOn.MouseDoubleClick }; _modifiersInAllMode.ChildModifiers.Add(zoomExtents); _modifiersInDevMode.ChildModifiers.Add(zoomExtents); // SeriesSelectionModifier var selStyle = new Style(typeof(BaseRenderableSeries)); selStyle.Setters.Add(new Setter(BaseRenderableSeries.StrokeProperty, Colors.Red)); selStyle.Setters.Add(new Setter(BaseRenderableSeries.StrokeThicknessProperty, 2)); selStyle.Seal(); var seriesSelection = new SeriesSelectionModifier { SelectedSeriesStyle = selStyle, ReceiveHandledEvents = true, IsEnabled = false }; _modifiersInDevMode.ChildModifiers.Add(seriesSelection); // AnnotationCreationModifier var annotationMod = new CustomAnnotationCreationModifier(); annotationMod.AnnotationCreated += (sender, args) => { var modifier = (CustomAnnotationCreationModifier)sender; if (modifier != null) { foreach (var annotation in scs.Annotations) { var newAnnotation = (annotation as AnnotationBase); if (newAnnotation != null) { newAnnotation.IsEditable = true; newAnnotation.CanEditText = true; } } modifier.IsEnabled = false; } }; annotationMod.IsEnabled = false; _modifiersInDevMode.ChildModifiers.Add(annotationMod); // CustomRotateChartModifier var rotate = new CustomRotateChartModifier(); var propertyPath = new PropertyPath(CustomRotateChartModifier.IsRotationEnabledProperty); var binding = new Binding() { Source = this, Path = propertyPath }; rotate.SetBinding(ChartModifierBase.IsEnabledProperty, binding); _modifiersInDevMode.ChildModifiers.Add(rotate); // Custom Export Modifier var export = new CustomExportModifier(); _modifiersInDevMode.ChildModifiers.Add(export); // CustomThemeChangeModifier var theme = new CustomThemeChangeModifier(); _modifiersInDevMode.ChildModifiers.Add(theme); // LegendModifier var legend = new LegendModifier { UseInterpolation = true, ShowLegend = false, ShowVisibilityCheckboxes = true, ShowSeriesMarkers = true }; _modifiersInDevMode.ChildModifiers.Add(legend); // MouseWheelZoomModifier var mouseWheel = new MouseWheelZoomModifier(); _modifiersInAllMode.ChildModifiers.Add(mouseWheel); _modifiersInDevMode.ChildModifiers.Add(mouseWheel); // CustomFlipModifier var flip = new CustomFlipModifier(); _modifiersInDevMode.ChildModifiers.Add(flip); // RolloverModifier var rollover = new RolloverModifier { IsEnabled = false, UseInterpolation = true, DrawVerticalLine = true, ReceiveHandledEvents = true, ShowAxisLabels = true, ShowTooltipOn = ShowTooltipOptions.Always }; _modifiersInDevMode.ChildModifiers.Add(rollover); // CursorModifier var cursorMod = new CursorModifier { IsEnabled = false, ShowTooltipOn = ShowTooltipOptions.MouseOver, ReceiveHandledEvents = true, ShowAxisLabels = false, ShowTooltip = true }; _modifiersInDevMode.ChildModifiers.Add(cursorMod); // TooltipModifier var toolTipMod = new TooltipModifier { ReceiveHandledEvents = true, IsEnabled = false, UseInterpolation = true }; _modifiersInDevMode.ChildModifiers.Add(toolTipMod); if (!isPolar) { // YAxisDragModifier var yAxisDrag = new YAxisDragModifier(); _modifiersInDevMode.ChildModifiers.Add(yAxisDrag); // XAxisDragModifier var xAxisDrag = new XAxisDragModifier(); _modifiersInDevMode.ChildModifiers.Add(xAxisDrag); } var exampleModifiers = (scs.ChartModifier as ModifierGroup); if (exampleModifiers == null) { exampleModifiers = new ModifierGroup(); if (scs.ChartModifier != null) { exampleModifiers.ChildModifiers.Add(scs.ChartModifier); } } var devMods = new ModifierGroup(); var userMods = new ModifierGroup(); foreach (var devMod in _modifiersInDevMode.ChildModifiers) { var devModName = devMod.ModifierName; if (devMod is CustomAnnotationCreationModifier) { devModName = "AnnotationCreationModifier"; } if (!(exampleModifiers.ChildModifiers.Any(x => x.ModifierName == devModName))) { devMods.ChildModifiers.Add(devMod); } else { if (exampleModifiers.ChildModifiers.Count(x => x.ModifierName == devModName) == 1) { var exampleMod = exampleModifiers.ChildModifiers.Single(x => x.ModifierName == devModName); if (!GetAppearceInToolbar((ChartModifierBase)exampleMod)) { continue; } devMods.ChildModifiers.Add(exampleMod); } else { foreach (var exampleMod in exampleModifiers.ChildModifiers.Where(x => x.ModifierName == devModName && GetAppearceInToolbar((ChartModifierBase)x))) { devMods.ChildModifiers.Add(exampleMod); } } } } foreach (var inAllMod in _modifiersInAllMode.ChildModifiers) { var modName = inAllMod.ModifierName; if (!(exampleModifiers.ChildModifiers.Any(x => x.ModifierName == modName))) { userMods.ChildModifiers.Add(inAllMod); } else { if (exampleModifiers.ChildModifiers.Count(x => x.ModifierName == modName) == 1) { var exampleMod = exampleModifiers.ChildModifiers.Single(x => x.ModifierName == modName); if (!GetAppearceInToolbar((ChartModifierBase)exampleMod)) { continue; } userMods.ChildModifiers.Add(exampleMod); } else { foreach (var exampleMod in exampleModifiers.ChildModifiers.Where(x => x.ModifierName == modName && GetAppearceInToolbar((ChartModifierBase)x))) { userMods.ChildModifiers.Add(exampleMod); } } } } foreach (var exampleMod in exampleModifiers.ChildModifiers.Where(x => GetAppearceInToolbar((ChartModifierBase)x))) { if (!devMods.ChildModifiers.Any(x => x.ModifierName == exampleMod.ModifierName)) { devMods.ChildModifiers.Add(exampleMod); } if (!userMods.ChildModifiers.Any(x => x.ModifierName == exampleMod.ModifierName)) { userMods.ChildModifiers.Add(exampleMod); } } _modifiersInDevMode = devMods; _modifiersInUserMode = userMods; // Set modifiers to the chart scs.ChartModifier = IsDeveloperMode ? _modifiersInDevMode : _modifiersInUserMode; var wrappers = WrapModifiers(toolbar.IsDeveloperMode ? toolbar._modifiersInDevMode.ChildModifiers : toolbar._modifiersInUserMode.ChildModifiers); // Set modifiers to the ItemSource for ItemsControl listMod.AddRange(wrappers); if (listMod.Any(x => x.Modifier.ModifierName == "AnnotationCreationModifier" || x.Modifier is VerticalSliceModifier)) { listMod.Remove(listMod.FirstOrDefault(x => x.Modifier.ModifierName == "AnnotationCreationModifier")); listMod.Remove(listMod.FirstOrDefault(x => x.Modifier is VerticalSliceModifier)); } ModifiersSource = listMod; }
protected override void InitExample() { InitializeUIHandlers(); var xAxis = new NumericAxis(Activity) { GrowBy = new DoubleRange(0.1, 0.1), VisibleRange = new DoubleRange(150, 180) }; var yRightAxis = new NumericAxis(Activity) { GrowBy = new DoubleRange(0.1, 0.1), AxisAlignment = AxisAlignment.Right, AutoRange = AutoRange.Always, AxisId = "PrimaryAxisId", DrawMajorTicks = false, DrawMinorTicks = false, LabelProvider = new ThousandsLabelProvider(), }; var yLeftAxis = new NumericAxis(Activity) { GrowBy = new DoubleRange(0, 3d), AxisAlignment = AxisAlignment.Left, AutoRange = AutoRange.Always, AxisId = "SecondaryAxisId", DrawMajorTicks = false, DrawMinorTicks = false, LabelProvider = new BillionsLabelProvider(), }; var dataManager = DataManager.Instance; var priceBars = dataManager.GetPriceDataIndu(); var mountainDataSeries = new XyDataSeries <double, double> { SeriesName = "Mountain Series" }; var lineDataSeries = new XyDataSeries <double, double> { SeriesName = "Line Series" }; var columnDataSeries = new XyDataSeries <double, long> { SeriesName = "Column Series" }; var candlestickDataSeries = new OhlcDataSeries <double, double> { SeriesName = "Candlestick Series" }; var xValues = Enumerable.Range(0, priceBars.Count).Select(x => (double)x).ToArray(); mountainDataSeries.Append(xValues, priceBars.LowData.Select(x => x - 1000d)); lineDataSeries.Append(xValues, dataManager.ComputeMovingAverage(priceBars.CloseData, 50)); columnDataSeries.Append(xValues, priceBars.VolumeData); candlestickDataSeries.Append(xValues, priceBars.OpenData, priceBars.HighData, priceBars.LowData, priceBars.CloseData); var mountainRenderableSeries = new FastMountainRenderableSeries { DataSeries = mountainDataSeries, YAxisId = "PrimaryAxisId" }; var lineRenderableSeries = new FastLineRenderableSeries { DataSeries = lineDataSeries, YAxisId = "PrimaryAxisId" }; var columnRenderableSeries = new FastColumnRenderableSeries { DataSeries = columnDataSeries, YAxisId = "SecondaryAxisId" }; var candlestickRenderableSeries = new FastCandlestickRenderableSeries { DataSeries = candlestickDataSeries, YAxisId = "PrimaryAxisId" }; var legendModifier = new LegendModifier(Activity); legendModifier.SetShowCheckboxes(false); using (Surface.SuspendUpdates()) { Surface.XAxes.Add(xAxis); Surface.YAxes.Add(yRightAxis); Surface.YAxes.Add(yLeftAxis); Surface.RenderableSeries.Add(mountainRenderableSeries); Surface.RenderableSeries.Add(lineRenderableSeries); Surface.RenderableSeries.Add(columnRenderableSeries); Surface.RenderableSeries.Add(candlestickRenderableSeries); Surface.ChartModifiers = new ChartModifierCollection { legendModifier, new CursorModifier(), new ZoomExtentsModifier(), }; } }
public TrackToShow() { XAxisCollection = new AxisCollection(); YAxis = new NumericAxis { DrawMajorTicks = false, AxisAlignment = AxisAlignment.Left, FlipCoordinates = true, MinimalZoomConstrain = 1, Name = "yAxisDesign", }; HasCurves = false; ChartModifier = new ModifierGroup(); SeriesModifier = new SeriesSelectionModifier { ReceiveHandledEvents = true }; ScaleModifier = new ScaleFactorModifier { ReceiveHandledEvents = true }; ZoomPanModifier = new ZoomPanModifierExtension { ReceiveHandledEvents = true, ClipModeX = ClipMode.None, ExecuteOn = ExecuteOn.MouseLeftButton, IsEnabled = true, XyDirection = XyDirection.YDirection, ZoomExtentsY = true }; LegendModifier = new LegendModifier { GetLegendDataFor = SourceMode.AllSeries }; MouseWheelModifier = new MouseWheelZoomModifier { ReceiveHandledEvents = true, XyDirection = XyDirection.YDirection }; ZoomModifier = new ZoomExtentsModifier { ReceiveHandledEvents = true, XyDirection = XyDirection.YDirection }; TooltipModifierObject = new TooltipModifier { UseInterpolation = true }; TooltipModifierObject.TooltipLabelTemplate = GetTooltipLabelTemplate(); ChartModifier.ChildModifiers.Add(SeriesModifier); ChartModifier.ChildModifiers.Add(ScaleModifier); ChartModifier.ChildModifiers.Add(ZoomPanModifier); ChartModifier.ChildModifiers.Add(LegendModifier); ChartModifier.ChildModifiers.Add(MouseWheelModifier); ChartModifier.ChildModifiers.Add(ZoomModifier); ChartModifier.ChildModifiers.Add(TooltipModifierObject); ChartModifier.ChildModifiers.Add(ExtendedTooltipModifier); }
protected override void InitExample() { // Apply a theme to the chart // The custom theme is named SciChart_BerryBlue and is included as a number of resource files in the application resources // The xml resources contain all the keys for theme colors and brushes and styles to apply to the chart Surface.Theme = Resource.Style.SciChart_BerryBlue; // The rest of this example is setting up the chart with some axis, and data var xAxis = new NumericAxis(Activity) { GrowBy = new DoubleRange(0.1, 0.1), VisibleRange = new DoubleRange(150, 180) }; var yRightAxis = new NumericAxis(Activity) { GrowBy = new DoubleRange(0.1, 0.1), AxisAlignment = AxisAlignment.Right, AutoRange = AutoRange.Always, AxisId = "PrimaryAxisId", DrawMajorTicks = false, DrawMinorTicks = false, LabelProvider = new ThousandsLabelProvider(), }; var yLeftAxis = new NumericAxis(Activity) { GrowBy = new DoubleRange(0, 3d), AxisAlignment = AxisAlignment.Left, AutoRange = AutoRange.Always, AxisId = "SecondaryAxisId", DrawMajorTicks = false, DrawMinorTicks = false, LabelProvider = new BillionsLabelProvider(), }; var dataManager = DataManager.Instance; var priceBars = dataManager.GetPriceDataIndu(); var mountainDataSeries = new XyDataSeries <double, double> { SeriesName = "Mountain Series" }; var lineDataSeries = new XyDataSeries <double, double> { SeriesName = "Line Series" }; var columnDataSeries = new XyDataSeries <double, long> { SeriesName = "Column Series" }; var candlestickDataSeries = new OhlcDataSeries <double, double> { SeriesName = "Candlestick Series" }; var xValues = Enumerable.Range(0, priceBars.Count).Select(x => (double)x).ToArray(); mountainDataSeries.Append(xValues, priceBars.LowData.Select(x => x - 1000d)); lineDataSeries.Append(xValues, dataManager.ComputeMovingAverage(priceBars.CloseData, 50)); columnDataSeries.Append(xValues, priceBars.VolumeData); candlestickDataSeries.Append(xValues, priceBars.OpenData, priceBars.HighData, priceBars.LowData, priceBars.CloseData); var mountainSeries = new FastMountainRenderableSeries { DataSeries = mountainDataSeries, YAxisId = "PrimaryAxisId" }; var lineSeries = new FastLineRenderableSeries { DataSeries = lineDataSeries, YAxisId = "PrimaryAxisId" }; var columnSeries = new FastColumnRenderableSeries { DataSeries = columnDataSeries, YAxisId = "SecondaryAxisId" }; var candlestickSeries = new FastCandlestickRenderableSeries { DataSeries = candlestickDataSeries, YAxisId = "PrimaryAxisId" }; var legendModifier = new LegendModifier(Activity); legendModifier.SetShowCheckboxes(false); using (Surface.SuspendUpdates()) { Surface.XAxes.Add(xAxis); Surface.YAxes.Add(yRightAxis); Surface.YAxes.Add(yLeftAxis); Surface.RenderableSeries.Add(mountainSeries); Surface.RenderableSeries.Add(lineSeries); Surface.RenderableSeries.Add(columnSeries); Surface.RenderableSeries.Add(candlestickSeries); Surface.ChartModifiers = new ChartModifierCollection { legendModifier, new CursorModifier(), new ZoomExtentsModifier(), }; new ScaleAnimatorBuilder(mountainSeries, 10500d) { Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600 }.Start(); new ScaleAnimatorBuilder(candlestickSeries, 11700d) { Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600 }.Start(); new ScaleAnimatorBuilder(lineSeries, 12250d) { Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600 }.Start(); new ScaleAnimatorBuilder(columnSeries, 10500d) { Interpolator = new OvershootInterpolator(), Duration = 1000, StartDelay = 600 }.Start(); } }
protected override void InitExample() { var xAxis = new NumericAxis(Activity); var yAxis = new NumericAxis(Activity); var ds1 = new XyDataSeries <double, double> { SeriesName = "Curve A" }; var ds2 = new XyDataSeries <double, double> { SeriesName = "Curve B" }; var ds3 = new XyDataSeries <double, double> { SeriesName = "Curve C" }; var ds4 = new XyDataSeries <double, double> { SeriesName = "Curve D" }; var ds1Points = DataManager.Instance.GetStraightLine(4000, 1.0, 10); var ds2Points = DataManager.Instance.GetStraightLine(3000, 1.0, 10); var ds3Points = DataManager.Instance.GetStraightLine(2000, 1.0, 10); var ds4Points = DataManager.Instance.GetStraightLine(1000, 1.0, 10); ds1.Append(ds1Points.XData, ds1Points.YData); ds2.Append(ds2Points.XData, ds2Points.YData); ds3.Append(ds3Points.XData, ds3Points.YData); ds4.Append(ds4Points.XData, ds4Points.YData); using (Surface.SuspendUpdates()) { Surface.XAxes.Add(xAxis); Surface.YAxes.Add(yAxis); Surface.RenderableSeries = new RenderableSeriesCollection { new FastLineRenderableSeries { DataSeries = ds1, StrokeStyle = new PenStyle.Builder(Activity).WithThickness(2f).WithColor(Color.Rgb(0xFF, 0xFF, 0x00)).Build() }, new FastLineRenderableSeries { DataSeries = ds2, StrokeStyle = new PenStyle.Builder(Activity).WithThickness(2f).WithColor(Color.Rgb(0x27, 0x9B, 0x27)).Build() }, new FastLineRenderableSeries { DataSeries = ds3, StrokeStyle = new PenStyle.Builder(Activity).WithThickness(2f).WithColor(Color.Rgb(0xFF, 0x19, 0x19)).Build() }, new FastLineRenderableSeries { DataSeries = ds4, IsVisible = false, StrokeStyle = new PenStyle.Builder(Activity).WithThickness(2f).WithColor(Color.Rgb(0x19, 0x64, 0xFF)).Build() } }; var legendModifier = new LegendModifier(Activity); legendModifier.SetSourceMode(SourceMode.AllSeries); Surface.ChartModifiers.Add(legendModifier); } }
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); }