平滑Gnuplot中的等值线图?

时间:2013-10-16 14:50:36

标签: gnuplot contour

我正在尝试使用以下代码为Himmelblau's function绘制一个简单的等高线图(在gnuplot中):

f(x,y)=(((x**2)+(y)-11)**2)+(((x)+(y**2)-7)**2)
set xrange [-5:5]
set yrange [-5:5]
set contour base
set cntrparam level discrete 13.59085,25,50,100,150,300,500,1000
set table 'cont.dat'
splot f(x,y)
unset table
reset
set xrange [-5:5]
set yrange [-5:5]
unset key
p './cont.dat' w l lt -1

我得到以下情节结果: result.img

我想消除的情节有一些问题:

  1. 它在情节中显示了一些水平线,我不知道为什么。如何删除水平线?
  2. 轮廓线不太光滑。我怎样才能提高平滑度?
  3. 我觉得上述两个问题都是相关的,但无法弄清楚如何。能帮助我理解并希望消除这些问题吗?

    编辑1:我找到了问题-2的答案,即改善平滑度。我可以通过增加isosample来实现。但我仍然得到很多水平线,如下图所示。 smoother_contourlines.img

    但如何删除这些水平线?我只想要指定等级的轮廓线。

2 个答案:

答案 0 :(得分:2)

以下是仅绘制轮廓线的方法:必须使用unset surface,仅绘制轮廓线,并使用set view map查看上图。另请参阅gnuplot演示中的2D contour projection plot

使用set isosamples可以实现平滑,但在某些方面也可以使用例如set cntrparam bsplinef(x,y)=(((x**2)+(y)-11)**2)+(((x)+(y**2)-7)**2) set xrange [-5:5] set yrange [-5:5] set contour base set cntrparam level discrete 13.59085,25,50,100,150,300,500,1000 set isosamples 250 unset surface set view map set key out splot f(x,y) 和类似的。

所以你的脚本变成了:

{{1}}

结果(使用4.6.3):

enter image description here

答案 1 :(得分:0)

我能够解决这两个问题。问题-2的解决方案我已经在问题的编辑1中分享了。

对于问题-1,即从等高线图中删除IsoLines,我应该将初始数据块保留在cont.dat个文件中,其中包含等值线的数据。相反,我应该从数据块250开始绘制(由于set isosample 250,250命令,前250个数据块来自IsoLines)。