gnuplotはコンソールでいろいろなコマンドを入力します。
コンソールでgnuplotと打つと、gnuplotのコンソールになります。
gnuplotの終了には"exit"あるは"quit"と入力します。
xxxx.datというファイルに横軸、縦軸のデータが空白区切りで入っていたとする。たとえば、
0.000000 0.127895 0.100000 0.147256 ... 9.990000 0.376639 10.00000 0.374756のように。
このとき、gnuplotでは
gnuplot> plot "xxxx.dat"のように入力するだけである。
もし、カンマ区切りのcsv形式ファイルだとすると、
gnuplot> plot "xxxx.csv" using '%lf,%lf'のように、形式を指定する。
gnuplot -p -e "plot '-'" < xxxx.datや
gnuplot -p -e "plot '-' using '%lf,%lf" < rc_euler.csvのようにもできる。
- コンソールでは入力はキーボードから行うことになっているが、これをファイルからの入力に切り替えることを"redirection"と言います。これは <
で表します。(ちなみに出力を画面ではなく、ファイルに切り替えるとには >
を用います。Cプログラムのprintfによる出力を実行時にファイルに書き出すには、これを用いると便利です。
テキストの付録Aにこの方法が載っています。
それを参考にすれば良いのですが、上記のデータのような場合にはちょっと工夫が必要です。
次の例を参考にしてください。
/* gnuplotにデータを流し込んで(pipeline)、プロットする */ #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]) { FILE *gp; double x,y; gp = popen("gnuplot -p", "w"); // プログラムが終わってもgnuplotを閉じないために"-p"をつける fprintf(gp, "plot '-'\n"); // '-'はデータは後から流し込むことの意味 for (x=0.; x<=10; x+=0.02) { y = sin(2.0*x) + sin(3.0*x); fprintf(gp, "%f %f \n", x, y); // データをgnuplotへ出力 } fprintf(gp, "e"); // データの終わりの印 "e" return 0; }