gnuplotって?
gnuplot(ニュープロット しばしばグニュープロットとも)は、2次元もしくは3次元のグラフを作成するためのアプリケーションソフトウェアである。インターネットにおいて無料で配布されているフリーウェアである。1986年に最初のバージョンが開発された。現在では、Linux、UNIX、Windows、macOSなどの多くのオペレーティングシステム (OS) に対応したバージョンが開発されている。(Wikipediaより)
昔からあるグラフ作成ソフト。大抵のOSで動くので重宝する。Excelとかと違ってフリーで、レポートなどに便利なepsファイル出力もできる。
gnuplotのインストール
$ sudo apt install gnuplot
管理者パスワードは入力しよう。
Windowsなら
gnuplot - Browse /gnuplot at SourceForge.netから最新版のディレクトリを開いて対応するWindows用のインストーラをダウンロード。
ダウンロードできたら実行してインストールしておしまい。特別難しいことはないはず。
MacはもってないのでわからないけれどLinuxと似た感じなのかな。
使い方
Windowsならコマンドプロンプト、Linuxならターミナルなり端末なりを開いてgnuplot
と入力して起動する。
基本となる描画
gnuplot > plot sin(x) gnuplot > replot
式やプロットすることができる。replot
はまんまの意味でプロットし直し。後述する設定とかをいろいろいじった後にreplot
することがある。
実はここで変数を使うこともできる。
gnuplot > a = 2 gnuplot > plot a*x
とかもできちゃう。詳しくは近似式のところで。
とりあえず次から説明する設定を変えたらいろいろplot
してみることになる。
データをプロットすることもできる。
gnuplot > plot "test.dat"
などとすれば描画できる。データはどのようにするかというと
1 10 100 2 20 200 3 30 300 4 40 400 5 50 500
のようなデータの場合、x軸は1列目、y軸は2列目に合うように描画され、3列目以降は無視される。
任意の列の値を使いたい場合は
gnuplot > plot "test.dat" using 1:3
などと使う列を指定してあげるとその列を採用してくれる。
描画のスタイルは点や線などいろいろある。覚えておくと便利なのはlines
、points
、linespoints
、impulses
、boxes
あたりだろうか。
gnuplot > plot "test.dat" with linespoints
などとwith
をつければ良い。
ちなみに、データのファイル名が使われてしまうのが嫌な場合は、タイトル付をしたり何もつけなかったりすることができる。
gnuplot > plot "test.dat" using 1:2 title "length"
色をつけたいときはRGB値で指定して
gnuplot > plot sin(x) linecolor rgb "#FF0000"
一つのグラフに複数プロットしたいときは「,」で区切って
gnuplot > plot sin(x), cos(x)
とすれば良い。
近似式
gnuplotは入力データと式にあわせて近似式を計算してくれる。行列とか使うやつ。
gnuplot > fit a*x+b "test.dat" via a,b
とすれば入力データの前の式が入力データに近くなるようにa,bの値を作ってくれる。あとはこれを
gnuplot > plot a*x+b
してあげれば近似式がプロットできるというわけだ。
各種設定
plot
は正直誰でもできるみたいなとこあるけれど、混乱するのが軸とかの設定の方だったりplot
のオプションだったり。基本的にはset
の後ろにいろいろ単語をくっつけていくものが多い。無効にするときはunset
をつける。
入出力
入力
入力するには、ターミナルからコマンドを直接入力するか、ファイルをロードする必要がある。コマンドを書いたファイルをロードするときはまずコマンドを登録したファイル「plot.gp」を用意しておいて
# コメントアウトはハッシュで始めればOK set terminal postscript eps plot sin(x) set terminal x11
これをgnuplotでロードする
gnuplot > load "plot.gp"
とすれば良い。
逆に、入力したコマンドを保存しておくなら
gnuplot > save "plot.gp"
としておけばそれまでに入力したコマンドを保存することができる。
出力
基本的に起動直後はplot
すると新しくウィンドウが起動し、そこにグラフが描画される。gnuplotでは、この出力先をウィンドウからset terminal
をすることで画像に変えることで出力することができる。ファイル名の指定はset output 'filename'
で行う
gnuplot > set terminal png gnuplot > set output 'test.png' gnuplot > plot sin(x)
とすることでPNG形式で保存することができる。
ベクター画像であるEPS形式で保存したいときは
gnuplot > set terminal postscript eps gnuplot > set output 'test.eps'
とすればOK。set terminal postscript eps enhanced color
としてあげればカラーにもできる。また、set terminal postscript eps 28
などと後ろに数字をつけると文字サイズが指定できる。
また元のウィンドウで表示するように戻したいときは Windowsなら
gnuplot > set terminal windows
Linuxなら
gnuplot > set terminal x11
としてやれば戻すことができる。
軸の設定
軸ラベル
まず知っておくと良い知識として、(基本的に)軸はx1,y1,x2,y2の4本(二次元の場合)ある。それぞれにラベルなどが設定できる。位置はこんな感じ。
軸のスケール
デフォルトでは自動的にちょうどいい感じになるようにスケールが取られるが、任意に設定することもできる。
自動縮尺
gnuplot > set autoscale x gnuplot > set autoscale y
手動縮尺
gnuplot > set xrange [0:20] gnuplot > set yrange [0:40] gnuplot > set x2range [-10:10]
と言った感じで各軸にスケールを設定できたりする。[a:b]
のところは軸の値がaからbまでですよという意味。ちなみに現在どういう設定かはshow autoscale
で確認することができる。ちなみに対数スケールにするには
gnuplot > set logscale y
のような感じにすればOK。
軸ラベル
各軸のラベルは
gnuplot > set xlabel 'label 1' gnuplot > set x2label 'label 2' gnuplot > set ylabel 'label 3'
のようにして設定できる。
タイトル
グラフのタイトルをつけることもできる(とはいえTeXの機能などのほうでつけたほうが楽だと思うが・・・・・・)。
gnuplot > set title 'TITLE'
凡例
どのグラフが何を表しているかの説明。表示位置などを決めることができる。
gnuplot > set key inside gnuplot > set key left top # 左上に表示
内側に表示する場合はinside
に設定しておく。その後に位置を指定。上下左右と斜めの8方向指定できる。他に、座標で指定するほうほうもあるにはある。
gnuplot > set key at 5.0, 5.0
外側に表示してみることもできる。下に表示する場合
gnuplot > set key bmargin gnuplot > set key center
その他
グラフにグリッド線をつけたいときは
gnuplot > set grid
終わりに
これだけあればだいたいの二次元グラフはかけそう。各種コマンドを組み合わせることになる。 基本的にはプロットのコマンドファイルを作っておいてロードするのがデータ更新したときなどやりやすい。サンプルを貼ってみる。
# gnuplot script file # using grid set grid # key position set key inside top left # set label set xlabel 'Phase' set ylabel 'Amplitude' # set axis set xrange [0:6] set yrange [0:60] # set values fit a*x "test.dat" via a # output set terminal png 20 set output 'test.png' plot "test.dat" using 1:2 with points notitle, a*x with lines title "test" # undo terminal setting set terminal x11
$ gnuplot gnuplot > load "test.gp"
こんな感じのファイルを作っておくと良い。