C言語からgnuplotを起動して動かすことができる。以下は、Windows用のコマンドであることに注意。
これが出来るようになると、C言語で取得したシミュレーション結果をグラフにして、名前をつけて自動でepsとemfに保存、とかも可能である。
下のプログラムは、gnuplotを起動して、sin(x)を表示するためのものである。
#include <stdio.h>
#include <stdlib.h>
#define GNUPLOT_PATH "C:/gnuplot/bin/gnuplot.exe" // gnuplot.exeのある場所
// \ではなく、/を使いましょう。
// Program FilesはPROGRA~1、Program Files(x86)はPROGRA~2に置き換えましょう
int main()
{
FILE *gp; // For gnuplot
// gnuplotの起動コマンド
if ((gp = _popen(GNUPLOT_PATH, "w")) == NULL) { // gnuplotをパイプで起動
fprintf(stderr, "ファイルが見つかりません %s.", GNUPLOT_PATH);
exit(EXIT_FAILURE);
}
// --- gnuplotにコマンドを送る --- //
fprintf(gp, "set xrange [-10:10]\n"); // 範囲の指定(省略可)
fprintf(gp, "set yrange [-1:1]\n");
fprintf(gp, "plot sin(x)\n"); //sin(x)を描く
fflush(gp); // バッファに格納されているデータを吐き出す(必須)
system("pause");
fprintf(gp, "exit\n"); // gnuplotの終了
_pclose(gp);
}
つまり、gnuplotを起動は
FILE *gp;
gp = _popen("gnuplot.exeのある場所", "w");
動かしたい内容のコマンドは、
fprintf(gp, "コマンド\n");
でOK。コマンド入力後にエンターする場合は\nを忘れないように。fprintfで\を出す場合は\\でOK.
もちろん、普通のfprintfと同様に、
fprintf(gp, "print %d+%d = %d\n",1,2,3);
とかもできる。
終了は、
fflush(gp); // バッファに格納されているデータを吐き出す(必須) fprintf(gp, "exit\n"); // gnuplotの終了 _pclose(gp);
という流れ。好みにもよるが、exitの前に、 system("pause"); を入れたほうが良い。
これを応用して、gnuplotでアニメーションとかもできる。