こんにちは(@t_kun_kamakiri)
本記事ではグラフプロット作成ソフトウェアのgnuplotのグラフの装飾の基礎について解説したいと思います。
- gnuplotを少し使ったことがある人
- gnuplotの装飾の基礎を学びたい方
グラフを美しき見せるためには装飾が必要です。
gnuplotでグラフの装飾を行うコマンドは「set」からはじまります。
gnuplotのコマンドは保存されるので、以下のコマンドで初期化していることを前提に話を進めます。
環境
DEXCS2022(gnuplot 5.4)
もっと色々なプロット方法を学びたい方はこちらのdemoをご参考ください。
プロットの ヘルプ
ここでは2次元グラフについてのグラフのスタイルをいくつか紹介します。
まずは、通常の線を書くことにします。
plotに関してどのようにオプションを加えていくかは、helpで確認することができます。
以下のように出てきます。
こちらは慣れかもしれませんが、実践を通してグラフの書き方の感覚をつかんでいく方が良いでしょう。
グラフの装飾の基本設定
グラフの装飾では
プロットのスタイル
グラフのプロットのスタイルはwith以降で指定することで可能です。
例えば以下の点だけを表示したい場合は以下のようなコマンドになります。
※点の数が少ない方がわかりやすいので「set sample」で10点のみにしています。
2次元グラフを作成するだけならこれだけ覚えておけばよいでしょう。
軸の範囲
軸の範囲を指定してグラフ化したい場合は以下のようにします。
こちらでも同じグラフができます。
ただし「set」コマンドを使ったことにより、これ以降のx,y軸の範囲は固定されてしまいます。
軸のラベル
x軸、y軸にラベルを付けることができます。
ちなみに、全ての設定を初期化したい場合はresetコマンドで初期設定にすることができます。
目盛りの設定
目盛りの指定もできます。
これではx軸の範囲と目盛りが合っていないので、x軸の範囲も合わせて行う必要があります。
目盛りには自由に数値も文字も設定することができます。
以下の例は、
- x=2に文字列の”2″
- x=5に文字列の”test”
と指定しています。
矢印を書く
グラフ内に矢印を書くことがでkます。
また「set label」と組み合わせるとグラフ内に矢印で補足説明が可能になります。
グラフの凡例
複数グラフを載せた場合、グラフにタイトルを付けたい場合もあります。
デフォルトでは打ち込んだ関数やファイル名になりますが、「title」オプションで任意の名前にすることができます。
まずはデフォルトから、
とします。
グラフの凡例の位置変更
グラフのタイトルがグラフと重なったりする場合があります。
機能 | コマンド |
キーを表示する | set key |
キーを表示しない | set nokey |
キーの状態を見る | show key |
下記のように色々と設定は可能です。
機能 | オプション |
キーの場所を左上にする | left top |
キーの場所を左下にする | left bottom |
キーの場所を右上にする | right top |
キーの場所を右下にする | right bottom |
キーの場所を画面外上段にする | top outside |
キーの場所を画面外下段にする | bottom outside |
キーの場所をグラフの下側にする | below |
キーが表示される場所の座標を指定する | at x,y |
線の見本の長さにm文字分の長さを追加する | samplen n |
説明を線の右側に付ける | noreverse |
説明を線の左側に付ける | reverse |
線の説明を箱で囲む | box |
線の説明を箱で囲まない | nobox |
文字が表示される部分の前側にm文字分の空白を追加する | width w |
グラフが複数あるとき (7.2節参照), 説明の文字を左にそろえる | Left |
グラフが複数あるとき説明の文字を右にそろえる | Right |
キー全体に標題をつける | title 'キーの標題 |
色々と設定方法がありますが、例えば座標位置でタイトルの場所を指定したい場合は以下のようにします。
以下のように「horizontal」を入れることで各グラフのタイトルが横並びになります。
グラフのタイトル
グラフの頭にタイトルを付けることができます。
グラフのサイズ
キャンバスに対してプロットの範囲変更することができます。
- square:x,y軸の長さを等しくする
nosquare:squareの設定を解除 - ratioを指定するとy/xの比率でサイズを指定
- size 0.5, 0.4:50[%]×40[%]
例えば以下のようにするとプロット範囲が50[%]×40[%]になりますう。
プロット範囲の位置はデフォルトで次に示す原点(set origin 0,0)になっています。
グラフの位置
プロットの位置を指定するには「set origin」を使います。
「set origin」によるプロット範囲の位置の指定は「set multiplot」で複数のグラフを配置するときに有効なコマンドです。
余白
プロットの枠をキャンバスに対して余白を持たせる場合のコマンドが以下のコマンドです。
- set bmargin 10:プロット枠の下側10文字分
- set tmargin 8:プロット枠の上側8文字分
- set rmargin 20:プロット枠の右側6文字分
- set lmargin 20:プロット枠の左側4文字分
枠の設定
枠線をアレンジすることもできます。
「set border」の後に枠線に対応したビットの論理和を指定する必要があります。
ビット | plot | splot |
1 | 下 | 底の左手前 |
2 | 左 | 底の左後ろ |
4 | 上 | 底の右手前 |
8 | 右 | 底の右後ろ |
16 | 鉛直左 | |
32 | 鉛直後ろ | |
64 | 鉛直右 | |
128 | 鉛直の手前 | |
256 | 天井の左後ろ | |
512 | 天井の右後ろ | |
1024 | 天井の左手前 | |
2048 | 天井の右手前 |
以下のようにすると枠線を消すことができます。
フォントサイズの変更
フォントサイズを変更したい場合の例を示します。
まずはデフォルトでグラフを表示した場合は以下となります。
ちょっとフォントサイズが小さい気がしますので以下のように変更します。
フォントが大きすぎるとyラベルの文字が目盛りと重なったりするので、グラフの左枠に余白を設けて(set lmargin)、yラベルと少し左にオフセット(set ylabel “sin(x)” offset -5,0)すればいい感じになります。
グラフのスタイル(装飾)の指定
plotの記述に装飾を書くと煩雑になるので以下のようにスタイルを保存して使うことができます。
グラフのグリッド
グラフにグリッドを入れることができます。
x軸の0とy軸の0に点線を描きたい場合は以下のようにします。
複数の軸のグラフ
複数の軸を指定して1つのグラフにすることができます。
複数のグラフ化
複数のグラフ化には「set multiplot」コマンドを使います。
- layout 3,2:3行2列のグラフ
- columnsfirst:優先して行方向に並べていく
アニメーション作成
最後にアニメーション作成のコマンドを示しておきます。
アニメーション作成はgifファイル形式で作成します。
次の画像を表示するまでに0.001×4秒静止するようにしています。
for文に関して{}で改行して見やすくしても良いですが、コマンドラインで書くときは上記のように1行で書くことになります。(※\で改行はできます)
では、作成された「test.gif」を開いてみましょう。
アニメーション作成になっていますね。
もちろん本記事のグラフの装飾を駆使すれば、お好みの装飾でアニメーション作成ができます。
まとめ
本記事ではgnuplotの入門ということで以下のコマンドを紹介しました。
- プロットのスタイル:plot
- 軸の範囲:set xrange
- 軸のラベル:set xlabel
- 目盛りの設定:set xtics
- 矢印を書く:set arrow
- グラフの凡例:plot x title “title”
- グラフの凡例の位置変更:set key
- グラフのタイトル:set title
- グラフのサイズ:set size
- グラフの位置:set origin
- 余白:set bmargin
- 枠の設定:set border
- グラフのスタイル(装飾)の指定:set style line
- グラフのグリッド:set grid
- 複数の軸のグラフ:set x2label
- 複数のグラフ化:set multiplot