//Translations of this page are also available in the following languages:// [[data_plotting_improvements.ru|Русский]].

====== Simulation Data Plotting ======


===== Rationale =====
This article discusses on how data plotting can be improved.
There are various programs out there, each has it's own pros and cons:

  * [[http://home.nc.rr.com/gtkwave/| gtkwave]]: a great viewer for digital simulation data
  * [[http://www.telltronics.org/software/gwave/| gwave]]: analog waveform viewer
  * [[http://sourceforge.net/projects/kjwaves| KJWaves]]: simulation frontend with plotting window
  * buildin plotting functions in ngspice
  * gnuplot / octave / scipy / ... or similar programs as postprocessing script languages
  * ...

There have been various suggestions on the mailing lists about the feature a plotting program could have:

  * postprocessing: integrate, add, diff, fft, ...
  * view, examine: cursors, multiple windows, ...
  * data import, file format: circuit simulation data (gnucap, spice, ...) [[http://www.hdfgroup.org/HDF5/| hdf5 ]], measured data from oscilloscopes, spectrum analysers, ...
  * data export, file format: hdf5, pictures (png, ps, ...), ascii
  * communication backends: dbus, ...
  * extension/scripting language


===== Draft1: Extend gtkwaves =====

  * write some import functions for analog data

===== Draft2: improve gwave =====

gwave requires an old [[http://www.gnu.org/software/guile-gtk/ | guile-gtk]] for GTK1.2.

  * port gwave to guile-gtk2.0 for GTK2.x
  * remove the guile-gtk requirement. Maybe create a native gtk2 application with libglade?

A rewrite of gwave:
  * gaw: [[http://www.rvq.fr/linux/gaw.php]]
===== Draft3: Search for existing data exploring programs =====

Are there any programs out there that can show and postprocess simulation data?
If yes, how can they be extended to work as a waveform viewer for the simulators (gnucap, ngspice)?


===== Draft4: A new plotting application =====

Some vague notes on how a new plotting application could be written.
This notes currently relate on python as programming language.

  * the GUI could be created with [[http://www.jamesh.id.au/software/libglade/ |libglade]]
  * the data storage format could be [[http://www.hdfgroup.org/HDF5/| hdf5 ]], maybe together with [[http://www.pytables.org/moin |pytables]]
  * the plotting engine could be [[http://matplotlib.sourceforge.net/ | matplotlib]] (png, ps export included)
  * postprocessing could be done with [[http://www.scipy.org | scipy]]
  * the scripting language is python. Thus import filter to hdf5 can easily be written. Even an integrated python shell would be possible. Seen on [[http://code.enthought.com/mayavi2-screenshot.shtml | MayaVi 2]]

Disadvantage: This configuration has a huge rucksack of additional required packages.

**Update**

There are now some programs out there, that use the python, numpy, matplotlib tool chain:
  * oscopy: [[http://repo.or.cz/w/oscopy.git]]
  * dataplot: [[http://www.h-renrew.de/h/dataplot/dataplot.html]], [[http://repo.or.cz/w/dataplot.git]]
  * gsim: [[http://kiwiki.fmtnuni.sk/mediawiki/index.php/Description_of_gsim]]
