gnuplot

【gnuplot入門】グラフの装飾の基礎

こんにちは(@t_kun_kamakiri

本記事ではグラフプロット作成ソフトウェアのgnuplotのグラフの装飾の基礎について解説したいと思います。

本記事の対象者
  • gnuplotを少し使ったことがある人
  • gnuplotの装飾の基礎を学びたい方

グラフを美しき見せるためには装飾が必要です。

gnuplotでグラフの装飾を行うコマンドは「set」からはじまります。
gnuplotのコマンドは保存されるので、以下のコマンドで初期化していることを前提に話を進めます。

環境
DEXCS2022(gnuplot 5.4)

もっと色々なプロット方法を学びたい方はこちらのdemoをご参考ください。

プロットの ヘルプ

ここでは2次元グラフについてのグラフのスタイルをいくつか紹介します。
まずは、通常の線を書くことにします。

plotに関してどのようにオプションを加えていくかは、helpで確認することができます。

以下のように出てきます。

こちらは慣れかもしれませんが、実践を通してグラフの書き方の感覚をつかんでいく方が良いでしょう。

グラフの装飾の基本設定

グラフの装飾では

プロットのスタイル

グラフのプロットのスタイルはwith以降で指定することで可能です。

例えば以下の点だけを表示したい場合は以下のようなコマンドになります。

※点の数が少ない方がわかりやすいので「set sample」で10点のみにしています。

2次元グラフを作成するだけならこれだけ覚えておけばよいでしょう。

軸の範囲

軸の範囲を指定してグラフ化したい場合は以下のようにします。

もしくは「set」コマンドでも可能です。

こちらでも同じグラフができます。
ただし「set」コマンドを使ったことにより、これ以降の$x$,$y$軸の範囲は固定されてしまいます。

軸のラベル

$x$軸、$y$軸にラベルを付けることができます。

グラフ内に文字を入れることもできます。

setコマンドでやり直したい場合は、以下のようにします。

ちなみに、全ての設定を初期化したい場合はresetコマンドで初期設定にすることができます。

目盛りの設定

目盛りの指定もできます。

これでは$x$軸の範囲と目盛りが合っていないので、$x$軸の範囲も合わせて行う必要があります。

目盛りには自由に数値も文字も設定することができます。

以下の例は、

  • $x=2$に文字列の”2″
  • $x=5$に文字列の”test”

と指定しています。

矢印を書く

グラフ内に矢印を書くことがでkます。
また「set label」と組み合わせるとグラフ内に矢印で補足説明が可能になります。

グラフの凡例

複数グラフを載せた場合、グラフにタイトルを付けたい場合もあります。
デフォルトでは打ち込んだ関数やファイル名になりますが、「title」オプションで任意の名前にすることができます。

まずはデフォルトから、

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」の後に枠線に対応したビットの論理和を指定する必要があります。

ビットplotsplot
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の入門ということで以下のコマンドを紹介しました。

  1. プロットのスタイル:plot
  2. 軸の範囲:set xrange
  3. 軸のラベル:set xlabel
  4. 目盛りの設定:set xtics
  5. 矢印を書く:set arrow
  6. グラフの凡例:plot x title “title”
  7. グラフの凡例の位置変更:set key
  8. グラフのタイトル:set title
  9. グラフのサイズ:set size
  10. グラフの位置:set origin
  11. 余白:set bmargin
  12. 枠の設定:set border
  13. グラフのスタイル(装飾)の指定:set style line
  14. グラフのグリッド:set grid
  15. 複数の軸のグラフ:set x2label
  16. 複数のグラフ化:set multiplot

おすすめの参考書

COMMENT

メールアドレスが公開されることはありません。 が付いている欄は必須項目です