Gnuplot行中的最后一点

Gnuplot行中的最后一点,gnuplot,curve,Gnuplot,Curve,我想在xyz坐标系中绘制一些实验值。这些值在一定程度上受到限制,因此有开始和结束。此外,我想绘制它们,它们的最后一点应该以一种特殊的方式可见。像一个独特的点,一个特殊的颜色或一个特殊的点。如何创建这样一条线,使其末端可见点或类似物?如果它是最后一个点,您可以使用每一个来选择它。不幸的是,没有“魔力”值来获得最后一分。必须计算条目数并使用该值: stats 'file.dat' nooutput last_index = int(STATS_records - 1) splot 'file.dat

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

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

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
$0
列(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

要将标签添加到此点,可以使用
标签
打印样式:

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

是的,这是可能的,但是你需要提供更多的信息。这是可能的,但您必须以某种方式将“终点”点与其他点区分开来:它是数据文件中的最后一点吗?或者是具有例如最大
z
-值的?一条线有多少个点?您的数据文件是如何格式化的?etcYap,它应该是测量数据绘制线的最后一点。这也是x轴值的最大值。是的,这也是可行的,但另一方面,我也可以简单地复制粘贴该点,然后手动打印出来。还有一个悬而未决的问题,就是如何在不同的数字和不同的最大值下舒适地完成。应绘制最大值,然后稍加标记参见我的编辑。在任何情况下,您都需要以某种方式指定是什么构成了这个“终点”。如果你能在你的问题中包含足够的信息那就太好了。。。