2016-04-22 35 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