Gnuplot:跳过数据文件中的最后/不完整行

我有一个使用嵌入式lua脚本的C++程序,用于将程序中的数据点写入文件,我希望同时能够运行一个gnuplot实例来绘制数据点。

io.output(pfile);
io.write(t, "\t", p_x, "\t", p_y, "\t", p_z, "\n");

gnuplot文件如下:

set termopt enhanced

set title "Linear Momentum Vector"
set xlabel "t (s)"
set ylabel "p (N-s)"

plot "data/plot_p.dat" using 1:2 title "p_x(t)" with lines, \
     "data/plot_p.dat" using 1:3 title "p_y(t)" with lines, \
     "data/plot_p.dat" using 1:4 title "p_z(t)" with lines

set style line 81 lt 0 lc rgb "#808080" lw 0.5

set grid xtics ytics mxtics mytics
set grid back ls 81

pause 0.25
reread

上述gnuplot脚本适用于完整的数据文件,但我希望它在程序运行时实时绘图。当lua脚本写入文件时,有时gnuplot脚本会捕捉到最后一行不完整的文件。这会导致错误:

"liveplot_p.gnu", line 9: x range is invalid

我该如何使gnuplot脚本处理最后一行或无效的数据集?

谢谢!

点赞
用户4092300
用户4092300

使用 Lua 进行一些实验其实解决了我的问题。在 io.write(...) 调用之后调用 io.flush() 函数似乎每次都会将完整的行写入文件。

当然,这并没有告诉 gnuplot 跳过或忽略最后一行,但它确保了最后一行是完整的。

2015-05-29 22:09:52