2016-04-22 34 views
1

我有相當多的數據,我想在3D表面網格中可視化。當我Gnuplot表面網格只在x方向顯示,爲什麼不是y方向?

splot "surface.csv" u 1:2:7 w p lc rgb "black" ps 0.2 

我得到這個

enter image description here

當我

splot "surface.csv" u 1:2:7 w l lc rgb "black" 

我得到這個

enter image description here

我想在x方向和y方向都有連線的所有數據點。這當然有可能嗎?

我可以做些什麼來實現y方向的線?我的數據文件被組織這樣的(注意,我可能不會有相同的數據塊中的點數相同)

0 1 z1 
0 2 z2 
0 3 z3 
. 
. 
. 
0 n zn 

20 1 z1 
20 2 z2 
20 3 z3 
. 
. 
. 
20 m zm 

. 
. 
. 

錯誤到Octave八度命令:

octave:1> d=load('surfacefull.csv'); 
octave:2> [y i]=sort(d(:,2)); 
octave:3> d_t=d(:,i); 
error: A(I,J): column index out of bounds; value 905 out of bound 6 
octave:3> dlmwrite('surfacefull_t.csv',d_t," "); 
error: 'd_t' undefined near line 1 column 30 
error: evaluating argument list element number 2 

回答

1

有兩種如何做到這一點,我不確定你在問什麼。

1) 如果你想插在一個統一的網格數據,那麼你會使用dgrid3dhttp://gnuplot.sourceforge.net/docs_4.2/node177.html

一些例子如下所示:http://www.gnuplot.info/demo/dgrid3d.html

2) 如果您像你迄今爲止所做的那樣,希望所有線條與沒有均勻網格的線相交,只需將數據轉置爲八度(或matlab),以便第二個空間維度變化最慢,然後像

splot "surface.csv" u 1:2:5 w l lc rgb "black", \ 
     "surface_t.csv" u 1:2:5 w l lc rgb "black" 

如果您鏈接了一些數據我可以顯示一個例子


下面是使用上述繪圖命令在surface_t.csv文件的GNU八度換位喜歡的東西

完成
d=load('surfacefull.csv'); 
[y i]=sort(d(:,2)); 
d_t=d(i,:); 
dlmwrite('surfacefull_t.csv',d_t," "); 

我有一個腳本來做記錄間距,但你可以手工做到這一點。

+0

以下是數據。 https://www.dropbox.com/s/fyz8iz7eert80cb/surfacefull.csv?dl=0 我在手冊中發現,當數據塊不是全部相似的大小時,點不能在兩個方向上連接。但我認爲我可以將它們「縫合」在一起,從而使數據點重疊。我發現dgrid3d將數據平滑到無法識別的地方。 – Yoda

+0

看我的編輯,你只需要手動交換記錄在另一個方向繪製 –

+0

運行八度命令給我一些錯誤,請參閱原始問題。另外,我不明白「交換記錄」或「記錄間距」是什麼意思。 – Yoda