gnuplot,如何只标记某些点?

Gab*_*iel 7 conditional gnuplot labels

我正在使用以下gnuplot命令创建一个图:

#!/bin/bash
gnuplot << 'EOF'
set term postscript portrait color enhanced
set output 'out.ps'

plot 'data_file' u 3:2 w points , '' u 3:2:($4!=-3.60 ? $1:'aaa') w labels

EOF
Run Code Online (Sandbox Code Playgroud)

这里data_file看起来是这样的:

  O4     -1.20     -0.33     -5.20  
O9.5     -1.10     -0.30     -3.60  
  B0     -1.08     -0.30     -3.25  
B0.5     -1.00     -0.28     -2.60  
B1.5     -0.90     -0.25     -2.10  
B2.5     -0.80     -0.22     -1.50  
  B3     -0.69     -0.20     -1.10  
Run Code Online (Sandbox Code Playgroud)

我希望gnuplot 用列中找到的字符串标记所有1,除了4等于-3.60的那个点,在这种情况下我想要aaa字符串.什么我得到的是,$4=-3.60数据点被正确标记为aaa,但其余的没有被标记在所有.


更新:gnuplot 使用条件语句将数字显示为标签没有问题,即:任何列,但1正确显示为每个点的标签,尊重所施加的条件.也就是说,此行显示列2(numbres)作为关于条件语句的点标签:

plot 'data_file' u 3:2 w points , '' u 3:2:($4!=-3.60 ? $2:'aaa') w labels
Run Code Online (Sandbox Code Playgroud)

更新2:1如果我将列绘制为一个整体,即不使用条件语句,将列绘制为点标签也没有问题.也就是说,此行正确绘制了列(字符串)中的所有点标签1:

plot 'data_file' u 3:2 w points , '' u 3:2:1 w labels
Run Code Online (Sandbox Code Playgroud)

很明显,问题在于将条件语句与strings列一起使用.任何单独使用的工作都很好.

T. *_*ron 5

以更干净的方式,这应该工作.如果没有在字符串中转换,则标签似乎无法显示计算出的数字.

#!/bin/bash
gnuplot << 'EOF'
set term postscript portrait color enhanced
set output 'out.ps'

plot 'data_file' u 3:2 w points , '' u 3:2:($4!=-3.60 ? sprintf("%d",$1):'aaa') w labels

EOF
Run Code Online (Sandbox Code Playgroud)