Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Reading gnuplot legend from csv

Tags:

gnuplot

I've got a data.csv file which is structured like this:

n    John Smith stats     Sam Williams stats
1                23.4                   44.1
2                32.1                   33.5
3                42.0                   42.1

Currently I'm plotting with the following command in gnuplot:

plot 'data.csv' using 1:2 title 'John' with lines, '' using 1:3 title 'Sam' with lines

The question is how to retrieve first names from the first line of .csv rather than entering them manually?

In addition, is it possible to make it adjustable in case I add a column to the table, so it automatically adds another line with the appropriate title?

like image 377
sashkello Avatar asked Nov 14 '12 00:11

sashkello


1 Answers

You say you have a csv file, so I assume your data file looks like this (and is saved in infile.csv):

n,John Smith stats,Sam Williams stats
1,23.4,44.1
2,32.1,33.5
3,42.0,42.1

If your version of Gnuplot is recent enough, you can use columnhead as the title argument:

echo "
  set datafile separator ','
  plot 'infile.csv' using 1:2 with lines title columnhead
" | gnuplot --persist

Or use the key option:

echo "
  set datafile separator ','
  set key autotitle columnhead
  plot 'infile.csv' using 1:2 with lines, '' using 1:3 with lines
" | gnuplot --persist

Edit - shorten headings

echo "
  set datafile separator ','
  set key autotitle columnhead
  plot '< sed -r \"1 s/,([^ ]+)[^,]+/,\1/g\" infile.csv' using 1:2 with lines, '' using 1:3 with lines
" | gnuplot --persist

Output:

Plot of column 1:2 and 1:3 of infile.csv

Note this answer to a follow-up question may also be relevant.

like image 151
Thor Avatar answered Sep 23 '22 02:09

Thor