Gnuplot 绘制x与总和(y)
考虑以下形式的数据集:Gnuplot 绘制x与总和(y),gnuplot,Gnuplot,考虑以下形式的数据集: 1 3 1 10 2 7 2 14 3 9 我想要一个只绘制3个点(1,3+10),(2,7+14),(3,9)的gnuplot脚本?这个问题与类似,但这并不能真正解决我的特殊问题。实际上,您提到的链接给了您一个很好的提示:您可以使用AWK预处理数据,然后将其导入gnuplot 下一行应该提供您所需的内容(假设您的数据位于.txt中的文件): 附录 如果您的输入文件没有按照X坐标排序,您可以增强管道以包括对排序的调用: plot "< sort
1 3
1 10
2 7
2 14
3 9
我想要一个只绘制3个点(1,3+10),(2,7+14),(3,9)的gnuplot脚本?这个问题与类似,但这并不能真正解决我的特殊问题。实际上,您提到的链接给了您一个很好的提示:您可以使用AWK预处理数据,然后将其导入gnuplot 下一行应该提供您所需的内容(假设您的数据位于.txt中的文件
):
附录
如果您的输入文件没有按照X坐标排序,您可以增强管道以包括对排序的调用:
plot "< sort -n -k 1 in.txt | awk '{ if ($1 == last_x) sum_y += $2 ; else { print last_x, sum_y; sum_y = $2 } last_x=$1} END { print last_x, sum_y }'" with lines
plot“
Gnuplot有一些平滑选项。其中之一是平滑频率
什么正是您想要的:
plot 'data.txt' smooth frequency w l
它首先在x中呈现单调的数据,然后对相同x值的所有y值求和。空行是故意的吗?如果没有,您应该从示例数据中删除它们。@Marcus:我删除了空行。在您确认后,我重新格式化了您的问题,以使用不同的方式突出显示输入数据。谢谢您,这很有效!但是,它仅在所有相同的x值连续时才起作用。我想在一般情况下也有一个复杂的实现方法。
plot "< sort -n -k 1 in.txt | awk '{ if ($1 == last_x) sum_y += $2 ; else { print last_x, sum_y; sum_y = $2 } last_x=$1} END { print last_x, sum_y }'" with lines
plot 'data.txt' smooth frequency w l