I have the following realtime scenario: I want to combine a normal signal series with an event series. I tried to use a FastlineRenderableSeries for the signal and a XyScatterRenderableSeries to mark events. I selected a certain FIFO buffer size to show the signal in an adequate time frame. But now the problem is how to select the adequate FIFO size for the events. I can not predict how many events will occur in a certain time and the fixed FIFO of the event series prevents a good visualization of signals and events together.
Desirable would be that the FIFO size selection of the signal series defines the “rolling” value range and the event series
buffer is drawn related to this x axis range (means: the events that have lower x values than the lower bound of the signal range will
be removed from the event series buffer).
I know that I could blow up event series with dummy points (NA-valued) to reach the same point count that the signal has but that would be an enormous waste of memory and computing performance. I have up to 50 kHz sampling rate for the signal and many signal channels.
Do you have any advice that you can give?
How many points are you looking to plot? Using double.NaN’s is not that bad an idea, if the point count is say 10 million at most. Above that yes you will start to use too much RAM and CPU but remember RAM is cheap and developer time is not 🙂
Another idea is – what about not using FIFO at all for the scatter series but manually removing points once they are off screen. Remove in blocks using RemoveRange to get best performance.
Finally, we have an annotation API to display event bullets, which you can see here: http://http://www.scichart.com/Abt.Controls.SciChart.SL.ExampleTestPage.html#/Abt.Controls.SciChart.Example;component/Examples/IWantTo/AnnotateAChart/OverlayTradeMarkers/TradeOverlayExampleView.xaml
This will work well even with a few thousand markers. It will automatically remove when they go off screen. It will not resample and cluster if you zoom out but theoretically, you could achieve this too with some sort of intermediary ChartModifier (e.g. see here for using ChartModifiers to manage annotations). http://http://www.scichart.com/databinding-annotations-with-mvvm/
Please login first to submit.