我很难准确理解您想要做什么,但希望以下内容会有所帮助。
假设我们有一个数据文件 ( test.dat
):
NaN NaN NaN NaN NaN NaN NaN 100 200
NaN NaN NaN NaN NaN NaN 100 200 100
NaN NaN NaN NaN NaN 100 200 100 NaN
NaN NaN NaN NaN 100 200 100 NaN NaN
NaN NaN NaN 100 200 100 NaN NaN NaN
NaN NaN 100 200 100 NaN NaN NaN NaN
NaN 100 200 100 NaN NaN NaN NaN NaN
100 200 100 NaN NaN NaN NaN NaN NaN
200 100 NaN NaN NaN NaN NaN NaN NaN
我们可以使用以下方法绘制此数据文件:
set datafile missing 'NaN'
set style data lines
splot 'test.dat' matrix #matrix allows our datafile to look like your first data grid
如果我正确理解你想要什么,如果不将你的数据放入“网格”格式(使用矩阵或使用“扫描分隔符”(见下文)),你就无法完成它。 dgrid3d
在这里不起作用,因为它不知道如何将数据片段指定为缺失。如果您不想使用matrix
格式,可以执行以下操作:
#Note the blank spaces!
#Each block doesn't have to have the same number of lines
#but the resulting plot looks nicest if it does.
#for lines that you want to make blank, use some character to
#mark that data as missing. (I used 'NaN' above, but you can
#use anything you want. sometimes I use '?' too).
x1 y1 num
x1 y2 num
x1 y3 num
...
x2 y1 num
x2 y2 num
x2 y3 num
...
...
xN y1 num
xN y2 num
xN y3 num
...
作为一个具体的例子:对于您的网格:
1 1 ?
1 2 ?
1 3 24
1 4 25
2 1 ?
2 2 23
2 3 24
2 4 25
3 1 23
3 2 23
3 3 24
3 4 ?
4 1 24
4 2 24
4 3 ?
4 4 ?
接着:
set datafile missing '?'
set style data lines
splot 'my_data.txt' #Not matrix this time.
当然,使用此分辨率的数据,绘图可能仍然不像您想要的那样,但希望这能证明这一点。
编辑
如果您可以将数据文件转换为您在帖子顶部显示的格式,那么您有一些(额外的)选项(不会弄乱零):
set datafile missing '0' #This just has the effect of removing the 0 values from the plot
splot 'myfile.txt' matrix
或者:
set zrange [0.5:] #This also removes the 0 values, but alters the z-range.
splot 'myfile.txt' matrix