Since Q3 2011 we ship two separate charting controls - RadChart and RadChartView. RadChart allows you to visualize interactive, rich, animated charts and enables the end users to analyze complex data. It provides rich and mature functionality that covers a large spectrum of use cases.
On the other hand, RadChartView is a control that addresses some of the limitations and deficiencies that we have identified in the RadChart implementation over the years. Our Overview topic can walk you through all specifics of the RadChartView control.
This help topic aims to compare the two controls and get you familiar with what you need to know when migrating from RadChart to RadChartView.
Generally we would encourage you to use the new ChartView control for any new project development that you are starting now. As for your existing applications - the migration is possible but there is no straightforward migration path between RadChart and RadChartView due to the different approach taken in the development of RadChartView.
1. Performance - exceptional performance, intuitive and easy-to-use model and pixel-perfectness were some of the major tasks we have set for the RadChartView control.
We have separated the chart into several layers, where the core one is totally platform agnostic and is built on top of our custom logical tree. We call this layer the “View Model” of the chart.
We have a custom property store used within the charting logical tree. It is about 5 times faster than DependencyObject in look-up time and consumes about 3 times less memory.
We have an entirely custom layout and do not rely on the XAML layout system to arrange our charting view models.
We have a stand-alone visualization layer that presents the chart view model. Every view model is presented by the simplest possible SL visual – e.g. Rectangle, Line, Polyline, etc. Still, every single aspect is fully customizable by specifying DataTemplates or Styles.
We use Canvas – the only XAML panel that does not invalidate measure automatically. When a redraw of some charting part is required, we simply update the Width, Height, Canvas.Left, and Canvas.Top properties of the corresponding visual. A simple test proved that calling InvalidateMeasure of the canvas upon a change in the ViewModel degrades performance about 10 times.
2. Architecture- a number of chart controls built for a specific purpose vs one monolith control (provides cleaner, simpler, and relevant API)
DataBinding - The presentation of the data itself in both controls is achieved by declaring chart series and filling these series with data points. The significant difference is that in RadChartView the chart Series utilize different visualization techniques based on the data points it represents. This is why in RadChartView the Series expose an ItemsSource property which has to be used to populate each Series with data.
Both controls support linear and logarithmic axes. However, unlike the RadChart logarithmic axis, the RadChartView logarithmic axis is a separate type. And what is more, RadChartView provides a variety of different axes: Linear, Logarithmic, DateTime, Categorical.
DateTime support - RadChartView further extends the charting DateTime support by providing specific DateTime Axes:
DateTimeCategoricalAxis - a specialized categorical axis that expects each DataPoint to represent a System.DateTime value. The points are grouped by a user-defined DateTime component (Year, Month, Day) and then the groups are sorted chronologically.
DateTimeContinuousAxis - a specialized axis that expects each DataPoint to represent a System.DateTime value. This axis mimics a timeline where the coordinates of each DataPoint are calculated based on the position of its associated DateTime value on the timeline. The base unit (or the timeline step) of the axis is calculated based on the smallest difference between any two dates.
Multiple Axes - RadChartView supports multiple X-Axes unlike RadChart. Both controls support multiple Y-Axes definitions. There is no limit on the number of additional axes that can be used.
Radar and Polar axis - in order to display Radar and Polar Series RadChartView exposes these two axes. They have no alternative in RadChart. More details can be found in the Polar Axis topic as well as in the Series section of this documentation.
Automatic Range - In RadChart you had to manually set all three range properties - MinValue, MaxValue, and Step of the axis whenever you needed to customize the automatically generated range. However, the RadChartView implementation allows you to set only two of the above properties as it can calculate the last one internally based on the custom settings you applied.
Series - RadChartView supports almost all Series types known from RadChart to help you create rich, visually-appealing presentations. However, there are several new features added:
Financial Indicators - RadChartView supports 20 of the most common financial indicators to complement the data visualization for all Cartesian Series types.
Polar and Radar Series - two-dimensional charts presented in radial plot area in polar coordinates.
Combined Series - uniform RadCartesianChart Series can be combined in either Stacks or Clusters. Combinations are formed when multiple DataPoints from different Series fall within the same category. You can read more about this in the Chart Series topic.
Series Orientation - both controls allow you to have horizontally or vertically oriented series. However, while in RadChart you have to specify different series types - BarSeriesDefinition vs. HorizontalBarSeriesDefinition, in RadChartView this concept is changed to facilitate the usage of horizontal and vertical series. For instance, in order to display BarSeries vertically in a RadChartView, you only need to set the CategoricalAxis as a Y-axis without having to change the series definition.
All supported RadChartView Series types are presented in the Series Overview topic.
- Chart Legend - RadChartView does not ship with a built-in legend. However, you can easily integrate the RadLegend control in it. Read More
3. Behaviors - both RadChartView and RadChart support Selection, Tooltip and Scroll and Zoom behaviors. However, on top of that the RadChartView exposes a TrackBall behavior:
TrackBall Behavior (or also known as a current value indicator) is a behavior available only within the RadChartView. It displays a vertical line across the charting plot area that comes with visual indicators (circles by default) at the points where the trackball line crosses the visualization of a Series objects.
Selection - this behavior exposes a SelectionChanged event that you can use to easily determine the DataPoint that is selected and the Series it belongs to. The behavior is available in both RadChart and RadChartView controls.
Scroll and Zoom - this behavior is available in both RadChart and RadChartView controls. It allows horizontal and vertical zooming and scrolling. However, the approach implemented in the RadChartView ZoomScroll behavior is brand new and it allows users to simultaneously set the zoom factor for both the X and Y axes.
Tooltip - Although both charting controls support tooltips, only the Tooltip behavior implemented within the RadChartView component allows you to specify the placement and the offset of the tooltip thus further controlling where it should be visualized.
When the chart is populated with thousands of business items, the visual representation might not be that clear. It is possible that there are two or more DataPoints shown with very close Y and X values. This is when sampling comes in handy. The sampling engine visualizes a subset of the original data. By combining the items, so that the DataPoints are limited to a certain number (200 by default). In a data-bound RadChart sampling is turned on by default and is activated as soon as the DataPoints number exceeds 200. However, in some cases you might have to implement a custom sampling function that determines how to combine the values of two DataPoints. RadChartView takes that idea on another level. Instead of providing a sampling mechanism after plotting the data, the control allows you to use a ChartDataSource component to sample the business data beforehand. The ChartDataSource component supports both index-based and DateTime sampling.
Unline RadChart, the RadChartView control comes with a built-in set of palettes which you can use to easily customize the look and feel of your charting components. You can examine and try all available palettes in the Appearance example after navigating to the ChartView control, in the Overview section.
The information is up-to-date as for R3 2016. The list of features will change with our next releases.
- Hierarchical Data Support*
- All 3D series types
*Currently RadChartView provides partial support for Hierarchical Data through the SeriesProvider feature.
Check the RadChartView3D which provides a 3D chart visualizing three-dimensional data in the 3D space, unlike the 3D series of RadChart where the third dimension has no relation to the plotted two-dimensional data.