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
更新