Gnuplot 如何为不同的功能使用不同的轮廓级别

Gnuplot 如何为不同的功能使用不同的轮廓级别,gnuplot,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

我需要用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


对于所有函数,但我不知道如何将前者仅用于
g1(x,y)
g2(x,y)
,而将后者用于
f(x,y)
。如何操作?

通常,不能为要一起打印的不同功能定义不同的轮廓设置。在您的例子中,有一个解决方法,因为轮廓级别彼此之间有很好的分离。您必须将函数定义为
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)'
f(x,y)=10+x+y
g1(x,y)=5-x-2*y
g2(x,y)=(1/x)+(1/y)-2
设置等高线基准
设置isosample 250250
设置cntrparam cubicspline
未定型表面
定格
设置视图地图
设置Y范围[-1:5]
设置X范围[-1:5]
将cntrparam级别设置为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的结果是:

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)'