This thread looks to be a little on the old side and therefore may no longer be relevant. Please see if there is a newer thread on the subject and ensure you're using the most recent build of any software if your question regards a particular product.
This thread has been locked and is no longer accepting new posts, if you have a question regarding this topic please email us at support@mindscape.co.nz
|
I'm currently evaluating your chart control for a high performance silverlight data analysis software. I need to display millions of data points on screen at various detail levels. Looking for a chart control that does dynamically resample it's data source to achieve smooth zoom and panning, I am quite impressed with the performance of your control. The main scenario is that I need to generate an overview plot of some million data points that will then be narrowed down using zooming, slicing and cutting to a few thousands. A dynamic adaption of the level of detail is Ok for me, however I found that your sampling algorithms didn't play well with the regular nature of my data (there are patterns in it, much similar to a distorted sine wave) and creates artifacts. I think I could increase the sampling quality with making minimal compromises on performance. Is there an option that lets me do that? |
|
|
I saw that basically Really like the Stackoverflow like markdown editor for the forums (including Hot-Key support!). |
|
|
Hello I have added API hooks for customizing the IndexStep property. This can be downloaded in the next nightly build (available at around 1200GMT - about 13 hours from now). Nightly builds can be downloaded from the downloads page: http://www.mindscapehq.com/products/silverlightelements/nightly-builds Here is how to use the new API. There are a couple of new classes that allow you to customize the behaviour of the IndexStep property: The FixedSampleCountSampler will set the IndexStep property based on a desired maximum number of data points you want to be rendered. You can set this desired count using the MaxDataPointCount property on an instance of this sampler. The default sample count is 400 - this is causeing the sampling that you have already observed. So if you use a larger value, the chart will render more data points. I tried a max count of 2000 which created a pretty dense chart in full screen. This only caused a very small performance lag on my machiene. The PixelDensitySampler allows you to specify the number of pixels you want between each data point. So if you want a data point to be rendered roughly every 5 pixels, you can set the PixelSpacing property of this sampler to 5. If you want to render a data point for every pixel along the horizontal span of the chart, you can set the PixelSpacing to 1. You could even render 2 data points per pixel if you so desired by using a PixelSpacing of 0.5. This data sampler is affected by the size of the chart, so it can produce the same density of data points for different sized charts. (where as the other data sampler just renders roughly the same number of data points no matter the size of the chart). A useful property on the PixelDensitySampler is the IsZoomAdjustmentEnabled property. By default this is false. If you set this to true, the resulting IndexStep value will be the nearest base-2 exponential value meaning that the data points that get rendered are more consistent during the zooming and panning operations which creates a smoother visual experience. (try for yourself so you can see the difference between setting this property to true or false). The downside of setting this property to true is that if you set the PixelSpacing to 5 (as an example), it will not be guaranteed that data points will always be seperated by 5 pixels. Once you've created an instance of one of these data samplers (which you can do in xaml), you then simply need to set the DataSampler property on the data series in the chart you want to apply it to. Try out both of these samplers with different values to become familiar with their behaviour so you can pick the right data sampler for your chart. Don't forget to download the nightly build before trying this, and let us know if you have more questions. -Jason |
|