使用填充曲线进行奇怪的插值

时间:2013-03-23 14:35:31

标签: gnuplot

我有一个这样的数据文件:

1 1 2
2 2 3
3 4 nan
4 5 6

我想使用以下方式绘制它:

plot "bla" u 1:2:3 w filledcurves, "" u 1:2 w lp, "" u 1:3 w lp

问题在于第一部分完全忽略了第3行,即使只有3美元。即使我有2美元的值(4),它也会插入并跳过它。

如何让它不忽略该值?

我可以通过在我的情况下将nan替换为应该存在的值(3 + 6)/ 2来进行解决,然后它也将绘制4。这有两个问题 - 我必须编写一个脚本来查找文件周围的nans,并且它还会在我使用w lp时绘制一个点,就像那里有一个值一样,但是没有。

1 个答案:

答案 0 :(得分:0)

你要求gnuplot使用它来做一些它不打算做的事情。幸运的是,有一个有点hacky的解决方案。您需要使用填充曲线的2列版本,该曲线会将您的数据点视为闭环。在这种情况下,您希望绘制第1列和第2列中的内容,然后绘制第3列和第1列中的内容(按相反顺序)。 e.g:

1 1
2 2
3 4
4 5
4 6
3 nan
2 3
1 2

如果您的数据文件如下所示,您可以将其绘制为:

plot 'datafile' u 1:2 w filledcurves

现在我非常确定您实际上并不想重新生成数据文件,因此最简单的方法是使用unix工具为您完成:

plot "< sed 'x;1!H;$!d;x' test.dat | awk '{print $1,$3}' | cat test.dat -" u 1:2 w filledcurves

这应该有效。请注意,如果安装了sed,则可以将tac命令替换为{{1}}。