計算データを元にある程度複雑なグラフを描くには、 データファイルを作成して、それを plot するのが良いでしょうが (後述)、 plot '-' オプション として、 データを標準入力から読むように指定することも出来ます。
testcallgnuplot.c |
/* * testcallgnuplot.c */ #include <stdio.h> #include <math.h> int main(void) { int i, n; double pi, x, dx; FILE *gp; char buf[BUFSIZ]; pi = 4.0 * atan(1.0); gp = popen("gnuplot", "w"); fprintf(gp, "plot '-' with linespoints\n"); n = 100; dx = 2 * pi / n; for (i = 0; i <= n; i++) { x = i * dx; fprintf(gp, "%f %f\n", x, sin(x)); } /* 行頭が 'e' だと標準入力からの読み込みを終了 */ fprintf(gp, "e\n"); fflush(gp); /* 行入力を待つ --- Enterを打つまで待つ */ fgets(buf, sizeof(buf), stdin); pclose(gp); return 0; } |
線を途中で切るには改行だけの行(空行)を出力します。 また最後に e だけの行を送ります。 この場合、線の色は変わらない。
対話的に確認 |
gnuplot> plot '-' with lp input data ('e' ends) > 1 1 input data ('e' ends) > 2 2 input data ('e' ends) > 3 3 input data ('e' ends) > input data ('e' ends) > 1 4 input data ('e' ends) > 2 5 input data ('e' ends) > 3 6 input data ('e' ends) > e |
次のように2つのものの plot とすると、線の色が変わります。
対話的に確認 |
gnuplot> plot '-' with lp, '-' with lp input data ('e' ends) > 1 1 input data ('e' ends) > 2 2 input data ('e' ends) > 3 3 input data ('e' ends) > e input data ('e' ends) > 1 4 input data ('e' ends) > 2 5 input data ('e' ends) > 3 6 input data ('e' ends) > e |