通过c而不是文件中的管道将数据数组传递给gnuplot

mih*_*jlv 6 c file gnuplot pipe stream

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

 fprintf(gnuplotPipe, "plot \"data-file.dat\" using 1:2\n"); 
Run Code Online (Sandbox Code Playgroud)

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

Azr*_*000 4

当然你可以做到。绘制由一条线连接的两个点的终端命令示例是:

echo "plot \"< echo -e '4 5\n 3 2'\" w lp pt 2" | gnuplot
Run Code Online (Sandbox Code Playgroud)

如果你想有 postscript 输出,你可以添加以下内容:

echo "set terminal postscript; plot \"< echo -e '4 5\n 3 2'\" w lp pt 2" | gnuplot &> out.ps
Run Code Online (Sandbox Code Playgroud)

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

编辑:似乎存在一些 C(++) - Gnuplot 接口。查看这个网站,它对 C、C++、Python 和 Fortran 包装器进行了很好的概述。我不确定它们是否是最新的并且可以使用最新的 Gnuplot 版本,但如果不适应应该不会那么困难。