Пропуск пустых файлов в Gnuplot

Я использую gnuplot 4.6. Кроме того, я знаю, что аналогичный вопрос был задан более года назад здесь. Ответ на этот вопрос требует написания небольшого bash скрипта. Я хочу знать, возможно ли добиться этого из скрипта gnuplot, особенно когда в gnuplot-4.6 добавлено так много интересных функций. Я пытаюсь добиться чего-то вроде этого:

set xrange[xL:xU]
set yrange[yL:yU]
plot "file1.dat" using 1:2 w l lt 1 lw 1 lc 3,\
"file2.dat" using 1:2 w l lt 1 lw 1 lc 3

Я повторяю описанный выше процесс в цикле, и параметры xrange и yrange обновляются на каждой итерации. Кроме того, я сохраняю результат каждой итерации в виде файла изображения. Теперь file2.dat гарантированно будет иметь несколько точек во всех итерациях. НО это НЕ верно для file1.dat. Следовательно, я хочу, чтобы gnuplot пропускал построение графика file1.dat, если он пуст. Обратите внимание, что в моем случае это СОВЕРШЕННО нормально, если точки не строятся от file1.dat.

Этого можно легко добиться с помощью оператора if, при условии, что в gnuplot есть какая-то команда, чтобы определить, нет ли в файле точек, не пытаясь построить их. В этом случае приведенный выше код будет выглядеть примерно так:

set xrange[xL:xU]
set yrange[yL:yU]
if ("file.dat" not empty){
plot "file1.dat" using 1:2 w l lt 1 lw 1 lc 3,\
    "file2.dat" using 1:2 w l lt 1 lw 1 lc 3
}else {
plot "file2.dat" using 1:2 w l lt 1 lw 1 lc 3
}

Пожалуйста, помогите мне сформулировать 'condition' вышеупомянутого if заявления.

Спасибо и ура

Абхинав


person Abhinav    schedule 19.10.2013    source источник
comment
По-прежнему невозможно проверить с помощью только методов gnuplot, существует ли файл. Для этого вам понадобится какой-нибудь вспомогательный скрипт. Но почему это проблема? Команда plot выдаст предупреждение и все.   -  person Christoph    schedule 19.10.2013
comment
это проблема, поскольку даже если в одном файле нет точек в диапазоне, я все равно хочу построить другой файл, в котором есть точки в диапазоне.   -  person Abhinav    schedule 19.10.2013
comment
Ты прав! Я думал, что команда plot пропускает только отсутствующий файл, но это не так.   -  person Christoph    schedule 19.10.2013


Ответы (1)


Я не смог найти ни одного хака, который бы использовал только gnuplot команды. В результате я публикую обходной путь, который использует помощь shell, чтобы определить, есть ли у file1.dat какие-либо строки данных или нет.

Условие в файле сценария gnuplot будет выглядеть так:

if(system("awk '{x++}END{ print x}' file1.dat")>0){
    plot "file1.dat" using 1:2 w l lt 1 lw 1 lc 3,\
    "file2.dat" using 1:2 w l lt 1 lw 1 lc 3
}else{
    plot "file2.dat" using 1:2 w l lt 1 lw 1 lc 3
}

Я все еще был бы признателен, если бы кто-нибудь мог дать мне метод только команды gnuplot.

person Abhinav    schedule 19.10.2013