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

Gnuplot: skip last/incomplete line of data file

本文关键字:文件 数据 一行 最后 Gnuplot      更新时间:2023-10-16

我有一个c++程序,使用嵌入式lua脚本将数据点从程序写入文件,并且我希望能够同时运行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脚本的最后一行或无效的数据集?

谢谢!

我用lua解决了这个问题。在io.write(…)调用之后调用io.flush()函数似乎每次都将整行写入文件。

当然,这并不是告诉gnuplot跳过或忽略最后一行,而是确保最后一行是完整的