0

私はC++を使用して、Gnuplotを使用してグラフをプロットしています。C ++プログラムでは、gnuplotプロセスファイルをpopen()し、グラフをプロットするために書き込みを続けます。具体的には、「点を使って1:2を使ってプロット'-'」と書き、それからXY座標を書き続けます。たった2列の場合、正常に機能します。

これで、2つ以上の列を生成するようにプログラムを変更しました。私は今、次の形式のデータを持っています

X、Y1、Y2、Y3、Y4、Y5

したがって、毎秒1行を出力します(たとえば、「1 2 3 4 5 6」、ここで1はX座標、残りの値はさまざまな曲線のY座標です)。すべての曲線を1つのウィンドウに収める方法がわかりません。

次のようなことをすると、

set xrange[0:5]
set yrange[0:10]
plot '-' using 1:2 with lines, '-' using 1:3 with lines
1 2 3
2 3 4
3 4 5
4 5 6
5 6 7

それは私に言うエラーを与えます

"warning: Skipping data file with no valid points"

また、データの終わりを示すために「e」を2回押す必要があります。

たぶん私はここで何か小さなものが欠けています。

ありがとう!

4

1 に答える 1

3

私は2つの方法を考えることができますが、どちらもデータを複数回反復する必要があります。まず、複数のプロットを次のようにコンマで区切ることができます。

plot '-', '-', '-', '-', '-'

次に、データの各セットの後に「e」をfprintf(...)します。

さらに、(線ではなく)点をプロットしているだけなので、さらに多くのデータを送信し続けることができます。

fprintf(gnuplot, "plot '-' with points\n");
for (int yy = 1; yy <= 5; yy++) {
    for (int row = 0; row < len; row++) {
         fprintf(gnuplot, "%lf %lf\n", data[row][0], data[row][yy]);
    }
}
fprintf(gnuplot, "e\n");
fflush(gnuplot);
于 2010-11-26T23:06:54.120 に答える