Simple Plotting Software? |
October 12th, 2011 |
tech |
# prepare data on the command line into a stream of lines as "xval yval" $ emit_data | head -n 3 4 7 8 9 2 200 # use awk to send the xvals to one file and the yvals to another $ (emit_data | awk '{print $1}' | tr '\n' ' ' ; echo) > xvals.txt $ (emit_data | awk '{print $2}' | tr '\n' ' ' ; echo) > yvals.txt # in octave open the files as two vectors and plot them $ octave > xvals = load("xvals.txt"); > yvals = load("yvals.txt"); > plot(xvals, yvals);
As you can tell, this is annoying. I would prefer to be able to simply write:
$ emit_data | plot
Is there a program that can do this?
Update 2011-10-12: Adam Yie writes that gnuplot can do what I want:emit_data | gnuplot -persist -e "plot '-'"I've now added an alias to my~/.bash_profile
:alias plot='gnuplot -persist -e "plot '\'-\''"'
Some other features that would be nice, and that I would probably include if writing this myself:
- interpret single column data as if it were the output of "
emit_data | cat -n
" - if given filenames instead of standard input, plot them on the same chart (
plot <(emit_data_a) <(emit_data_b)
) - allow non-numeric X vals
- interpret data in the format 'YYYY-MM-DD" as dates
Further, it would be nice to be able to specify some options, though I definitely don't want them required:
- points vs lines
- x and y ranges
- chart width and height
- colors
- output file if not for display
- interpret the xvalues as seconds since 1970-01-01
I would probably write this with gnuplot as a backend, and with aquaterm as the mac display terminal (so I wouldn't need to start X11).
Comment via: google plus, facebook