我有两组要点:“test1.dat”和“test2.dat”,它们不共享相同的X值。
我想首先绘制两条平滑线,因为数据很吵,而且 然后在平滑线之间绘制一条填充曲线。
我已经阅读了教程,但找不到答案。
答案 0 :(得分:1)
据我所知,Gnuplot无法使用2个不同文件中的数据进行绘图。在这种情况下,我调用BASH程序,如“粘贴”来合并这两个文件。我假设这两个文件包含格式为“X Y”的数据,它们共享一个共同的X网格(数据点的数量也必须相等)
plot '<paste test1.dat test2.dat' u 1:2:4 w filledcurve
PS:如果你不使用Linux,我就不知道该怎么做....
答案 1 :(得分:1)
plot '< tail -r test2.dat | cat test1.dat -' using 1:2 with filledcurves closed
我在测试时注意到的一件事是你应该确保在test2.dat结尾处有换行符,否则tail -r
将无法正常工作(tac
可能也工作,但它没有安装在我的Mac上。这可以使用第一个数据文件并将第二个数据文件反向附加到第一个数据文件。(我假设第一个和第二个数据文件已经使用升序X值排序)。换句话说,就gnuplot而言,数据在x中上升然后在x中下降。因为我们使用with filledcurves closed
gnuplot将所有点视为单个多边形然后连接它们。就平滑数据而言,完全是另一个问题。只是看一下文档,gnuplot提供了一些平滑算法,但是它们需要提前用于你的数据。以下是完全未经测试的,但希望类似于你想要的东西(它也可能只适用于unix类型的环境)...
set table 'smoothed1'
plot 'test1.dat' using 1:2 smooth beizer #beizer is just an example see "help plot datafile smooth" for more options
unset table
set table 'smoothed2'
plot 'test2.dat' using 1:2 smooth beizer
unset table
plot '< tail -r smoothed2 | cat smoothed1 -' using 1:2 with filledcurves closed
如果它不起作用,请查看gnuplot生成的文件“smoothed1”和“smoothed2”,看看是否有任何提示(例如是否有额外的新行应删除?)
答案 2 :(得分:0)
这对我有用。首先在上平滑线和x轴之间填充一些颜色,在下面的线和x轴之间填充第二个白色,最后绘制两条平滑的线。
光滑的cspline必须在fillcurve之前
{{1}}