我需要用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)
问题是我可以使用:
set cntrparam levels discrete 0
或
set cntrparam levels discrete 10, 12, 14
所有功能,但我不知道如何仅使用g1(x,y)
和g2(x,y)
使用前者,而f(x,y)
使用后者。怎么做?
答案 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的结果是: