Gnuplot 如何为不同的功能使用不同的轮廓级别
我需要用gnuplot绘制3个不同函数的等高线图,但是对于其中的2个,我只需要等高线级别0,对于另一个,我需要级别10、12和14。到目前为止,我得到的是: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
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)'