指定与gnuplot中特定值关联的空间点

指定与gnuplot中特定值关联的空间点,gnuplot,Gnuplot,我有10x10个网格点。其中一些点与值1关联,其他点与值-1关联。我只想指定(给颜色)那些值为1的点。谁能告诉我如何在Gnuplot中实现这一点 提前感谢。如果您想完全过滤掉值为-1的所有点,可以按如下操作: splot 'file' using 1:2:($4 == 1 ? $3 : 1/0) with points 这假设数据文件有四列,在第1、2、3列中有x、y、z值,在第四列中有值1或-1 使用using语句,可以指定用于打印的列:using 1:2:3使用第一列作为x,第二列作为y,

我有10x10个网格点。其中一些点与值1关联,其他点与值-1关联。我只想指定(给颜色)那些值为1的点。谁能告诉我如何在Gnuplot中实现这一点


提前感谢。

如果您想完全过滤掉值为
-1
的所有点,可以按如下操作:

splot 'file' using 1:2:($4 == 1 ? $3 : 1/0) with points
这假设数据文件有四列,在第1、2、3列中有x、y、z值,在第四列中有值
1
-1

使用
using
语句,可以指定用于打印的列:
using 1:2:3
使用第一列作为x,第二列作为y,第三列作为z值

您还可以使用语句在
中进行计算。在这种情况下,您必须将相应的表达式放在大括号中,并使用
$3
列(3)
使用1:2:($3/10)
将第三列中的值缩放
10
,并将结果用作z值


我在上面使用的表达式,
使用1:2:($4==1?$3:1/0)
执行以下操作:如果第四列中的值等于
1
,则使用第三列中的值,否则使用
1/0
。“特殊”值
1/0
使gnuplot忽略一个点。

一个明显的方法是使用一些实用程序过滤数据。如果您的数据结构是
xyzw
,其中w是1或-1,那么您可以使用
awk
将此数据过滤到一个临时文件中,该临时文件将只显示w=1的数据点:
awk'{If($4==1)print$0}datafile>temp
,然后用gnuplot:
splot“temp”打印它
@Miguel如果OP只想画点,gnuplot内部的过滤也是可能的:
splot'file'使用1:2:($4==1?$3:1/0)和点
。谢谢Miguel和Christoph。@克里斯托夫:我是gnuplot的新手,所以你也可以多花点时间给我解释一下语法的意思。Thanks@Christoph:我不知道这个
1/0
的东西,但它似乎很有用。@Miguel,只要你画点,这个把戏就行了。如果你想过滤掉一些点,但用线连接其他点,那是行不通的:非常感谢Christoph,这非常有帮助。@user3527002太棒了!如果这个答案解决了你的问题,你可以接受:)