Author Topic: Graphing software  (Read 4358 times)

0 Members and 1 Guest are viewing this topic.

Offline HarvsTopic starter

  • Super Contributor
  • ***
  • Posts: 1202
  • Country: au
Graphing software
« on: September 30, 2016, 10:51:30 pm »
I'm currently doing a lot of experimentation with a product that involves logging bunches of data from test events, then trawling through it to find interesting bits.

Up until now I've been using gnuplot, octave and occasionally excel as the old favourites, but I find they're just too cumbersome for what I'm doing.  What I need are things we'd typically expect on oscilloscopes and the like:
- Good zooming and panning that zooms the x & y scales properly in a readable fashion.
- Dropping markers with automatic calculation of difference in time or height between them,
- Getting point values by clicking on them,
- Fast working with large data sets (up to maybe a dozen million points.)
- Looks decent enough to show details to a customer without having to go re-render the portion of the graph in gnuplot.

Everything I've found so far is very concentrated on the scientific market that wants to produce publication quality plots. I've done that with gnuplot/octave and it works as that sort of tool. But what I want is a tool to quickly work through lots of data to make decisions on, like whether I need to re-do a test. Happy to spend a reasonable amount of money.

Thanks

 

Offline qwaarjet

  • Regular Contributor
  • *
  • Posts: 173
  • Country: us
  • Use your imagination and pretend its linear.
Re: Graphing software
« Reply #1 on: October 01, 2016, 10:07:17 pm »
I've used DIAdem from National Instruments for similar tasks. It  churns through several GB of data pretty easy.
 

Online G0HZU

  • Super Contributor
  • ***
  • Posts: 3023
  • Country: gb
Re: Graphing software
« Reply #2 on: October 01, 2016, 11:59:28 pm »
I'd be interested to see what gets suggested here. For many years I've been using MSChart within VB for stuff like this but it is far from ideal.

For example, see the video below for a quick and dirty IQ file reader and converter/cropper program that I created last year that reads in and displays IQ data from Agilent's 89600 waveform capture SW and the idea is to display and convert the IQ data for upload to an Agilent E4433B vector sig gen for playback. MSChart does allow a few tricks using the mouse so you can get data from the mouse on the trace and set the zoom etc. It also allows the file start and stop locations to be cropped to prevent spectral spreading effects from phase discontinuities when the sig gen wraps/repeats the IQ data. It can also set the timing of trigger events at a chosen location using the mouse to click on the trace. This will generate a trigger pulse at that moment in the dataset from the sig gen to act as a trigger marker in the real hardware.

It can hand a lot of data this way. I've written VB/MSChart programs that handle many megabytes of data in a file.

However, MSChart is very clunky and restrictive (and old) and it would be nice to see something more modern and more powerful than this.

https://youtu.be/ul2A8KeOQWs
« Last Edit: October 02, 2016, 12:18:10 am by G0HZU »
 

Offline ian.rees

  • Contributor
  • Posts: 48
  • Country: nz
Re: Graphing software
« Reply #3 on: October 02, 2016, 05:48:32 am »
I'd highly recommend learning just a little Python (go with version 3 if starting fresh) and using Jupyter.  Attached image came from the code below, which took about 1 second to run on my laptop.  Have heard good things about "Anaconda" which includes a bunch of handy tools in one package.  Instead of generating your data like in the example, you'd read it in from a file, but that generally just takes a couple lines - for CSV: https://docs.python.org/3/library/csv.html .

There are also some libraries for talking directly to test equipment from Python, for example pyvisa and python-ivi.  -Ian-

Code: [Select]
%matplotlib inline

import numpy as np
import matplotlib.pyplot as plt
from scipy import signal

# Make 1 million evenly spaced points in [0, 2*pi]
numPoints = 1000000
times = np.linspace(0, 2 * np.pi, numPoints)

# compute sin(x) of each of those points, save result to sinewave
sinewave = np.sin(times)
# generate some gaussian noise to add (stdev=1)
noise = np.random.standard_normal(numPoints)
fuzzy = sinewave + noise / 20

# Make a 10th order butterworth filter, cutoff 0.05 times Nyquist rate
b, a = signal.butter(10, 0.05)
# Apply that filter foward/backward to fuzzy data
filtered = signal.filtfilt(b, a, fuzzy)

# Plot times on X, versus fuzzy and filtered data
plt.plot(times, fuzzy, label = "Measured Data")
plt.plot(times, filtered, label = "Smoothed")

plt.xlabel("Times")
plt.ylabel("Values")
plt.title("Example plot")
plt.legend()

plt.grid()
« Last Edit: October 02, 2016, 05:50:11 am by ian.rees »
 

Offline ian.rees

  • Contributor
  • Posts: 48
  • Country: nz
Re: Graphing software
« Reply #4 on: October 02, 2016, 06:00:42 am »
Sorry, I forgot to mention that the interactive aspect of the OP's question can be handled through ipywidgets - http://ipywidgets.readthedocs.io/en/latest/index.html  There's been a lot of development going on in Jupyter lately, so it's easy to find outdated examples online.  -Ian-
 

Offline HarvsTopic starter

  • Super Contributor
  • ***
  • Posts: 1202
  • Country: au
Re: Graphing software
« Reply #5 on: October 02, 2016, 06:38:42 am »
I've used DIAdem from National Instruments for similar tasks. It  churns through several GB of data pretty easy.

Thanks, looks like a nice piece of software, but too many $$$ for this task.  I was hoping in the low hundreds as apposed to thousands.
 

Offline HarvsTopic starter

  • Super Contributor
  • ***
  • Posts: 1202
  • Country: au
Re: Graphing software
« Reply #6 on: October 02, 2016, 06:55:14 am »
I'd highly recommend learning just a little Python (go with version 3 if starting fresh).

I've used python a lot in the past for graphing, and it's good where you're repeatedly doing the same things.  But it's a similar solution using gnuplot/octave, with the possibility for some dynamic updating (which is I guess what you're talking about with ipwidgets.

But this is all rather clunky.

Surely there's some sort of shrink wrapped solution that doesn't cost as much as full blown CAD suite?
 

Offline Karel

  • Super Contributor
  • ***
  • Posts: 2227
  • Country: 00
Re: Graphing software
« Reply #7 on: October 02, 2016, 07:15:16 am »
- Good zooming and panning that zooms the x & y scales properly in a readable fashion.
- Dropping markers with automatic calculation of difference in time or height between them,
- Getting point values by clicking on them,
- Fast working with large data sets (up to maybe a dozen million points.)
- Looks decent enough to show details to a customer without having to go re-render the portion of the graph in gnuplot.

Sounds like you haven't yet discovered EDFbrowser: http://www.teuniz.net/edfbrowser/

EDFbrowser expects time series data in the European Data Format (16 or 24-bit samples).
It has also a built-in ASCII (csv) to EDF converter.


 

Offline Someone

  • Super Contributor
  • ***
  • Posts: 4542
  • Country: au
    • send complaints here
Re: Graphing software
« Reply #8 on: October 02, 2016, 07:59:22 am »
Octave should be able to do all this if you add some callbacks to the plot, its certainly possible in scilab:
https://help.scilab.org/doc/5.5.2/en_US/datatipSetDisplay.html
The panning/zooming is already clean and tidy so you could wrap in some cursor detailing like horizontal+vertical markers and deltas. Exports to CSV or EPS will provide the crisp and professional look to the end product.
 


Share me

Digg  Facebook  SlashDot  Delicious  Technorati  Twitter  Google  Yahoo
Smf