Вы можете использовать awk
, чтобы выбрать только те строки, где первый столбец соответствует вашим строк:
plot "<awk '$1~/string1/' DATAFILE" using 2:3 title column(1),\
"<awk '$1~/string2/' DATAFILE" using 2:3 title column(1)
и так далее. Для встроенного решения GNUPLOT, вы можете сделать:
plot "DATAFILE" u 2:(stringcolumn(1) eq "string1" ? $3:1/0),\
"DATAFILE" u 2:(stringcolumn(1) eq "string2" ? $3:1/0)
, если вы хотите сделать что-то более автоматическое, который будет генерировать графики для каждого уникального входа в колонке 1, это решение работает для меня:
входа файл (test.dat - отделенный, в противном случае необходимо изменить cut
утверждение ниже):
one 1 3
two 2 4
ten 3 5
ten 4 3
two 5 4
one 6 5
one 7 3
ten 8 4
two 9 5
ten 10 3
two 11 4
one 12 5
следующая строка создает для построения графиков о Gnuplot, и сохраняет в файле:
cut -f1 test.dat | sort -u | awk '
BEGIN {print "plot\\"}
{print "\"test.dat\" u 2:(stringcolumn(1) eq \""$1"\" ?\$3:1/0),\\"}' > plot.gp
и содержание:
plot\
"test.dat" u 2:(stringcolumn(1) eq "one" ?$3:1/0),\
"test.dat" u 2:(stringcolumn(1) eq "ten" ?$3:1/0),\
"test.dat" u 2:(stringcolumn(1) eq "two" ?$3:1/0),\
тогда вы могли бы сделать:
gnuplot plot.gp
или добавьте строку load "plot.gp"
в сценарий.
Я уверен, что должно быть решение «только gnuplot», но это выходит за рамки моих знаний. Надеюсь это поможет.
Возможно ли распечатать все строки, даже если я не знаю, что они на самом деле будут? – petersohn
Да, конечно. Я отредактировал свой ответ с возможным решением. –