LabVIEW Idea Exchange

About LabVIEW Idea Exchange

Have a LabVIEW Idea?

  1. Browse by label or search in the LabVIEW Idea Exchange to see if your idea has previously been submitted. If your idea exists be sure to vote for the idea by giving it kudos to indicate your approval!
  2. If your idea has not been submitted click Post New Idea to submit a product idea to the LabVIEW Idea Exchange. Be sure to submit a separate post for each idea.
  3. Watch as the community gives your idea kudos and adds their input.
  4. As NI R&D considers the idea, they will change the idea status.
  5. Give kudos to other ideas that you would like to see in a future version of LabVIEW!
cancel
Showing results for 
Search instead for 
Did you mean: 

Chart X axis time stamps

Always a pain with charts and time stamped x axis.

How about a new chart type (or an a new option in properties) for an automatic x axis time stamp. Either absolute or relative!

11 Comments
Knight of NI

That can currently be done by setting the Display Format of the axis.


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
Member

No. I'm talking about variable dt.

Knight of NI

Can you please clarify?  What you say about variable dt is nowhere hinted at in the original message.

Member

Fair enough.

What I am asking for is a solution for a situation where you essentially want a chart but have inconsistent / not guaranteed acquisition sample rate. Especially sampling over long period of time (several weeks) where small 'glitches' etc accumulate to a large time stamp error on the chart.

At the moment a solution that I know of and use is to replace chart with XY graph, wire time stamps manually in the code, handle circular buffer etc myself. I'm sure if this was done within the chart LabVIEW code, it would be more efficient (and user friendly).

Thoughts?

Knight of NI

You mean like this: Sporatic Waveform Chart


GCentral
There are only two ways to tell somebody thanks: Kudos and Marked Solutions
Unofficial Forum Rules and Guidelines
Knight of NI

Also note that in the Front Panel palettes, there is an Express XY Graph.  When you drop it, it also gives you and Express VI on the block diagram called Build XY Graph which takes X and Y data and does the buffering for you.

Member

Thanks for the suggestions. It is not exactly what I had in mind but the Sporatic Waveform comes close - will check it memory and cpu load with large data/long runs. The express XY graph does not do the buffering I'm after I don't think. It only builds the X, Y arrays. It will not remove old data like chart does.

(BTW I'm not fan of express VIs - they hide what the program is ment to do.)

Ideally - and I have done this few times with coding - the graph/chart would keep certain number of latest data with auto-time stamps and then prune older data - eg decimate. I've done this for few applications where the user collects data for days and weeks. It is useful to see data over that period of time on the graph but only need to see detailed data over lets say 60 hours (to cover the weekend).

This keeps the CPU/memory at bay. All data is still logged into a file of course.

Knight of NI

That is true.  The express graph does not clear out older data like a chart.  I'm not a fan of Express VI's either, but I'll use them occasionally.  Especially if I need to get something going quickly, and later replace them with something else if they aren't quite doing what I want.  I think they are also a nice starting point, and when you right click Open Front Panel, you can see the inner workings of what it is doing once it gets turned into a regular subVI, then I'll modify it from there.

 

One option I have actually just used for the first time is to store the data in a queue, that way I don't have to worry about memory thrashing on large arrays.  A size limited queue can discard the oldest data once it fills up.  When you need the data in the queue, use Preview Queue with the Show Elements boolean input set for True and it will give you an array of all the data in the queue.  You can flush queue to wipe it clean.

 

Doing something like selectively pruning older data is a bit more complicated.  One possibility for that is to maintain two queues, one that stores all the data for the last 60 hours, another where you simultaenously store the data, but lets say only 1 out of every 10 values gets stored tol hold the longer term data.

Member

Definitely good idea!  Kudoos.

But already suggested here and (my own idea Smiley Winkhere.

Proven Zealot