来自C程序的Gnuplot-仅允许绘制某些长度的文件

时间:2018-08-18 20:30:48

标签: c pipe gnuplot

我认为我遇到了我遇到过的最奇怪的错误。我在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])
}

其中rvfv是双精度数组。我可以通过

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以上的图形,它们很高兴,但在下面时,将所有内容都称为无效。到底发生了什么事?

1 个答案:

答案 0 :(得分:4)

在调用gnuplot之前,很可能您没有关闭data_file,因此,如果仅打印少量数据,实际上并不会刷新到磁盘上。

请确保在您的fclose(data_file)之前先致电popen