Короткая версия:
Команда gnuplot "replot", похоже, ничего не печатает.Только исходный график («plot ...») отображается в выходных данных.
Длинная версия:
У меня есть сценарий оболочки, циклически повторяющий базу данных файлов, некоторые из которых нуждаются вчтобы быть нанесенным на том же выходном изображении, некоторые не делают.В настоящее время мой подход заключается в том, чтобы сценарий оболочки написал сценарий gnuplot ... что-то вроде этого: каталог
входных файлов, "data"
1_1.csv
1_2.csv
1_3.csv
1_4.csv
2_1.csv
...
x_y.csv
shell.sh
for f in data/*.csv
do
gpFile=scripts/gp_x.gp # x from input filename
out=out_x.png # x from input filename
if [ ! -e "$gpFile" ]; then # if gnuplot script does not exist
cat <<-EOF >$gpFile # create new file called gp_x.gp
set datafile separator ","
set term png size 1024,768
set autoscale fix
set output $out
plot "$f" using 1:2 with lines
EOF
else # file does exist
cat <<-EOF >>$gpFile # append file with more text
replot "$f" using 1:2 with lines
EOF
fi
done
for s in scripts/*.gp # cycle through all scripts just generated
gnuplot $s # run gnuplot scripts
done
Таким образом, этот сценарий оболочки генерирует несколько сценариев gnuplot, один из которых будет выглядеть следующим образом:
gp_x.gp
set datafile separator ","
set term png size 1024,768
set autoscale fix
set output out_x.png
plot "x_1.csv" using 1:2 with lines
replot "x_2.csv" using 1:2 with lines
replot "x_3.csv" using 1:2 with lines
replot "x_4.csv" using 1:2 with lines
Это приводит только к построению первогокоманда plot, и ни одна из команд replot не выполнена (также не выдается никаких ошибок).Если бы я должен был заменить его на что-то вроде ...
plot "x_1.csv" using 1:2 with lines, \
"x_2.csv" using 1:2 with lines, \
"x_3.csv" using 1:2 with lines, \
"x_4.csv" using 1:2 with lines
Это прекрасно работает.Однако из-за некоторых сложностей в моей реальной программе (это чрезвычайно упрощено), на самом деле просто невозможно объединить дополнительную строку, подобную этой, без риска разорвать скрипт (например, иметь аргументы без команды).И в любом случае, я хотел бы знать, почему «реплот», кажется, не работает таким образом (или, более вероятно, что я делаю неправильно).Спасибо!