gnuplot:如何在3D图形中抑制零值?

时间:2012-06-28 08:09:20

标签: gnuplot

是否可能,gnuplot不绘制z值为零的区域?

如果我有一个网格:

0  0  24 25
0  23 24 25
23 23 24 0
24 24 0  0

我想只看到“lane”,但现在gnuplot试图绘制一些(均值?)值,其中零。 作为一个文件,我正在采取一些测量值。 我的配置文件:

set grid lt 2 lw 1
set surface
set parametric
set xtics
set ytics
set style data lines
set dgrid3d 80,80,3
splot file

此网格的数据文件为:

1 3 24
1 4 25
2 2 23 
2 3 24
2 4 25
3 1 23
3 2 23
3 3 24
4 1 24
4 2 24 

因此,数据文件中没有零。

1 个答案:

答案 0 :(得分:1)

我很难理解你想要做什么,但希望以下内容会有所帮助。

假设我们有一个数据文件(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