easy, programmable data plotting
Question: I spend most of my time plotting data, but unfortunately I haven't found a
decent solution for my plotting needs. At the moment, the most powerful and
pleasant library I found that performs plotting is matplotlib. The results are
stunning, but I mostly spend my time fighting with the library when trying to
do simple things like having an arrow as I want. SImilar programs like R and
gnuplot produce visually less appealing results, and they are not GUI based.

On the other hand, programs like xmgrace (or better) allow direct manipulation
of the plotted objects and direct feedback, but they fail on two important
points:

  1. if my dataset (normally stored in csv files) changes for some reason, I have to reimport it and perform the manipulations again, by hand
  2. once I obtain a nice plot setup, the only way I have to recreate the plot is to use a graphical, interactive program. I would like to have the possibility to run a command line utility on my csv files and get the .pdf as a result, with no human intervention.

I still have to find something that provides me both worlds, and it has an
affordable price. Ideally, I would need an interactive GUI program (a la
Origin) to generate matplotlib-based python scripts.

Does anyone have any hints on software that could address my needs on OSX
(preferably) or Linux ?


Answer: You may want to check out [Igor Pro](http://www.wavemetrics.com/). It's quite
old, and quirky but it provides the most advanced plotting system I've found
yet on the Mac. You can modify anything graphically, at a command line or in
script files. The most powerful feature (IMO) is the ability to automatically
generate a script to recreate a figure or to use a figure to create a script
that generates figures _like_ (in style etc.) a particular figure. I use Igor
for all publication figures I produce.

Data is stored in "waves" (translation: vectors) which encapsulate data and
information about the delta between data points (e.g. time step). Figures
reference waves as their data source. When you update a wave (e.g. by re-
importing a CSV file and specifying that the data overwrite specific waves),
all figures that reference that wave are automatically updated.

You can create "layouts" which are page-layouts containing multiple graphs.
These layouts are also automatically updated whenever any of the figures in
the layout are updated (see above). You can add drawing/text/annotations to
either graphs or layout.s

Be warned: Igor Pro's scripting language is something like the bastard child
of VB and Matlab. It makes my eyes bleed. It makes me pray to whatever God
that the pain just end. **But** the entire system is so powerful that it's
worth it.

