Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

High density Silverlight charting control

I've been looking into Silverlight charting controls to display a large number of samples, (~10,000 data points in five separate series - ~50k points all up).

I have found the existing options produced by Dundas, Visifire, Microsoft etc to be extremely poor performers when displaying more than a few hundred data points.

I believe the performance issues with existing chart controls is caused by the heavy use of vector graphics. Ergo one solution would be a client-side chart control that uses the WritableBitmap class to generate a raster chart.

Before I fall too far down the wheel re-invention rabbit hole - has anyone found a third party or OSS control that will manage large numbers of data points on a sparkline?

like image 346
ptg Avatar asked Apr 09 '10 06:04

ptg


4 Answers

Check out Visiblox ( http://www.visiblox.com/ ) Charts. I'm working on a telemetry application at the minute which uses three of their charts in the same Silverlight component, plotting about 36,000 points in total, and there is very little slowdown in terms of performance, if any at all.

They have a high performance example on their website here - http://www.visiblox.com/examples/LargeDataSets. I chose to use Visiblox after loooking at the following blog post:

New performance comparison: http://www.visifire.com/blog/2011/12/02/fast-silverlight-charts/

Old performance comparison: http://www.scottlogic.co.uk/blog/colin/2010/12/visiblox-visifire-dynamicdatadisplay-charting-performance-comparison/

My telemetry example is now part of a CodeProject article that I have created, if you want to take a look!

like image 117
Chris Grant Avatar answered Oct 18 '22 13:10

Chris Grant


Based on the recommendations here, I have just trialled Visiblox and Infragistics.

Visiblox has a good developer experience, clean APIs, no bloat. While the performance is OK for a few thousand datapoints, performance breaks down as you go into the 100k range. Here's the Visiblox sample with a few thousand points (you can download the sample and just tweak the number of datapoints).

Now, the common argument here is that you should not bind that much data to a chart anyway, but should do some trimming beforehand. I do agree with that, but ideally, I want a chart control that does take care of that for me. Getting Zooming, Panning and all that right are non-trivial tasks and I'd be happy to shell out a few 100$ to get that functionality. It's plain economic common sense to not reinvent the wheel here.

Infragistics certainly gets that right. I can bind a million odatapoints and get smooth peformance. Here's the Infragistics sample.

However, Infragistics installs a lot of junk (a local IIS web app with the samples you can also see online) and besides the (excellent) samples and the code-level documentation, I do miss some high-level introduction to each component and it's individual modules.

Since a lot of people on SO recommend Telerik controls for their clean APIs, Documentation and Developer Support, I did also take a look at their chart control. However, I must admit I find it rather slow (Zooming takes roughly 500-1000ms, which is too long to feel smooth). Here's the Telerik sample.

like image 27
Johannes Rudolph Avatar answered Oct 18 '22 13:10

Johannes Rudolph


Visifire is the fastest chart now. Check out the blog link below. http://www.visifire.com/blog/2011/12/02/fast-silverlight-charts/

The Chart image says Visifire is 3 to 4x faster than Visiblox..!

enter image description here

like image 27
Somnath Avatar answered Oct 18 '22 14:10

Somnath


Before you start playing around with WritableBitmap on your own take a look at WriteableBitmapEx from René Schulte, he blogs about it here. Awesome stuff.

like image 1
AnthonyWJones Avatar answered Oct 18 '22 15:10

AnthonyWJones