Gnuplot条件轮廓?
让我们承认,我有两个强制参数列X和Y,对于每对(X,Y),我有一个条件,如果它是Z=1,否则Z=0。 我的结局是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 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条对此进行了更详细的说明。