Pre loader

Signal and event series in realtime plot

Welcome to the SciChart Forums!

  • Please read our Question Asking Guidelines for how to format a good question
  • Some reputation is required to post answers. Get up-voted to avoid the spam filter!
  • We welcome community answers and upvotes. Every Q&A improves SciChart for everyone

WPF Forums | JavaScript Forums | Android Forums | iOS Forums


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?

  • You must to post comments

I am considering applying server-side licensing for my javerScript application.

In the document below, there is a phrase “Our server-side licensing component is written in C++.”

However, there is only sample code on the provided github.

I wonder if there is a sample code implemented in C++ for server-side licensing.

Can you provide c++ sample code?
Also, are there any examples to run on Ubuntu?

  • janko
    Hi Andrew, This plot is the focused part (one channel) of a data plot. Inside this plot I will have up to 3 million points for the signal and a lesser number of points for the event trace. But the overview part of it - visualized with a self made summarizing view - has to handle up to 256 channels (768 million points) ... and all that is realtime - every second 50000 new signal points come in per channel (12.8 million points) and have to be added, analyzed and the complete set redrawn. Therefore the memory and computing footprint matters - unfortunately :( The idea not to use the FIFO and remove it manually seems to me as the most promising one. I will try that first and then the annotation API. I already looked at annotations but I was a little skeptical about the performance. Thank you for your quick answer! Best regards, Janko
  • Andrew Burnett-Thompson
    Hi Janko, Whichever way you cut it, 768,000,000 points is a lot of data. We've tested SciChart up to 50,000,000. If its a line series, and with resampling, it can give a reasonable update rate at this point-count. Of course, its hardware dependent. Now doing the maths, 768,000,000 points at double-double is about 12GBytes of data. Bear in mind .NET4.0 has a limit of 2GBytes for a single array, no matter how much physical memory you have, and the bandwidth of typical memory buses is no more than 12GBytes/second (for sequential access) you can understand that with nearly a billion points, you're not gonna see amazing performance ;-) So ... that means we have to use smart techniques. If the 768M dataset is your entire data and you want to show an overview of it, can it be resampled at source and a low level of detail shown in a chart, then on zoom, you show a high detail version of the same data? Apologies if I've analyzed the problem wrong, just throwing my experience with performance in .NET into the mix. If you do need to display such a dataset it is going to be necessary to do some smart pre-processing of the data to show it all. Best regards, Andrew
  • janko
    Hi Andrew, Yes, your are absolutely right. That is the reason for using our own specialized and optimized component to visualize the overview part and pick only one channel of it to show it in a more detailed and more comfortable way. :wink: So we exploit for our component that we know which kind of data we have. For sampled data you don't necessarily has to save the x (time) value. It is given by the sequence of the data (if you know the sampling rate) ... , we process reasonable chunks of data, we process and analyze the sampled signal values as long as we can as integer values (they are delivered as int's by the analog-digital converter) ... etc. I tried the manual approach and it seem to work acceptable. :) Thank you for your effort. Best regards, Janko
  • Andrew Burnett-Thompson
    Ok cool, sounds like you're getting along well. If you have a screenshot to share of what you're doing sometime I'd be interested to see it! Best regards, Andrew
  • You must to post comments
Showing 1 result
Your Answer

Please first to submit.