我想知道如何在Gnuplot中创建逐步函数的图。我想绘制的功能包括多个距离范围和多个产品的运营成本。例如,如果产品1的距离为0-300公里,则成本为1.05美元/公里,而产品2的距离为0.86美元/公里。当距离增加时,每种产品的成本降低。
我为每个产品定义了一个函数并将它们一起绘制在一起:
gnuplot> f(x)=x<=300 ? 1.05 : x<=650 ? 0.65 : x<=1300 ? 0.46 : x<=1950 ? 0.4 : x<=3250 ? 0.31 : 0.22
gnuplot> x<=300 ? 0.86 : x<=650 ? 0.53 : x<=1300 ? 0.38: x<=1950 ? 0.32 : x<=3250 ? 0.24 : 0.19
gnuplot> plot [0:5000][0:3] f(x), g(x)
有一个问题:我无法删除垂直线。任何的想法?
感谢您的帮助
答案 0 :(得分:-1)
你的三元声明试图做太多。在你写作时
f0(x)=(x_low < x <= x_high) ? y : 0
你应该写
f0(x)=((x_low < x) && ( x <= x_high)) ? y : 0
所以你的函数f(x)
应该是
f(x)=(x<=300) ? 1.05 : (x<=650) ? 0.65 : (x<=1300) ? 0.46 : (x<=1950) ? 0.4 : (x<=3250) ? 0.31 : (x<3250) ? 0.22 : 0
对于绘图样式,如果您希望它是不连续的,请对各个步骤使用单独的函数并单独绘制它们。你的第一个功能将被拆分为:
f1(x)= (x<=300) ? 1.05 : 1/0
f2(x)=(x>300) && (x<=650) ? 0.65 : 1/0
...
如果您只想要没有插值的步骤,请使用步骤
plot [0:6000][0:3] f(x) w steps, g(x) w steps