gnuplot – 不同功能的不同样本数

plot x+3 , x**2+5*x+12 

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

最佳答案 它可以完成,但不是开箱即用的.

第一个变体使用临时文件以低采样率保存一个函数,稍后将其与高分辨率函数一起绘制:

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

这样做的好处是,您可以对两种功能使用任何采样率.

对于一个函数的2个样本的特殊情况,它可以在没有外部文件的情况下完成,但它涉及相当多的欺骗:

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

我在这里做的是:

>使用特殊文件名在当前xrange中生成一组坐标.必须设置此项,不能进行自动缩放.
>跳过所有点,但第一个和最后一个给它们值1/0不起作用,因为剩下的两个点没有连接.
>所以我存储了第一个x值(当$0,或列(0)等于0)并在我遇到第二个最后一点时使用它.对于最后几点,使用通常的值.

这适用于2个样本的特殊情况.

您必须记住,第一个函数被视为数据,因此您必须同时使用设置样式数据和设置样式func(仅显示它).

4.6.4的结果是:

点赞