gnuplotで文字列変数に入れてある文をコマンドとして差し込む方法(@を変数名の前に付ける)
gnuplotで文字列変数と言えば、文字列としてファイル名、ラベルやタイトルなどで使われます。今回紹介するのはそれとはやや異なり、コマンド文に文字列変数を差し込んで(置換して)使うという方法です。文字列変数だけでは使える範囲が限られますが、紹介する方法ではもっと適用範囲を広げて文字列の差し込みとして使うことが出来ます。
例として
というコマンド文で見てみることにします。
ここで文字列変数text01を以下のように作成します。
内容は見て分かるようにコマンド文のファイル名の後ろの部分としました。
そしてこのtext01をコマンド文として使うときには変数の先頭に"@"を付けて
とします。こうすることで、コマンド文を実行するときに@text01が中身の文字列として置換されます。
また、コマンド文の一部だけ置換するのでは無く、コマンド文の一行全部も同じように扱うことも出来ます。あまり意味があるか分かりませんが、以下のようなことが出来るというわけです。
この機能はインタラクティブモードよりもスクリプトファイルを書く時に便利でしょう。
コマンド文の中の設定部分を各パーツごとに分けて変数として作っておけば、後々手を加えるときに編集箇所を分かりやすくしておくことが出来るというわけです。
例としては以下のようになります。
こうして分けて書いておくことで、プロットの手直しをするときに編集しやすくなると思います。
なお、上記ではファイル名を扱う変数fは、置換ではなくて文字列変数として最後のコマンドで用いています。変数にファイル名の指定するときにクォートを多重に使えばこれも@を付けて使えますが、何をどう使うかは状況に応じて適宜使い分けるようにして下さい。
その他、gnuplot関連のブログ記事
例として
gnuplot> plot 'test01.dat' using 1:4 with linespoints
というコマンド文で見てみることにします。
ここで文字列変数text01を以下のように作成します。
gnuplot> text01 = "using 1:4 with linespoints"
内容は見て分かるようにコマンド文のファイル名の後ろの部分としました。
そしてこのtext01をコマンド文として使うときには変数の先頭に"@"を付けて
gnuplot> plot 'test01.dat' @text01
とします。こうすることで、コマンド文を実行するときに@text01が中身の文字列として置換されます。
また、コマンド文の一部だけ置換するのでは無く、コマンド文の一行全部も同じように扱うことも出来ます。あまり意味があるか分かりませんが、以下のようなことが出来るというわけです。
gnuplot> c = "plot 'test01.dat' using 1:4 with linespoints"
gnuplot> @c
この機能はインタラクティブモードよりもスクリプトファイルを書く時に便利でしょう。
コマンド文の中の設定部分を各パーツごとに分けて変数として作っておけば、後々手を加えるときに編集箇所を分かりやすくしておくことが出来るというわけです。
例としては以下のようになります。
f = "test01.csv"
u = "using 1:4"
t = "title 'hogehoge'"
l = "'function sin' at 3,21 boxed"
set label 1 @l
plot f @u @t
こうして分けて書いておくことで、プロットの手直しをするときに編集しやすくなると思います。
なお、上記ではファイル名を扱う変数fは、置換ではなくて文字列変数として最後のコマンドで用いています。変数にファイル名の指定するときにクォートを多重に使えばこれも@を付けて使えますが、何をどう使うかは状況に応じて適宜使い分けるようにして下さい。
その他、gnuplot関連のブログ記事
コメント
コメントを投稿