现在,我正在通过c中的管道将文件传递给gnuplot,如下所示:

 fprintf(gnuplotPipe, "plot \"data-file.dat\" using 1:2\n");

有什么办法我不必将数据写入文件然后将其传递给gnuplot,例如,以某种方式将数组或流传递给gnuplot,这样我就可以跳过对文件进程的写入,然后删除文件?任何帮助,将不胜感激。

最佳答案

当然可以。绘制一条直线连接的两个点的终端命令示例如下:

echo "plot \"< echo -e '4 5\n 3 2'\" w lp pt 2" | gnuplot

如果要输出脚本,可以添加以下内容:
echo "set terminal postscript; plot \"< echo -e '4 5\n 3 2'\" w lp pt 2" | gnuplot &> out.ps

如果现在使用system()或popen()(以捕获输出流),则其余部分应该很简单。

编辑:似乎存在一些C(++)-Gnuplot接口(interface)。请查看this website,它提供了有关C,C++,Python和Fortran包装器的出色概述。我不确定它们是否是最新的并且可以与最新的Gnuplot版本一起使用,但是如果不适应的话应该不会那么困难。

10-02 01:19
查看更多