Gnuplot排在最后一点

时间:2013-10-17 11:55:35

标签: gnuplot curve

我想在xyz坐标系中绘制一些实验值。这些值在某种程度上受限于一定数量,因此具有开始和结束。此外,我想绘制它们,并且它们的最后一点应该以特殊方式显示。就像一个特殊颜色或特殊点的独特点。如何创建这样一条线,其末端以点或类似的形式显示?

1 个答案:

答案 0 :(得分:0)

如果它是最后一点,您可以使用every来选择它。不幸的是,没有“神奇”的价值来获得最后一点。您必须计算条目数并使用该值:

stats 'file.dat' nooutput
last_index = int(STATS_records - 1)
splot 'file.dat' with lines, '' every ::last_index with points

或者,您可以使用using语句添加一些过滤,仅对您要选择的单个点进行过滤。

在最一般的情况下,你会有

f(i, x, y, z) = ...
splot 'file.dat' with lines, '' using (f($0, $1, $2, $3) ? $1 : 1/0):2:3 with points

这会跳过所有点,f会返回0$0column(0)的简写,它给出了行索引,$1给出了第一列的数值,依此类推。

现在由您来定义适当的过滤功能f

如果给出终点,例如通过最大x - 值的点,您可以使用:

stats 'file.dat' using 1 nooutput
f(x) = (x == STATS_max ? 1 : 0)
splot 'file.dat' with lines, '' using (f($1) ? $1 : 1/0):2:3 with points

如果您有其他标准,则必须相应地定义您的函数f

要为此点添加标签,您可以使用label绘图样式:

splot 'file.dat' with lines, \
      '' using (f($1) ? $1 : 1/0):2:3:(sprintf('(%.1f,%.1f,%.1f)', $1, $2, $3)) \
         offset char 1,1 point notitle