【问题标题】:xrange limiting in logscale plot in gnuplotgnuplot中对数刻度图中的xrange限制
【发布时间】:2016-04-19 14:29:37
【问题描述】:

我正在尝试使用对数刻度在 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

有什么方法可以实现吗? 感谢任何帮助

【问题讨论】:

  • "它不起作用" -- 什么不起作用? gnuplot 会给你一个错误吗?如果有,是什么?
  • 意味着我没有得到指定范围之间的拟合。例如 x 范围为 [30000:50000]。当我执行脚本时,我收到错误消息 { Read 9999 points Skipped 9999 points outside range [x=30000:50000] No data to fit }

标签: gnuplot


【解决方案1】:

范围必须适合表达式,在您的情况下是日志值。因此,请确保日志值在范围内。例如,如果($1):($2) 的范围是[500:5000],那么(log($1)):(log($2)) 的对应范围应该类似于[2.69:3.69]

【讨论】:

    【解决方案2】:

    Gnuplot 首先对您的数据使用表达式。限制范围是第二步,因此在这种情况下,所需数据点的对数必须在 xrange 中。

    别忘了: logscale 使用基于 10 的对数,但 log(x)log($1) 表示基于“e”的对数(约 2.7183)。要与logscale 协调使用函数log10(x)(或log(x)/log(10))。

    PS:我知道原来的问题之前已经回答过了,但我没有足够的声望来附加我对log() 函数的有用评论作为评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 2015-09-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多