如何针对不同功能使用不同的轮廓水平

时间:2014-09-13 01:03:09

标签: gnuplot

我需要用gnuplot来绘制3个不同的函数,但是对于其中2个,我只需要等高线0,对于另一个,我需要等级10,12和14.这是我到目前为止所得到的:

f(x,y) = 10 + x + y
g1(x, y) = 5 - x - 2*y
g2(x, y) = (1/x) + (1/y) - 2
set contour base
set isosample 250, 250
set cntrparam cubicspline
unset surface
set size square
set view map
set yrange[-1:5]
set xrange[-1:5]

set cntrparam levels discrete 0
splot f(x,y), g2(x,y), g1(x,y)

plot

问题是我可以使用:

set cntrparam levels discrete 0

set cntrparam levels discrete 10, 12, 14

所有功能,但我不知道如何仅使用g1(x,y)g2(x,y)使用前者,而f(x,y)使用后者。怎么做?

1 个答案:

答案 0 :(得分:1)

通常,您无法为要绘制在一起的不同功能定义不同的轮廓设置。在您的情况下,有一个解决方法,因为轮廓水平彼此很好地分开。您必须将功能定义为1/0不需要的级别。在这里,我选择5作为限制,位于中间:

f(x,y) = 10 + x + y
g1(x, y) = 5 - x - 2*y
g2(x, y) = (1/x) + (1/y) - 2
set contour base
set isosample 250, 250
set cntrparam cubicspline
unset surface
set size square
set view map
set yrange[-1:5]
set xrange[-1:5]

set cntrparam levels discrete 0, 10, 12, 14

splot (f(x,y) > 5 ? f(x,y) : 1/0) t 'f(x,y)', \
      (g2(x,y) < 5 ? g2(x,y) : 1/0) t 'g2(x,y)', \
      (g1(x,y) < 5 ? g1(x,y) : 1/0) t 'g1(x,y)'

4.6.5的结果是:

enter image description here