28.3 2 次元グラフのスタイルの設定

前節で簡単にグラフの描き方を説明しましたが,それだけでは見やすいグラフは作れません.グラフを見やすくするための様々な設定方法を理解しましょう.

グラフのタイトル

たとえば y=sin(x) のグラフに “graph of y=sin(x)” というタイトルをつけてみます.まず最初に sin(x) のグラフを出しておきます.

plot sin(x)return2

このグラフにタイトルを設定するには次のようにします.
set title "graph of y=sin(x)"return2

これでグラフにタイトルが設定されました.しかしタイトルを設定しただけでは画面に表示されないので,
replotreturn2

と入力して再描画させます.すると次のような,タイトル付きのグラフが描画されるはずです.

設定を変更したら,忘れずに replot をしましょう.

グラフの表示範囲

グラフの表示範囲を指定するには set コマンドで xrange/yrange を設定します.たとえば上のように y=sin(x) のグラフを描いた後に

set xrange [0:10]return2
replotreturn2

と入力すると,x 軸の左端が 0 , 右端が 10 になります.

引き続き
set yrange [-1.5:1.5]return2
replotreturn2

と入力すると y 軸の表示範囲が -1.5 から 1.5 までになります.このように gnuplot では,グラフのそれぞれの軸ごとに表示範囲を [a:b] の形で指定します.

線の色

線の色を変えるには,plot コマンドをつけるときに linecolor というオプションを指定します.たとえば

plot sin(x) linecolor rgbcolor "blue"return2

と入力すると,次のように青色でグラフが描かれます.

linecolor は lc と省略できます.入力が面倒な人は次のように打っても構いません.
plot sin(x) lc rgbcolor "blue"return2

指定できる色の一覧を見るには
show colornamesreturn2

と入力します.また色名で指定する以外にも
plot sin(x) linecolor rgbcolor "#0000FF"return2
replotreturn2

のように光の 3 原色の値を 16 進数で 256 段階で指定することもできます.色を決める仕組みについては hwb17.4.9 補足 を見てください.

設定のリセット

上の 2 つの例でも分かりますが,一度 set コマンドで設定した内容は再設定しない限りずっと引き継がれます.全ての設定をリセットするには reset コマンドを使います.たとえば

resetreturn2
replotreturn2

と入力すると,標準の設定でサインカーブが描かれます.今後も設定をリセットしたくなったら reset コマンドを使ってください.

プロットスタイル

ここから先は,前節 hwb28.2 簡単なグラフの描き方 でも用いたファイル sampledata1.txt を使って説明します.前節の説明を参考にダウンロードをしておいてください.
既に見たように

resetreturn2
plot "sampledata1.txt" using 1:2return2

とすると sampledata1.txt の 1 列目を x 座標,2 列目を y 座標としてデータがプロットされます.データファイルの 1 列目は月,2 列目は平均気圧 (hPa) なので,このグラフは 2011 年の東京における月平均気圧を表します.

デフォルトではこのように点がプロットされますが,plot コマンドを呼ぶときに with というオプションをつけると,線の種類を変更することができます.たとえば
plot "sampledata1.txt" using 1:2 with linesreturn2

とすると折れ線グラフが表示されます.

with lines は次のように w l と省略できます.
plot "sampledata1.txt" using 1:2 w lreturn2

with lines のかわりに with boxes を使い
plot "sampledata1.txt" using 1:2 with boxesreturn2

とすると,今度は棒グラフになります.

これ以外に良く使われるオプションとしては with points (点) , with linespoints (線で結び,さらにプロットした点に印をつける) , with impulses (インパルス) があります.

軸の目盛り

軸の目盛り幅を変えるには xtics / ytics を設定します.たとえばすぐ上の棒グラフを描いた状況で

set xtics 1return2
replotreturn2

と入力すると,x 軸の刻み幅が 1 でグラフが描かれます.

また普通の 1 目盛りを細分するような小さい目盛りを描くこともできます.たとえば上の出力に引き続き
set mytics 2return2
replotreturn2

と入力すると,y 軸の 1 目盛りを 2 等分する小さい目盛りが現れます.このように set mxtics / mytics の後ろに等分する数を指定することで,小さい目盛りが描けます.

また,x 軸と y 軸の目盛りが左と下だけでなく右と上にも描かれています.これを消すには次のようにします.
set xtics nomirrorreturn2
set ytics nomirrorreturn2
replotreturn2

すると右および上の目盛りが消えてすっきりします.

軸のラベル

軸の見出しをつけるには set コマンドで xlabel/ylabel を指定します.たとえば x 軸のラベルを month, y 軸のラベルを air pressure (hPa) とするには次のように入力します.

set xlabel "month"return2
set ylabel "air pressure (hPa)"return2
replotreturn2

すると軸のラベルがグラフに入ります.

今は x, y 軸両方のラベルを同時指定しましたが,もちろん片方だけ指定することもできます.

左右の y 軸を使う

plot コマンドを使う際に axis オプションを指定することで左右の y 軸を使って異なる 2 本のグラフを重ねることができます.これを使って,平均気圧のグラフに最高気温のグラフを重ねてみましょう.次のように入力してください.

set y2range [10:40]return2
plot "sampledata1.txt" using 1:2 axis x1y1 with boxes, "sampledata1.txt" using 1:4 axis x1y2 with linesreturn2

sampledata1.txt の 4 列目は最高気温なので,こうすると平均気圧と最高気温を重ねて 1 つのグラフに描くことができます.

このように plot で axis x1y1 と指定すると左側の y 軸が使われ, axis x1y2 を指定すると右側の y 軸が使われます.今は使いませんでしたが x2 軸は上の x 軸です.
軸のラベルや目盛りなどは,もちろん y1 軸と y2 軸で別々に設定することができます.たとえば
set y2tics 5return2
set y2label "temperature (degrees Celsius)"return2
replotreturn2

と入力することで右側の軸にもラベルと目盛りが振られ,より見やすいグラフになります.

凡例

グラフの右上ある凡例は,デフォルトでは何をプロットしたかが書かれます.これを変えるには plot コマンドを呼ぶ際に title オプションをつけます.たとえば

plot "sampledata1.txt" using 1:2 axis x1y1 with boxes title "air pressure", "sampledata1.txt" using 1:4 axis x1y2 with lines title "temperature"return2
replotreturn2

とすると,それぞれの凡例に air pressure と temperature というタイトルがつきます.

凡例の位置を変えるには set コマンドで key を設定します.たとえば
set key outsidereturn2
set key top leftreturn2
replotreturn2

とすると,1 行目の set key outside で凡例の位置がグラフ外に指定され,続く 2 行目で凡例の位置が左上になります.

凡例の位置を枠内に戻すには set key inside と入力します.また,枠の内外の指定と上下左右の指定は独立に行うことができます.