-
-
Jason
-
2,661 posts
|
Hello
Thanks for evaluating our charting controls!
- Each series can easily handle more than 10 million data points. The load time is about 3.5 seconds including the time used to randomly generate 10 million points. Zooming and panning is very smooth with no noticeable lag. The charts use virtualization so that when you are zoomed in, they only need to handle the points that are within the view port. To get good performance, there is a trade off between performance and the number of points you can display at once. If the viewport contains thousands of data points, data sampling will be used to only render up to 500 points per series by default. This produces a reasonable display of the overall data. As the chart is zoomed more level of detail is displayed. You can override the data sampling used to display more points if you want, but avoid displaying too many at once as WPF has limitations. If you also set the IsMinMaxDataSamplingEnabled property to true on each series, you can sacrifice a small amount of performance to get an extremely accurate display shape of the data. This is only really needed if you data is expected to have lots of spikes or outlying data points. We have also recently improved the performance for displaying multiple large data series. One customer is pleased with being able to render 300 large data series on the chart at once. With the default data sampling, that's 300x500 points in the viewport at once. This is pushing the limits of WPF so it does lag when panning, but it was acceptable. Please try displaying one of our charts with that amount of data that you need to display to see what the performance is like in action. Let me know if you have any questions about options for fine tuning the performance.
- Yes, the chart control has support for multiple axes. You can add ChartAxis instances to the Chart.AlternativeYAxes property. Make sure to set the Title property of each axis. Then for each DataSeries you add to the chart, you can set the YAxisTitle property to match the title on the axis you want to plot it against. If you don't set the YAxisTitle, then it will be plotted against the default Y axis. There is also AlternativeXAxes and XAxisTilte properties if you also need multiple X axes.
- Yes, ChartAxis has a Placement property which lets you place any axis on whatever side you want. Note that the AxisPlacement enum has all sides, but Y axes will only respond to Left, Right and Auto - and X axes only accepts Top, Bottom and Auto. The order of the axes is defined by the order they are added to the AlternativeYAxes property.
- The best way to highlight a series would be to set the IsSelected property of a series. By default, this won't visually do anything, but you can set the LineStyle property to be a custom style that contains a trigger to highlight the line in whatever way you want. Example code is posted below.
- Missing data points is currently only supported by LineSeries. This can be achieved by including null values in the items source, or setting the "x" or "y" properties of you data point models to null or NaN. Please list any other series you need this feature for and I'll implement it for you within 3 working days.
Highlighted series style example:
<Style x:Key="LineStyle" TargetType="Path">
<Setter Property="StrokeThickness" Value="1" />
<Style.Triggers>
<DataTrigger Binding="{Binding IsSelected}" Value="True">
<Setter Property="StrokeThickness" Value="5" />
<Setter Property="Stroke" Value="Red" />
</DataTrigger>
</Style.Triggers>
</Style>
Make sure to get the latest nightly build so you have all the performance improvements and features: http://www.mindscapehq.com/products/wpfelements/nightly-builds
Let me know if you have any further questions as you evaluate the charting controls
Jason Fauchelle
|