Cプログラムからパイプ経由でgnuplotを呼び出してグラフを書く

Cプログラムの中で何かグラフを表示したくなったときにはgnuplotを呼び出すのが 簡便である。

GCC (+ linux)の場合

Borland C++ 5.5 (+ windows)

FILE *GP;

GP=_popen("gnuplot.exe","w")
のようにしてgnuplotへのパイプを開き(パスが通っていなければ絶対 パス指定する)、例えば
fprintf(GP,"plot sin(x)\n");
とすればsin関数のグラフが書けるし、(x,y)座標の組のデータを送り込んで グラフを書きたければ
fprintf(GP, "plot '-'\n");
としておいてから
fprintf(GP,"%lf %lf\n",x,y);
...
のように座標値を送り、送り終わったら"e"を送ればよい:
fprintf(GP,"e\n");
パイプを閉じるのは
_pclose(GP);
とすればよい。
パイプを複数開いておけばグラフを複数表示することもできる。
パイプ経由でgnuplotを呼び出すときは以前はpgnuplot.exeを呼んでいたらしいが、 バージョン4.3以降くらいにgnuplot.exeに統合(?)された。今でもpgnuplot.exe は付いてくるがgnuplot.exeを呼び出したほうが処理がずっと速い。
pentium4(クロック不明)でデータ点250個くらいの簡単なグラフなら20ms程度で 表示される。

(windows2000 SP4 + gnuplot 4.4 patchlevel 0-rc1)
test_popen.c
test_popen.exe

参考にしたURL:
http://ayapin.film.s.dendai.ac.jp/~matuda/Gnuplot/Tips/tips.html
http://www.tatsuromatsuoka.com/gnuplot/Jpn/gnuplot_memo.html

GCC (+ linux)

_popen()の替わりにpopen()、_pclose()の替わりにpclose()等とすればよい。
test_popen_.c


2009.12
2015/08/25 18:50:11 更新