2017-04-04 123 views
0

我正在嘗試使用gnuplot(以C++編寫)製作3D曲面圖形。這是我目前擁有的代碼。使用gnuplot製作3D曲面圖形

//gp << "set dgrid3d\n"; 
    //gp << "set samples 10,10\n"; 
    //gp << "set isosamples 10,10\n"; 
    //gp << "set contour\n"; 
    //gp << "set hidden3d\n"; 
    //gp << "set surface\n"; 
    //gp << "set pm3d\n"; 

    gp << "splot 't.dat' u 1:4:5 w linespoints pointtype 7 pointsize 1.5, \ 
    't.dat' u 2:4:5 w linespoints pointtype 9 pointsize 1.5, \ 
    't.dat' u 3:4:5 w linespoints pointtype 4 pointsize 1.5\n"; 

正如你所看到的,我已經嘗試了一些命令(當前評論)來實現目標。我似乎無法找到一個合適的命令組合或單個命令,它爲我提供了一個具有我尋求的表面的3D圖形。

這是「t.dat」 - 那我試圖繪製數據:

#timeTaken1 timeTaken2 timeTaken3 D E 
1.2342423 1.33 2.442 1 0 
1.234234 1.55 2.236 1 20 
2.56465 1.56 3.39 1 40 
2.464 1.234 3.224 1 60 
2.2747 1.768 3.552 1 80 
2.34774 1.876 3.574 1 100 

3.34747 2.94 4.795 2 0 
3.34747 2.66 5.776 2 20 
3.3747 3.234 5.666 2 40 
3.787 3.66 6.503 2 60 
3.456 3.88 6.37 2 80 
4.345 3.345 5.853 2 100 

是否有人知道需要做的,使這項工作是什麼?數據結構有問題嗎?有沒有我沒有看到的一些命令?

+0

你在找什麼樣的表面?你遇到的問題究竟是什麼? –

+0

我想要一個覆蓋圖上所有點的假想網格的曲面。我遇到的問題是,除了'set dgrid3d',這些候選命令都沒有做任何事情,它以不可接受的方式模擬數據點。目前總的來說,我所看到的是一個3D圖形,上面有一些點。 –

回答

1

隨着splot你只能繪製你的數據點(並連接它們),你可以在2D中。要繪製曲面,您必須找出一個f(x,y)函數,並且還需要splot它。或者,您可以手動插入一百或一千個表面座標到't2.dat'和splot 't2.dat' w l

+0

「你可以手動插入一百或幾千個表面座標到't2.dat'」你是什麼意思? –

+0

根據你的問題和你的時間,你可以「猜測」(計算,估計)一個密集的x-y網格上的曲面值(例如線性插值,樣條曲線,多項式stb ...)到一個單獨的文件中;然後你可以通過用線('w l')連接它們來繪製連續曲面的「幻象」。 –