我正在尝试使用logscale在gnuplot中绘制一个图。我有50000个数据点。 起初我以这种方式拟合情节。
f(x) = b + m*x
fit f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using 1:2 via m,b
我有坡度值。然后我试着得到不同范围的斜率值,如下所示。
fit [30000:50000] f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using 1:2 via m,b
上面的代码工作正常。在接下来的尝试中,我试过了,
f(x) = b + m*x
fit f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using (log($1)):(log($2)) via m,b
以上工作也很好。我得到斜率值。然后我试着选择下面的xrange。这是我有问题的地方。它不起作用。
fit [500:5000] f(x) "xyMSD-all-mal-cel-iso-bcm-thermo2.dat" using (log($1)):(log($2)) via m,b
有没有办法实现这个目标? 感谢任何帮助
答案 0 :(得分:2)
范围必须符合表达式,在您的情况下,它是日志值。因此,请确保日志值在范围内。例如,如果($1):($2)
的范围为[500:5000]
,则(log($1)):(log($2))
的相应范围应为[2.69:3.69]
。
答案 1 :(得分:1)
Gnuplot首先在数据上使用表达式。限制范围是第二步,因此在这种情况下,所需数据点的对数必须在xrange
中。
并且不要忘记: logscale
使用基于10的对数,但log(x)
或log($1)
表示基于'e'的logaritm(约2.7183) )。与logscale
使用函数log10(x)
(或log(x)/log(10)
)保持一致。
PS:我知道原来的问题之前已经得到了回答,但我没有足够的声望来附加我对log()
函数的有用评论作为评论。