gnuplot中的逐步函数

时间:2016-04-19 21:45:53

标签: gnuplot

我想知道如何在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)

有一个问题:我无法删除垂直线。任何的想法?

感谢您的帮助

enter image description here

1 个答案:

答案 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