Gnuplot:从字符串绘图跳过第一行

Gnuplot: plotting from string skips the first line

这是我的最小 Gnuplot 脚本:

data="3.000000\t49.200000\n3.500000\t42.800000\n4.000000\t37.800000\n4.500000\t33.800000\n5.000000\t30.400000\n5.500000\t28.000000\n"

plot '< echo -e '.sprintf('"%s"', data) using 1:2 title 'there is no data point for x=3.0?' w linespoints

当然,在我的实际脚本中,我以不同的方式填充数据字符串(使用 stats 命令),因此首先将数据保存到文件中,然后 运行 plot 应该可以工作,但我不喜欢!看起来过于笨重,留下杂散的文件等。

我目前的解决方案是在字符串前添加一个虚拟行 (data="0\t0\n..."),但我担心的是:我做错了什么,或者这是一个错误? (我在 ubuntu 14.04,gnuplot 4.6 补丁级别 4,我猜这不是最新的...) 谢谢!

删除 -e 选项,它工作正常:

data="3.000000\t49.200000\n3.500000\t42.800000\n4.000000\t37.800000\n4.500000\t33.800000\n5.000000\t30.400000\n5.500000\t28.000000\n"

plot '< echo '.sprintf('"%s"', data) using 1:2 title 'there is a data point for x=3.0!' w linespoints

但我不能确切地告诉你为什么它有效;)

作为您的展望:Gnuplot 5 有一种将内联数据保存为某种 heredoc 的新方法。在我看来,将实际数据文件包含到绘图脚本中并不是一个好方法,但它是受支持的:

$data <<EOD
3.000000 49.200000
3.500000 42.800000
4.000000 37.800000
4.500000 33.800000
5.000000 30.400000
5.500000 28.000000
EOD

plot $data using 1:2 notitle w linespoints