gnuplotのTips

拡張テキストモードによるフォントの設定

有名なグラフ描画ソフトであるgnuplotでは,ver.4.2以降で主な出力形式に拡張テキストモード(enhanced text mode)が指定できるようになっており,TeXのようにコマンドを追加して埋め込むことによりフォントの指定などを行います. しかし,マニュアル以外のまとまった情報はあまりないようなので,紹介ページを作ってみました.

拡張テキストモードが指定できる主な出力形式

拡張テキストモードの指定方法

gnuplotのver.5以降ではデフォルトで拡張テキストモードになっていますが,ver.4.xでは,起動したときは拡張テキストモードになっていませんので,拡張テキストモードにする必要があります.

出力形式を変更すると同時に拡張テキストモードを指定する場合は

      set term terminal enhanced
    

のようにset termによる出力形式の指定の後にenhancedを指定します. (上記のterminalには上記の出力形式のどれかを指定して下さい.)

出力形式を変更しないで拡張テキストモードを指定する場合は

      set termoption enhanced
    

と指定します. ただし,このtermoptionはそのときの出力形式に対して状態を記憶するスイッチなので,出力形式を変更する時はその都度拡張テキストモードを指定する必要があります.

拡張テキストモードの使い方

この拡張テキストモードはグラフのタイトルや軸のラベルなど,文字列を指定するほとんどのコマンドで使えます.

基本的なコマンドは以下です.

制御記号 意味
^ a^x 上付き文字
_ a_x 下付き文字
{} a_{12} 範囲の指定
/ {/Symbol ab} フォントの指定(常に{}で範囲を指定する必要があります)
@ a@^b_c 幅のないボックス
& &{abc} 指定した文字分のスペースを挿入
~ ~a/ 文字の重ね書き
\ '\^' シングルクオーテーションで指定した文字列内の制御文字の無効化(エスケープ)
\\ "\\^" ダブルクオーテーションで指定した文字列内の制御文字の無効化(エスケープ)

上記のうち,フォントの指定/では色々な指定ができます.

意味
{/Symbol p} フォントをギリシャ文字に指定
{/=30 x} フォントを30ptに指定
{/*3 red} フォントを通常の3倍の大きさに指定
{/Times=30 t} フォントを30ptのTimesに指定
{/Helvetica*2 y} フォントを2倍の大きさのHelveticaに指定
{/Symbol \245} "∞"を出力

また,文字の重ね書きでは~a{.8-}のように2番目の引数に{}を付けその最初に数値を指定することにより,重ね書きする文字を現在のフォントサイズを単位として上に移動させることができます. このため,重ね書きする文字が数字で始まる場合~a{1 2}のようにスペースを挿入する必要があり,垂直移動の必要がない場合には~a{0 2}のように0を指定する必要があります.

使用できるフォントの種類に関しては,そのターミナルが使用しているライブラリおよびOS(Unixの場合はX11)が持っているフォントに依存します. ただし,OSの持っているフォントのうちで拡張テキストモードで使用できるのは,フォント名に空白を含まないものだけです. また,ver.4.xでは斜体や太字のフォントの切り替えは,基本的に postscript でしか出来ませんが,ver.5以降では,/Times:Italic, /Helvetica:Bold, /Times:Bold:Italic のようにフォント名の後に :Bold や :Italic をつけることによって斜体や太字に切り替えられます. ただし,ArialやHelveticaのようなフォントでも斜体は :Oblique ではなく,常に :Italic であり,太字の斜体は :Bold:Italic のように両方を指定することになります.

ギリシャ文字ではアルファベットとの対応が分かりにくいものもあります. gnuplotにはps_guide.psというpostscript形式の一覧表が付属しており,拡張テキストモードを使う際には非常に参考になります. (Windowsの場合,最近のgnuplotではpdf形式に変換された一覧表がgnuplot\docs\psdoc\ps_guide.pdfにあります.) この一覧表を見れば分かりますが,\266で偏微分の記号,\321でナブラなど様々な記号を出力することができます. これらの記号は日本語のフォントにも入っていますが,英文ジャーナルの電子投稿などでは日本語フォントが使えませんので,そのような時に特殊な記号を出力したい場合にはSymbolを使わなければなりません.

なお,\を使った特殊文字において,他の出力形式ではシングルクオーテーションで囲ってもダブルクオーテーションで囲っても大丈夫ですが,emfの出力形式ではダブルクオーテーションで囲わなければならないようです.

上記のps_guide.pdfを見れば分かりますが,英文字のTimes-Romanとギリシャ文字のSymbolでは,052のアスタリスクや055のダッシュ(マイナス),174のバー(縦棒)のように少しだけ字体が異なるものがあります. これらのフォントはいずれも数式の中ではSymbolの方が好ましいので,面倒ですがフォントをその都度切り替える方が良いでしょう. また,Symbolフォントの中には文字の上につける横線用のフォント(140)もあります.

gnuplotから話がそれますが,Unixのドローツールであるtgifを使う際にも上記の一覧表は便利に使うことができます. tgifのテキストボックスでは,<ESC>キーを入力すると次の入力は7-bitが立った状態となり,上記の一覧表で200が足された状態になりますので,例えば,シンボルフォントで<ESC>と%と入力すると"∞"を得ることができます.

角度を座標軸に取る場合のTips

gnuplotでは各軸の目盛を指定する際,値とラベルをそれぞれ指定する方法があります. それを使うと,角度を座標軸に取る場合に以下のように範囲と目盛を設定すると見やすいグラフとなります.(例はx軸の場合)

      set xrange [-pi:pi]
      set xtics ("-p" -pi, "-p/2" -pi/2, "0" 0.0, "p/2" pi/2, "p" pi) font "Symbol"
    

Windows版gnuplotにおけるTips

作業ディレクトリ

Windows版のgnuplotでは起動直後のカレント・ワーキング・ディレクトリがWindows版gnuplotの実行ファイルであるwgnuplot.exeがあるディレクトリとなっているので,このままだとプログラムファイルとデータファイルが入り混じることになります.

そのため,gnuplot.iniを編集して,起動直後の作業ディレクトリをマイ ドキュメントの実体であるC:\Documents and Settings\<ユーザ名>\My Documentsに移動するようにすれば良いのですが,このgnuplot.iniは隠しフォルダであるC:\Document and Settings\<ユーザ名>\Application Dataというフォルダ内に作る必要があり,Windowsに慣れている人以外にはあまりおすすめできる方法ではありません.

よって,もっと簡単な方法として,デスクトップやスタートメニューのWgnuplotのショートカットを右クリックして「プロパティ」を選び,作業フォルダを以下に変更すると良いでしょう.

      %HOMEPATH%\My Documents
    

なお,Windows Vista以降の場合には以下とします.

      %HOMEPATH%\Documents
    

スクリプトファイル(コマンドファイル)

gnuplotの命令を書いたスクリプトファイルを作るときに拡張子をpltにしておくと,gnuplotのメニューの「ファイルを開く」や「開く」ボタンでスクリプトファイルを選ぶことができます. この「開く」はloadコマンドに対応しているので,gnuplotでファイルを開くとそのファイルに書いてある命令を順番に実行します.

Windowsへのフォントの別名の登録

上記のようにver.4.xの拡張テキストモードではフォント名に空白があるフォントを用いることができません. そのため,以下の手順でレジストリを編集する事によってフォントの別名を登録することができます.

  1. レジストリエディタを立ち上げて,\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontSubstitutesに移る.
  2. 新規→文字列値(S)で新しい値を追加し,値の名前をTimes-Boldとする.
  3. 値のデータとして,Times New Roman Boldを入力する.
  4. 2, 3と同様にして,名前がTimes-BoldItalic,データがTimes New Roman Bold Italicの値を追加する.
  5. 4と同様にして,名前がTimes-Italic,データがTimes New Roman Italicの値を追加する.
  6. レジストリエディタを終了し,Windowsを再起動する.

なお,レジストリの編集はWindowsに十分に詳しい方が自己責任で行ってください. 問題が生じても筆者は一切関知しません.

上記の手順の後,レジストリエディタを立ち上げると以下の図のようになります. (追加した部分を青で示しており,上記のついでにTimes-Romanも登録しています.)

レジストリにTimes-Bold, Times-BoldItalic, Times-Italic, Times-Romanを登録

このようにフォントの別名を登録しておくとWindowsとemfの拡張テキストモードで,postscriptのようにTimes-Bold, Times-BoldItalic, Times-Italicを使用することができます. なお,必要があれば同様の手順でArial-Bold, Arial-BoldItalic, Arial-Italicを登録してもよいでしょう. ただし,以下の注意点があります.

Last update: 2016.7.29

[機械力学研究室ホームページに戻る]   [数値計算に関する情報のページに戻る]