Gnuplot曲面网格仅在x方向显示,为什么不在y方向显示?

Gnuplot曲面网格仅在x方向显示,为什么不在y方向显示?,gnuplot,Gnuplot,我有相当多的数据,我想在三维表面网格可视化。当我 splot "surface.csv" u 1:2:7 w p lc rgb "black" ps 0.2 我明白了 当我 splot "surface.csv" u 1:2:7 w l lc rgb "black" 我明白了 我想用线连接x和y方向上的所有数据点。这是可能的吗 我可以做些什么来实现y方向线?我的数据文件是这样组织的(请注意,我在同一数据块中可能没有相同数量的点) 倍频程命令出错: octave:1> d=load

我有相当多的数据,我想在三维表面网格可视化。当我

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

当我

splot "surface.csv" u 1:2:7 w l lc rgb "black"
我明白了

我想用线连接x和y方向上的所有数据点。这是可能的吗

我可以做些什么来实现y方向线?我的数据文件是这样组织的(请注意,我在同一数据块中可能没有相同数量的点)


倍频程命令出错:

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) 如果要在统一网格上插值数据,则应使用
dgrid3d

此处显示了一些示例:

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"
如果你链接一些数据,我就能给出一个例子


下面是使用上面的plot命令完成的,其中surface_t.csv文件在Gnu倍频程中被转换为

d=load('surfacefull.csv');
[y i]=sort(d(:,2));
d_t=d(i,:);
dlmwrite('surfacefull_t.csv',d_t," ");
我有一个脚本来做记录间隔,但你可以手工做


以下是数据。我在手册中发现,当数据块的大小不尽相同时,无法在两个方向上连接点。但我想我可以把它们“缝合”在一起,形成一个小的数据点重叠。我发现dgrid3d将数据平滑到无法识别的程度。请参见我的编辑,您只需手动交换记录以在其他方向打印。运行Octave命令会给我一些错误,请参见原始问题。另外,我不明白你所说的“交换记录”或“做记录间隔”是什么意思,我刚刚编辑了代码块。在gnuplot中从数据文件绘制线时,线的每个点都由数据文件中的一行(称为“记录”)给出。空行表示应开始新行。您需要通过“surfacefull\u t.csv”并在所需行终止的位置放置一个空行,就像我在这里对前几行所做的那样:。如果您的数据集很大,我会编写一个脚本来执行这些换行符。
d=load('surfacefull.csv');
[y i]=sort(d(:,2));
d_t=d(i,:);
dlmwrite('surfacefull_t.csv',d_t," ");