Я не пытаюсь сделать здесь что-нибудь необычное.Я пытаюсь автоматизировать построение некоторых экспериментальных данных в следующем сценарии:
print "processing: ", filename
gnuplot = Popen(gnuplot_bin,stdin = PIPE).stdin
if state_plot:
gnuplot.write( "set term x11\n".encode())
gnuplot.write( "set term png size 1920,1010 \n".encode() )
gnuplot.write( "set output \"acceleration.png\" \n".encode() )
gnuplot.write( "set xlabel \"timesteps\" \n".encode() )
gnuplot.write( "set ylabel \"acceleration\" \n".encode() )
gnuplot.write( "plot " %filename " using 1 with lines lt -1 lw 0.5 title 'X axis' \n " .encode() )
gnuplot.write( " " %filename " using 2 with lines lt 1 lw 0.5 title 'Y axis' \n " .encode() )
gnuplot.write( " " %filename " using 3 with lines lt 2 lw 0.5 title 'Z axis' \n " .encode() )
Однако имя файла воспринимается буквально.Я получаю следующую ошибку от gnuplot:
строка 0: предупреждение: пропуск нечитаемого файла ""% filename "" строка 0: нет данных на графике
У меня уже естьпроанализировал имя файла из sys.argv и удостоверился, что оно правильное и безопасное, и теперь мне нужно сказать gnuplot для отображения любого имени, для которого установлено имя файла.Я пытался использовать escape-символы, удаляя янтарь и, но я, очевидно, использую неправильный синтаксис.
Может кто-нибудь помочь?
РЕДАКТИРОВАТЬ:
Спасибо agf IЯ решил проблему с форматированием Python:
gnuplot.write( "plot \"%s\" using 1 with lines lt -1 lw 0.5 title 'X axis' ,\ \n " %filename )
gnuplot.write( "\"%s\" using 2 with lines lt 1 lw 0.5 title 'Y axis' ,\ \n " %filename )
gnuplot.write( "\"%s\" using 3 with lines lt 2 lw 0.5 title 'Z axis' \n " %filename )
Однако теперь у меня проблема с gnuplot.Обычно при непосредственном использовании gnuplot я набираю:
gnuplot> plot "state_log_6548032.data" using 4 with lines lt -1 lw 0.5 title "X axis" ,\
>"state_log_6548032.data" using 5 with lines lt 1 lw 0.5 title "Y axis" ,\
>"state_log_6548032.data" using 6 with lines lt 2 lw 0.5 title "Z axis"
Однако отправка этих команд через python в gnuplot, похоже, вызывает ошибки:
gnuplot> plot "state_log_6548032.data" using 1 with lines lt -1 lw 0.5 title 'X axis' ,\
^
line 0: invalid character \
gnuplot> "state_log_6548032.data" using 2 with lines lt 1 lw 0.5 title 'Y axis' ,\
^
line 0: invalid character \
gnuplot> "state_log_6548032.data" using 3 with lines lt 2 lw 0.5 title 'Z axis'
^
line 0: invalid command
Держу пари, что это должно сделатьс символом, \ и символом новой строки?