Gnuplot条件轮廓?

时间:2017-05-18 11:07:32

标签: gnuplot contour

我们承认我有2个强制参数列X和Y,并且对于每对(X,Y),我有条件,如果它被尊重Z = 1,否则Z = 0。 我最终得到像

这样的东西
    X   Y   Z
    5   0.1 1
    5   0.5 1
    5   0.9 1
    10  0.1 1
    10  0.5 0
    10  0.9 0

(有更多数据X:[5:25]和Y:[0:0.9])。我想要的是参数空间(X,Y)中的两个分离区域,其中Z = 0且Z = 1。我想我不能使用' contour'因为Z值只能是0或1,并且两个区域之间的边界不能用特定的Z值定义。 如果我只绘制Z = 1的值,我得到类似的东西: enter image description here

如果任何人只想让轮廓分开这两个区域,我很乐意听到它......

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为contour战略不一定是“注定要失败”。这取决于你想要如何定义你感兴趣的“边界”。下面的例子计算一个对应于等级1的轮廓,并将结果与​​原始点一起绘制(我生成的点或多或少类似于你的数据)。或者,您可以例如计算(使用外部工具)Z = 0的点的凸包并绘制此图。

fName = 'pnts.dat'
tName = 'contours.dat'

set view map                                                                                                                                                                                                                                 
set contour
unset surface                                                                                                                                                                                                                                
set cntrparam linear 
set cntrparam levels discrete 1

set xr [0:0.9]
set yr [5:25]

set isosamples 1000,1000
set table tName
splot fName
unset table
unset contour

set terminal pngcairo
set output 'fig.png'
unset key

p \
    tName w l lw 4 lc rgb '#666666', \
    fName u 1:($3==1?$2:1/0) w p ps 0.5 pt 7 lc rgb 'red'

这给出了: enter image description here