我认为我遇到了我遇到过的最奇怪的错误。我在C中使用管道来使用gnuplot。我有一个名为corr.dat
的数据文件,如下所示:
0 2.535107 2.535107
1 3.363503 3.363503
...
...
24 1.435642 0.821686
此文件是通过
生成的for (i=0; i<25; i++) {
fprintf(data_file, "%d %lf %lf\n", i, rv[i], fv[i])
}
其中rv
和fv
是双精度数组。我可以通过
FILE * gnuplot_pipe = popen("gnuplot -persistent", "w");
fprintf(gnuplot_pipe, "plot 'corr.dat'\n");
fflush(gnuplot_pipe);
效果很好。但是当我将循环更改为
时for (i=0; i<24; i++) {
我从gnuplot说错了
line 0: warning: Skipping data file with no valid points
gnuplot> plot 'corr.dat'
^
line 0: x range is invalid
该模式仍然存在-对于数字25和gnuplot以上的图形,它们很高兴,但在下面时,将所有内容都称为无效。到底发生了什么事?
答案 0 :(得分:4)
在调用gnuplot之前,很可能您没有关闭data_file
,因此,如果仅打印少量数据,实际上并不会刷新到磁盘上。
请确保在您的fclose(data_file)
之前先致电popen
。