E..3.3 C プログラムから gnuplot を呼び出してプロットする

C のプログラムで popen() という関数を使うと、 gnuplot を呼び出して、データのやり取りが出来る。 E.3.2 の応用編と考えると良い。


\begin{breakitembox}[l]{C言語によるプログラム例 \texttt{euler1-gnuplot.c}}
{\footnotesize\verbatimfile{ode_for_ms/euler1-gnuplot.c}}
\end{breakitembox}

プログラムを書くのは若干面倒だが、後々の手間が省略できて便利かもしれない。

コンパイル&実行 (これでグラフ表示まで出来る)
% cc euler1-gnuplot.c
% ./a.out

要点の抜き出し
  FILE *gp;

  gp = popen("gnuplot --persist", "w");

  fprintf(gp, "plot '-' with linespoints title \"dx/dt=x, x(0)=1\"\n");

  fprintf(gp, "%f %f\n", t, x);
  for (...) {
    ...
    fprintf(gp, "%f %f\n", t, x);
  }
  fprintf(gp, "e\n");
  fflush(gp);
  fprintf(gp, "quit\n");
  fflush(gp);
  fclose(gp);

なお、 「例: 複数のグラフを plot する」 も参考にせよ。



桂田 祐史