Gnuplot 不同函数的不同样本数

Gnuplot 不同函数的不同样本数,gnuplot,Gnuplot,是否可以将x+3设置为只有2个样本,将x**2+5*x+12设置为在同一绘图中有1000个样本?可以这样做,但不能开箱即用 第一种变体使用临时文件以低采样率保存一个函数,然后与高分辨率函数一起打印: plot x+3 , x**2+5*x+12 这样做的优点是,您可以对这两个函数使用任何采样率 对于一个函数有两个示例的特殊情况,可以在没有外部文件的情况下完成,但这需要相当多的技巧: set samples 2 set table 'tmp.dat' plot x+3 unset table

是否可以将x+3设置为只有2个样本,将x**2+5*x+12设置为在同一绘图中有1000个样本?

可以这样做,但不能开箱即用

第一种变体使用临时文件以低采样率保存一个函数,然后与高分辨率函数一起打印:

plot x+3 , x**2+5*x+12 
这样做的优点是,您可以对这两个函数使用任何采样率

对于一个函数有两个示例的特殊情况,可以在没有外部文件的情况下完成,但这需要相当多的技巧:

set samples 2
set table 'tmp.dat'
plot x+3
unset table
set samples 1000
plot 'tmp.dat' w lp t 'x+3', x**2 + 5*x + 12
我在这里做的是:

使用特殊文件名+在当前X范围内生成一组坐标。这必须设置,不可能自动缩放。 跳过除第一个点和最后一个点以外的所有点(通过为它们指定值1/0)不起作用,因为其余两个点没有连接。 因此,当$0或column0等于0时,我存储第一个x值,并在遇到最后第二个点时使用它。对于最后几点,使用通常的值。 这适用于2个样品的特殊情况

必须记住,第一个函数被视为数据,因此必须同时使用set-style data和set-style func来显示它

4.6.4的结果是:

set xrange [-10:10]
s = 1000
set samples s
f1(x) = x + 3

set style func linespoints
set style data linespoints
plot '+' using (x0 = (($0 == 0 || $0 == (s-1) )? $1 : x0), \
                ($0 < (s-2) ? 1/0 : x0)):(f1(x0)) t 'x+3',\
     x**2 + 5*x + 12