微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

gnuplot:plot命令中的变量值和定义

如何解决gnuplot:plot命令中的变量值和定义

我偶然发现了以下内容

根据gnuplot手册,plot元素可能包含定义。

Syntax: 

      plot {<ranges>} <plot-element> {,<plot-element>,<plot-element>}

Each plot element consists of a deFinition,a function,or a data source 
together with optional properties or modifiers: 

      plot-element:
           {<iteration>}
           <deFinition> | {sampling-range} <function> | <data source>
                        | keyentry
           {axes <axes>} {<title-spec>}
           {with <style>}

检查以下示例:

  • 对于第一个图形,绘制了y=x+1,因为a=1的定义较早。符合预期。

  • 对于第二个图形和第一个绘图命令,它应该相同,但是绘制y=2*x+1(两次)。

  • 在第三个图中明确指定a=1时,将按预期方式绘制。

为什么gnuplot忽略第二张图的a=1? 我误会了吗?

代码

### deFinitions in plot command
reset session

a = 1
b = 1
f(x) = a*x + b

set yrange[-40:40]
set multiplot layout 1,3
    plot     f(x)
    plot     f(x),a=2 f(x),a=3 f(x)
    plot a=1 f(x),a=3 f(x)
unset multiplot
### end of code

结果:

enter image description here

解决方法

您的诊断略有下降。在第二个面板中,第一个紫色图与a = 3图而不是a = 2图叠加。

为什么?因为gnuplot在实际绘制任何图元之前会先累积完整图的所有元素。这涉及在命令行上进行两次传递。一遍分析和加载来自提到的任何数据源的数据(例如,需要自动缩放),然后第二遍评估范围内的任何函数(可能由自动缩放确定)。在第一遍过程中,将a设置为2,然后设置为3。在第二遍过程的开始,a仍为3,并且在没有初始定义可更改的情况下进行更改,这是计算f(x)时使用的定义。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。