gnuplot:プロットコマンドの変数値と定義
Sep 24 2020
私はちょうど次のものに出くわしました:
gnuplotのマニュアルによると、プロット要素には定義が含まれている場合があります。
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以前に定義されたためにプロットされています。予想通り。2番目のグラフと最初のplotコマンドの場合、同じである必要がありますが、
y=2*x+1代わりにプロットされます(2回)。3番目のグラフでは、
a=1が明示的に指定されている場合、期待どおりにプロットされます。
gnuplota=1が2番目のグラフを無視するのはなぜですか?私は何かを誤解しましたか?
コード:
### 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=2 f(x), a=3 f(x)
unset multiplot
### end of code
結果:
回答
4 Ethan Sep 24 2020 at 11:29
あなたの診断は少しずれています。2番目のパネルでは、最初の紫色のプロットがa = 2プロットではなくa = 3プロットと重ね合わされています。
どうして?gnuplotは、実際にそれらの要素を描画する前に、完全なプロットのすべての要素を蓄積するためです。これには、コマンドラインを2回通過することが含まれます。上記のデータソースからデータを解析してロードするための1回のパス(たとえば、自動スケーリングに必要)、次に範囲全体の関数を評価するための2回目のパス(自動スケーリングによって決定された可能性があります)。ここでの最初のパスでは、aは2に設定され、次に3に設定されます。2番目のパスの開始時、aはまだ3であり、変更するための初期定義がない場合、f(x)が評価されるときに使用されます。 。