使用Gnuplot为累积图标记数据点

5
在Gnuplot中标记数据点非常简单,例如,在此示例中,我使用第三列作为数据集(data.txt)的标签:
 1 -22 "Event 0"
 2 -139.7 "Event 3"
 3 -11 "Event 7"
 4 -35.2 "Event 6"
 5 -139.7 "Event 2"
 6 -139.7 "Event 4"
 7 -84.7 "Event 1"
 8 -22 "Event 9"
 9 -64.9 "Event 8"
 10 -38.5 "Event 5"

gnuplot> plot 'data.txt' u 1:2, "" u 1:2:3 w labels rotate offset 1

这是结果(我为了这个目的省略了抛光): 在此输入图片描述 然而,我需要累积和绘制的数据点:
gnuplot> plot 'data.txt' u 1:2 smooth cumulative

enter image description here

现在,我该如何标记它们新的“坐标”点?像这样的东西不起作用(我想要标签在累积曲线的每个拐点下方):
gnuplot> plot 'data.txt' u 1:2 s cum, "" u 1:2:3 s cum w labels offset 1

enter image description here

结果应该长这样(这里是手动用Gimp裁剪和定位的): 输入图像描述


请发布您数据的样本。特别是,了解您的标签是什么样子会很有帮助。如何做这将非常依赖于它们的外观。 - Matthew
我同意 @Matthew 的观点:根据你的写法,没有办法猜测下一个累积点旁边会打印出哪个标签。 - Joce NoToPutinsWarInUkraine
抱歉,现在我已经尝试更详细地解释它,并提供了一个小例子(不是我的真实用例,但可以从Gnuplot进行1:1转移)。 - smartmic
你能提供一个你想要的例子吗?只需使用图形编辑程序在累积曲线(第二个图)上绘制标签,以展示你想要它们最终呈现的方式。 - Matthew
@Miguel,你的答案看起来很有前途,但我无法复制它。它说“第7行:绘图选项中存在重复或矛盾的参数”。顺便说一下,数据在代码片段的前10行中给出。 - smartmic
显示剩余2条评论
1个回答

2

您可以将累积图绘制到文件中,然后像常规数据文件一样使用这些修改后的数据。要访问标签,可以使用paste命令并利用额外的列:

set table "cumulative_labels"
plot 'data.txt' u 1:2:3 smooth cumulative w labels
set table "cumulative_data"
plot 'data.txt' u 1:2 smooth cumulative
unset table
plot 'cumulative_data' u 1:2 w l, \
"< paste cumulative_labels cumulative_data" u 4:5:3 w labels offset 1

编辑:

gnuplot是一种仅使用它可以完成此操作的方法,无需中间文件,但需要删除smooth cumulative选项:

sum = 0.
plot "data.txt" u 1:2 s cum, "" u (sum = sum + $2, $1):(sum):3 w labels offset 1

1
给那个踩了这篇文章的人:以后请在评论区写出问题所在。我已经修复了,但是花了我一些时间才意识到解决方案不起作用。没有指出问题的评论的踩并不是很有帮助。 - Miguel
可以,谢谢。缺点是它涉及到两个临时文件和一个外部系统命令。有没有人能想到一个纯粹的“内部”gnuplot解决方案? - smartmic
@smartmic 使用 smooth 经常会干扰样式选项,就像你的情况一样。我通常使用的解决方案,以及我看到其他人最常用的解决方案,涉及将数据转储到外部文件和/或使用外部命令。话虽如此,您可以通过即时解析数据(而不是依赖于 smooth cumulative 功能)自己完成总和。请参见我的编辑以了解如何执行。 - Miguel
1
@smartmic Gnuplot不是一个数据处理工具,而是一个绘图程序。为了方便起见,它提供了一些有用的和常见的操作。对于更高级的处理,gnuplot依靠其通过其他程序或脚本管道传输数据的能力,这符合UNIX命令行工具的精神。你不应该因为gnuplot不是为此而设计而责怪它。如果你需要更多功能,可以使用octave、scilab、matplotlib等工具。 - Christoph

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接