Gnuplot条件轮廓?

Gnuplot条件轮廓?,gnuplot,contour,Gnuplot,Contour,让我们承认,我有两个强制参数列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。我想我不能使用“轮廓”,因为Z值只能是0或1,并且两个区域之间的边

让我们承认,我有两个强制参数列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。我想我不能使用“轮廓”,因为Z值只能是0或1,并且两个区域之间的边界不能用特定的Z值定义。 如果我只绘制Z=1的值,我会得到如下结果:

如果有人有一个想法,只得到轮廓分隔这两个地区,我很乐意听到


谢谢

我认为
轮廓
策略不一定是“注定的”。这取决于你想如何定义你感兴趣的“边界”。下面的示例计算与级别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'
这使得:

谢谢你的回答。你的最终结果不符合我的要求。但是,当我这样做时,我得到错误:“test.gnu”,第15行:警告:此绘图中没有可用数据自动缩放轴范围“test.gnu”,第15行:z轴范围未定义或溢出。第15行是splot行。实际上,将splot fname替换为splot fname u 2:1:3,我得到了错误:警告:无法等高线非网格数据。即使我的列大小相同,也请使用“set dgrid3d”。。我不明白。@DamienGagnier抱歉,我忘了提到我使用了网格数据,即,如果有M个不同的x值和N个y值,我使用的文件有MxN数据行,与特定x值对应的各个块用空行分隔…-第3.9条和第4.16条对此进行了更详细的说明。