Четене на легенда на gnuplot от csv

Имам файл data.csv, който е структуриран така:

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

В момента чертая със следната команда в gnuplot:

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

Въпросът е как да извлечете собствените имена от първия ред на .csv, вместо да ги въвеждате ръчно?

Освен това, възможно ли е да го направя регулируем в случай, че добавя колона към таблицата, така че автоматично да добави друг ред със съответното заглавие?


person sashkello    schedule 14.11.2012    source източник


Отговори (1)


Казвате, че имате csv файл, така че предполагам, че вашият файл с данни изглежда така (и е записан в infile.csv):

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

Ако вашата версия на Gnuplot е достатъчно нова, можете да използвате columnhead като аргумент title:

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

Или използвайте опцията key:

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

Редактиране - съкращаване на заглавия

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

Изход:

График на колона 1:2 и 1:3 на infile.csv

Забележете, че този отговор на допълнителен въпрос също може да е подходящ.

person Thor    schedule 14.11.2012
comment
columnhead ще отпечата заглавието на цялата колона. Твърде дълго е и пречи на сюжета (там има повече и по-дълги колони), трябва да се показват само първи имена - това е проблемът. - person sashkello; 14.11.2012
comment
@sashkello: не съм сигурен дали можете да направите това с командите на Gnuplot, добавих един начин, по който можете да го направите с GNU sed. - person Thor; 14.11.2012