SciChart® the market leader in Fast WPF Charts, WPF 3D Charts, and now iOS Charting & Android Chart Components
We also have a tag=SciChart on Stackoverflow.com where you can earn rep for your questions!
I’ve been asked to design a UI that will act rather like some image viewers that you see on the web these days – we want to display a list of small chart “thumbnails” (with horizontal scrolling), and when one is clicked have it display at a larger size. Worst case scenario I see there being a dozen charts, each with varying complexity (a single series with a few points, up to several series/hundreds of points and maybe a couple of custom modifiers too).
These charts will be generated each time the user clicks on a cell in a datagrid (elsewhere in the window), so performance may or may not be an issue (although it could of course be done on a background thread).
Should I just be able to render and add all these charts to the ItemsControl (or whatever I use for the scrolling) or will performance suffer having many charts on screen at once? Would there be any benefit to rendering the charts to bitmaps, and using these as the thumbnails (I guess there would be more overhead in doing this)? I suspect the answer may be “try it and see”, but wanted to run it by you first.
Thanks in advance
The concept you’re talking about is called a “Sparkline”. Multiple tiny charts without axes shown in a data-grid. Its a very useful visualization concept.
I assume you’ve seen this demo? This shows 16x charts inside an ItemsControl updating in real-time:
Yes, there is a performance overhead with showing more charts, but SciChart is pretty well equipped to deal with it. How many charts are you going to show? I’d recommend using something like the above (the ItemsControl demo) and hiding YAxis, XAxis. Also use FastLineRenderableSeries.ResamplingMode = ResamplingMode.Mid, as this will aggressively strip points (at expense of lower resolution).
I would recommend throttling the data you push to N charts though as this will be a bottleneck (e.g. dont dump a million points in each all in real-time if the chart is scrolled out of view!).
Render to bitmap is another technique you can try. There are a few threads on this forum showing different techniques. However, in a real-time context that won’t be any faster than just having the actual chart.
Let me know how you progress
Please login first to submit.