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でアニメーションとかもできる。