gnuplotでテキストを扱う時のシングルクォート、ダブルクォートなどについて
gnuplotに限らず、プログラミング言語ではテキストを扱う場合にはテキストをシングルクォートやダブルクォートで囲います。そして多くの場合、シングルクォートとダブルクォートでは機能がやや異なり、それはgnuplotでも同じです。
実際、gnuplotではどのような使われ方をするのか見てみることにします。
これを1つのテキストで表すには改行を「\n」で表しダブルクォートを用いて
となります。
しかしこれをシングルクォートを用いて
とした場合は「\n」はバックスラッシュとnと文字通りに扱われて以下のようにそのまま出力されます。
さて制御文字の扱いの違いがあるのは分かったのですが、gnuplotではシングルクォートにおいてもすべてが文字として扱われない場合もあります。 次に説明するenhanced textを使う場合がそれです。
のようにテキストを上付きや下付きなどの装飾をするものです。出力端末の設定でこれを使うか使わないか指定出来るのですが、通常は使える場合は使う設定になるようです。
そして、シングルクォートを使う場合でもこのenhanced textの指定は有効となります。
(もちろんダブルクォートを使う場合でも)
単純なようでも話がややこしく感じるのですが、実際にはlabelをセットする際に「noenhanced」オプションも合わせて使うなどで対処すればいいかと思います。
例えばグラフのタイトルにdateコマンドで日付や時刻を入れたい場合、
とします。すると以下のようにdateコマンドの実行結果がタイトルに使われることになります。
ここではタイトルとして用いるためテキストとして受け取る必要があるので、バッククォートをさらにダブルクォートで囲って使っています。またシングルクォートで囲った場合ではコマンドではなく文字として扱われるので、タイトルが「`date`」となってしまうだけです。
その他、gnuplot関連のブログ記事
Amazon プログラミング関係の書籍など
実際、gnuplotではどのような使われ方をするのか見てみることにします。
gnuplotで使えるクォートについて
まずgnuplotで使えるクォートは3つあります。3つはそれぞれ- シングルクォート
- ダブルクォート
- バッククォート
シングルクォートとダブルクォートの違い
シングルクォートとダブルクォートで何が違うのかというと、制御文字の扱いが変わってきます。以下の2行の文章を例にすると
Hello world!
Today is a good day.
これを1つのテキストで表すには改行を「\n」で表しダブルクォートを用いて
"Hello world!\nToday is a good day."
となります。
しかしこれをシングルクォートを用いて
'Hello world!\nToday is a good day.'
とした場合は「\n」はバックスラッシュとnと文字通りに扱われて以下のようにそのまま出力されます。
さて制御文字の扱いの違いがあるのは分かったのですが、gnuplotではシングルクォートにおいてもすべてが文字として扱われない場合もあります。 次に説明するenhanced textを使う場合がそれです。
enhanced textの場合
enhanced textの解説はまた別の機会にするとして、簡単に説明すると
y = x2
のようにテキストを上付きや下付きなどの装飾をするものです。出力端末の設定でこれを使うか使わないか指定出来るのですが、通常は使える場合は使う設定になるようです。
そして、シングルクォートを使う場合でもこのenhanced textの指定は有効となります。
(もちろんダブルクォートを使う場合でも)
単純なようでも話がややこしく感じるのですが、実際にはlabelをセットする際に「noenhanced」オプションも合わせて使うなどで対処すればいいかと思います。
バッククォート
ここまでシングルクォートとダブルクォートの違いについて説明してきましたが、最後に残ったバッククォートを使う場合について説明していきます。始めにバッククォートは機能が特殊と書きましたが、それはバッククォート内に書いたシステム側のコマンドが実行されその出力が挿入されるためです。例えばグラフのタイトルにdateコマンドで日付や時刻を入れたい場合、
gunuplot> set title "`date`"
とします。すると以下のようにdateコマンドの実行結果がタイトルに使われることになります。
ここではタイトルとして用いるためテキストとして受け取る必要があるので、バッククォートをさらにダブルクォートで囲って使っています。またシングルクォートで囲った場合ではコマンドではなく文字として扱われるので、タイトルが「`date`」となってしまうだけです。
最後に
gnuplotでは使う目的がないとあまりテキストを使わないので、たまにテキストを使おうとすると地味にハマるポイントが多いです。しかし、クォートの使い方は他のプログラミング言語と同様ですし、バッククォートに関してもbashのようなシェルでも同様な機能があるので、そういったものに慣れれば自然に使えるようになるでしょう、たぶん。その他、gnuplot関連のブログ記事
Amazon プログラミング関係の書籍など
コメント
コメントを投稿