我目前正在开展一个项目,我需要绘制一组函数并填充它们之间的区域。
我尝试了不同的东西,但我无法真正开始工作。
以下是gnuplot脚本的简化版本:
f(x) = 80
g(x) = 0.35*x - 7.5
h(x) = -1.96629*x + 710
i(x) = -80
j(x) = -0.35*x + 7.5
k(x) = 1.96629*x -710
set xzeroaxis
set xtics axis
set xrange [0:500]
set yzeroaxis
set ytics axis
set yrange [-200:200]
set border 0
plot f(x) with lines ls 1 lt rgb "red", \
g(x) with lines ls 1 lt rgb "red", \
h(x) with lines ls 1 lt rgb "red", \
i(x) with lines ls 1 lt rgb "blue", \
j(x) with lines ls 1 lt rgb "blue", \
k(x) with lines ls 1 lt rgb "blue"
这会产生以下情节:
我尝试了不同的东西,this链接让我有所帮助,但我的想法已经不多了。
所以我的问题是:是否可以填充红线和蓝线之间的区域(即函数形成的凸空间)?
答案 0 :(得分:1)
如果您已经知道哪些曲线是下界,哪些是上界,则可以轻松完成:
max(a,b)=(a>b)?a:b
min(a,b)=(a<b)?a:b
lowerb(x)=max(max(i(x),j(x)),k(x))
upperb(x)=min(min(f(x),g(x)),h(x))
plot "+" using 1:((lowerb($1)<upperb($1))?lowerb($1):1/0):(upperb($1)) with filledcurves
plot
命令中的三元运算符只允许绘制{ lowerb(x)< y <upperb(x)}
而不是{ lowerb(x) > y > upperb(x)}
如果你有很长的功能列表,应该可以使用宏自动构建lowerb
和upperb
。
答案 1 :(得分:0)
使用三元运算符定义红色函数。叫它f1。用填充曲线绘制f1和-f1。我认为这种方法应该这样做。