2010-11-26 76 views
0

我正在使用C++繪圖使用Gnuplot。在C++程序中,我popen()一個Gnuplot進程文件,並不斷寫入它來繪製我的圖。具體來說,我寫了「plot」 - '使用點1:2與點「,然後繼續寫入X-Y座標。只有兩列,它工作正常。如何在單個Gnuplot窗口中繪製單個X值的多個Y值?

現在我修改了我的程序以生成2列以上。我現在有以下列格式

X,Y1,Y2,Y3,Y4數據,Y5

所以每第二,它輸出(例如, 「1 2 3 4 5 6」 一條線,其中1是X座標,其餘值是不同曲線的Y座標)。我無法弄清楚如何將所有的曲線放在一個窗口中。

如果我像做以下,

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

我可以想到兩種方式,但它們都涉及遍歷數據多次(5)次。首先,多條曲線可以用逗號像這樣分離:

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

你會那麼fprintf中(...),每一組數據後加「e」。

此外,由於你剛繪製點(未行),你可以只保留髮送更多數據:

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); 
+0

我實際上繪製線條,使第一種方法似乎工作。現在我明白爲什麼它促使我按兩次「e」。謝謝! :) – Siddhant 2010-11-27 12:50:57

相關問題