4

Is it possible to pass to plot data in a string?

I mean do something like this:

plot "09-13-2010,2263.80 09-14-2010,2500" using 1:2 with lines
czerasz
  • 13,682
  • 9
  • 53
  • 63

1 Answers1

4

It is possible to do something like:

set xdata time
set timefmt "%m-%d-%y"     
plot "< echo '09-13-2010,2263.80 09-14-2010,2500' | tr ' ' '\n' | tr ',' ' '" using 1:2 with lines

Where the < character indicates to Gnuplot that we want our input from the output of a command. Gnuplot separates records with a newline. Groups of records are separated by a blank record. Within a record, the default column separator is a space. In the above example tr is used to split your data into lines, and the rewrite the lines into records.

Another way to plot your data from a string is to use the "-" input specifier, and then load the data in from the command line. A program could easily emit the following:

set xdata time
set timefmt "%m-%d-%y"
plot '-' using 1:2 with lines
09-13-2010 2263.80
09-14-2010 2500
e

Your best bet is to use an input file like:

09-13-2010 2263.80
09-14-2010 2500

Assuming the input file is named mydata.txt, you can then plot it with the commands:

set xdata time
set timefmt "%m-%d-%y"
plot 'mydata.txt' using 1:2 with lines

All the examples above give you something like: alt text

If you want to plot two data series using dates and the `-' input you could do the following:

set xdata time
set timefmt "%m-%d-%y"
plot '-' using 1:2  title "Series 1" with lines,'-' using 1:2 title "Series 2" with lines
09-13-2010 2263.80
09-14-2010 2500
e
09-13-2010 2500
09-14-2010 2263.80
e

The previous example gives: alt text

John Percival Hackworth
  • 11,395
  • 2
  • 29
  • 38
  • And is there a way to plot this way: plot '-' using 1:2 with lines... two functions? I trie to separate this with a coma but it didn't work. – czerasz Sep 14 '10 at 19:34
  • You need to set a full using spec for each function. Check out `help datafile' in the Gnuplot help system. I've added an example above. – John Percival Hackworth Sep 14 '10 at 23:50