I am using SciChart for WPF version 1.3.1.1107 with the MVVM pattern.
I have a chart with several lines and I would like to zoom to extents on just one of the lines. Can you please suggest how I can zoom my chart to the extents of one of several lines that exist in a chart?
- sdemooy asked 12 years ago
- You must login to post comments
I’m afraid this isn’t possible in v1.3 of SciChart but in v2.0 or greater we introduced Multiple X,Y Axis feature.
What you would have to do is register the series on a separate X,Y Axis and zoom that X,YAxis to extents by using our Axis Interactivity API.
For a demo of Multiple X and Y Axis, please see here:
http://http://www.scichart.com/Abt.Controls.SciChart.SL.ExampleTestPage.html#/Abt.Controls.SciChart.Example;component/Examples/IWantTo/ModifyAxisBehaviour/MultipleXAxes.xaml
You will notice the series can be scaled separately by dragging the Y and X Axes.
Next, you can look at our Axis Interactivity APIs and Axis Members to find methods to control that specific axis.
Here are functions throughout the API which can assist in getting axis ranges to perform zoom to fit. For instance:
AxisBase.GetMaximumRange
/// <summary> /// Gets the Maximum Range of the axis, which is equal to the DataRange including any GrowBy factor applied /// </summary> /// <returns></returns> public abstract IRange GetMaximumRange();
DataSeries.GetWindowedYRange(IRange visibleXRange)
/// <summary> /// Gets the YRange of the data (min, max of the series) in the input visible range point range, where the input range is the <see cref="IAxis.VisibleRange"/> /// </summary> /// <param name="xRange">The X-Axis Range currently in view</param> /// <returns>The YRange of the data in this window</returns> /// <exception cref="System.ArgumentNullException">xRange</exception> /// <exception cref="System.InvalidOperationException">Invalid Range Type. Please ensure you are using DateTimeAxis where the X-Data is DateTime, and NumericAxis where the X-Data is Double, Float, Int, Long</exception> public IRange GetWindowedYRange(IRange xRange);
DataSeries.GetWindowedYRange(IndexRange indicesRange)
/// <summary> /// Gets the YRange of the data (min, max of the series) in the input IndexRange, where indices are point-indices on the DataSeries columns /// </summary> /// <param name="xIndexRange">The X-Axis Indices currently in view</param> /// <returns> /// The YRange of the data in this window /// </returns> public IRange GetWindowedYRange(IndexRange xIndexRange);
Also if you’re interested in writing custom zoom to fit, I would suggest looking at the source code (which you have access to), SciChartSurface.ZoomExtents(), ZoomExtentsY() methods as these have custom logic in them to determine zoom to fit on a per-axis basis.
- Andrew Burnett-Thompson answered 12 years ago
- You must login to post comments
Please login first to submit.