論文に使えるグラフを作る(その3)

その2の続きです。

その2で作った上のグラフを更に改善していきます。ここまでのスクリプトは以下のとおりです。

## Step3: ポイントを変える


set xlabel "{/=30 {/Arial-Italic T} (K)}"
set ylabel "{/=30 {/Symbol-Oblique r}_{/Arial-Italic c} ({/Symbol mW}cm)}"

plot "data1.dat" with points pt 7 lc 3 title "data" # ポイント: ●、 色: 青


# 出力フォーマットとオプションの指定
set terminal postscript eps color enhanced "Arial" 25
# 出力ファイル名の指定
set output "step2b.eps"
# グラフ再描画
replot

# フォーマットと出力のリセット
set output
set terminal win

Step 4: ラベルや矢印を加える

文字をグラフ中に書くにはset labelを使います。このコマンドの詳しい使い方はグラフに文字を書くを参照してください。また、矢印はset arrowで表示させます。矢印については矢印の描画と矢印のスタイルを参照してください。

まず、データに異常のある温度(2.4K; ここでは超伝導臨界温度Tcのつもりです)を矢印と共に表示します。

## Step4: 文字や矢印を表示する


set xlabel "{/=30 {/Arial-Italic T} (K)}"
set ylabel "{/=30 {/Symbol-Oblique r}_{/Arial-Italic c} ({/Symbol mW}cm)}"


# Tcの値を変数に保存
Tc = 2.4

# ラベルの表示
set label 1 sprintf("{/=30 {/Arial-Italic T}_c = %.1f K}", Tc) center at first Tc,24

# 矢印のスタイル設定
set style arrow  1 size graph 0.02,20 filled linewidth 2

# 矢印の表示
set arrow 1 as 1 from first Tc,20 to first Tc,8


plot "data1.dat" with linespoints pt 7 lc 3 title "data" # ポイントを線でつなぐ


# 出力フォーマットとオプションの指定
set terminal postscript eps color enhanced "Arial" 25
# 出力ファイル名の指定
set output "step4a.eps"
# グラフ再描画
replot

# フォーマットと出力のリセット
set output
set terminal pop

上のスクリプトでは、Tcの値をラベル表示や矢印表示に何度も使用するので、まず変数Tcに保存しています。次に、文字をset labelコマンドを使って表示しています。上の例ではTcの値も表示するため、sprintf()関数を用いて文字列に変数Tcの値を入れ込んでいます。文字列はデータの座標Tc,24に中央ぞろえで表示させるため、centerオプションを使っています。

矢印はデフォルトではあまりかっこよくないので、矢印のスタイルを設定します。ここでは矢印スタイル1として、矢印の頭の大きさがグラフの横の長さの0.02倍、頭先端の角度が20×2度で、矢印の頭が塗りつぶされているスタイルを作製しました。矢印のスタイルについて詳しくはこちらを参考にしてください。

そして、set arrowコマンドで矢印を表示させています。ここでも先に保存した変数Tcの値を利用しています。

結果的に下のような出力が得られました。

さらに、物質名(仮にAB2C3とします)や測定条件(ここでは電流Iが1mAで磁場Hが0Oeであるとします)をグラフの右上部に表示しましょう。

## Step4: 文字や矢印を表示する


set xlabel "{/=30 {/Arial-Italic T} (K)}"
set ylabel "{/=30 {/Symbol-Oblique r}_{/Arial-Italic c} ({/Symbol mW}cm)}"

# Tcの値を変数に保存
Tc = 2.4

# ラベルの表示
set label 1 sprintf("{/=30 {/Arial-Italic T}_c = %.1f K}", Tc) center at first Tc,24
set label 2 "{/=30 AB_2C_3, {/Arial-Italic I} = 1 mA, {/Arial-Italic H} = 0 Oe}" right at graph 0.99,1.05

# 上部マージンの調整
set tmargin 2

# 矢印のスタイル設定
set style arrow  1 size graph 0.02,20 filled linewidth 2

# 矢印の表示
set arrow 1 as 1 from first Tc,20 to first Tc,8

plot "data1.dat" with linespoints pt 7 lc 3 title "data" # ポイントを線でつなぐ


# 出力フォーマットとオプションの指定
set terminal postscript eps color enhanced "Arial" 25
# 出力ファイル名の指定
set output "step4b.eps"
# グラフ再描画
replot

# フォーマットと出力のリセット
set output
set terminal pop

上のスクリプトではset label 2として測定条件の文字列を表示させています。今度はグラフを基準にした位置に表示するので、graph座標系(グラフの左下を0,0右上を1,1とする座標系)を使用してgraph 0.99,1.05と指定します。この点を基準にして文字列を右詰(rightオプション)にすることで、文字列の長さに関わらずグラフ右上に文字列を表示させることができます。この文字列表示用のスペースを確保するためにset tmargin 2として上部マージンを調節しています。この調整は一見必要ないようにも思えますが、調整しないとPostScriptの画像のサイズを規定するBounding Boxから文字列がはみ出してしまいます。すると、TeX等でグラフを論文に貼り付ける際に図と本文が近くなりすぎたり重なってしまう危険性があります。TeXなどで使用する図を作る際にはBounding Box内におさまるような図を作るように心がけた方がいいと思います。

なお、GSviewを使用している場合はメニューの「Options → Show Bounding Box」にチェックすることでBounding Boxを表示させることが出来ます。上の画像でBounding Boxを表示させた例が下図です。破線で示されているBounding Boxにきちんとグラフ全体が収まっていることがお分かりいただけると思います。