A lot of chart libraries (Winforms and WPF) limit the granularity seen when zooming into a chart. I generate charts containing millions of data points, time stamped at the millisecond level, and while I am not interested in seeing all data points on the chart (data aggregation or sampling would actually be preferable) I want to be able to zoom in as much as I want, essentially down to the single data point level irrespective of the amount of data in the bound data collection.

As I am currently still undecided whether to go with Winforms or WPF I extensively tested the DevExpress chart library and felt it did not fit my needs. It handles large data sets very poorly in that a) it becomes incredibly slow even when using "SwiftSeries" and even when turning on data sampling/aggregation (whats the point to sample/aggregate if the charts are as unresponsive as without sampling) and b) it did not allow zooming down to the single data point level. The larger the data series the less detail is visible at the maximum zoom level which I think should not be the case because there is no technical limitation to zooming to the single data point level.

Can you point me to a professional chart library that can handle the following:

  • WPF or Winforms (prefer Winforms
  • Handle data series potentially containing 1-2 million data points
  • zooming down to the single data point level (very important)
  • potentially be able to swiftly scroll and zoom through the entire data set through usage of data sampling/ data aggregation (but thats not a requirement just a preference)

Thanks

2

There are 2 best solutions below

1
On

Open source charting library for the .NET Framework

NPlot is an open source charting library for the .NET Framework. Its interface is both simple to use and flexible. The ability to quickly create charts makes NPlot an ideal tool for inspecting data in your software for debugging or analysis purposes. On the other hand, the library's flexibility makes it a great choice for creating carefully tuned charts for publications or as part of the interface to your Windows.Forms or Web application.

more info

http://netcontrols.org/nplot/wiki/

http://www.codeproject.com/Tips/460918/Generate-graph-using-Nplot

3
On

Probably this solution comes late. Anyway...

I've faced your problem before. I did in this way: From the perspective a chart is not able to show you millions of data points due to screen limitations, you know, a point a pixel. I made a pre-processing of data points. I estimated the number of points to show, for instance 2000 data points (or pixels). I grouped all data points in 2000 chunks and calculated max and min values of every chunk. Then I just feed the chart with a sequence of 2000 vertical bars. When users zoom or pan, I just recalculate with the same pre-process using the new range.