gnuplot(ニュープロット, グニュープロット)は, オープンソースのグラフ描画ソフトウェアです. Linux, Windows, MacOS で利用でき, 数式からのグラフ描画とデータファイルからのグラフ描画に対応し, 様々な出力形式(PNG, JPEG, GIF, EPS, PDF, SVG, etc...)をサポートしています. 本ページでは, gnuplot の簡単な使い方とバッチファイルについて簡単に説明します.
gnuplot のインストール
gnuplot は gnuplot.info からインストールファイルをダウンロードできます. また, Debian 系の Linux ならば, apt を用いることもできて,
# apt install gnuplot gnuplot-x11
|
でインストールができます. なお,3n+1,+2の情報実験機では,OS インストール時に gnuplot をインストールしているため,このコマンドを実行しなくても,gnupliot が利用できます.
gnuplot とその使い方
今回は簡単な例として, $y=\frac{\sin x}{x}$のグラフを描画し, そのグラフを PNG 画像で出力する例を取り上げます. 何らかのウィンドウシステム上で gnuplot を用いていることを仮定します.
gnuplot の対話モードの起動
シェル上で,
と打ち込みます. すると,
G N U P L O T
Version 5.4 patchlevel 4 last modified 2022-07-10
Copyright (C) 1986-1993, 1998, 2004, 2007-2022
Thomas Williams, Colin Kelley and many others
gnuplot home: http://www.gnuplot.info
faq, bugs, etc: type "help FAQ"
immediate help: type "help" (plot window: hit 'h')
Terminal type is now 'wxt'
gnuplot>
|
と表示され, gnuplot> というプロンプトが返ってきます. これで gnuplot の対話モードが起動します. 対話モードでは, gnuplot のコマンドをキーボードで入力してグラフの描画を行います. ちなみに, gnuplot の対話モードを終了して通常のシェル画面に戻るためには, exit と入力します.
グラフの描画
早速, $y=\frac{\sin x}{x}$のグラフを描画しましょう. 2 次元のグラフを描画するためには, plot コマンドを使います. plot のあとにスペースを入れてその後に数式($x$の式)を書けば, 新しい窓が出てきてグラフが描画されます.
Fig. 1: 表示されるグラフ.
式には, +(加法), -(減法), *(乗法), /(除法), **(累乗)などの二項演算子が使えます. また, 関数として, 三角関数, 双曲線関数, 逆三角関数, 指数・対数関数, 特殊関数(例えばガンマ関数など)が使えます.
ファイルへの出力と gnuplot の終了
このグラフを画像ファイルへ出力することを試みましょう. これまでは, グラフのデータの出力先 (terminal) はウィンドウ (Linux ならば X-window-system) でした. これを PNG 画像ファイル (pngcairo) とします. pngcairo というのは, cairo というライブラリを用いて PNG 画像へ出力するモードです. 出力先の変更は set コマンドを使って以下のように行います.
gnuplot> set terminal pngcairo
|
このまま plot してしまうと, 端末に PNG 画像のデータがそのまま表示されてしまいます. そこで, PNG 画像データを格納するファイル名(output)を指定します. ファイル名の指定は set コマンドを用いて以下のように行います.
gnuplot> set output "new.png"
|
事前にグラフが描かれている状態であったとしても, この状態で再描画を行えば, PNG 画像データがファイルへ書き込まれます.
ただし, このままでは画像ファイルは gnuplot によってアクセスされたままであり, 他のソフトウェアで開くことができない状態となっています. よって, 画像ファイルを別のソフトで閲覧・編集したいときは, gnuplot で開かれている画像ファイルを閉じる必要があります. 画像ファイルを閉じるために, gnuplot 自体を終了しても構いませんが, 例えば
とするだけでもよいです. 一方, 再び画面 (X-window-system) へのグラフ描画へ戻るだけでも 画像ファイルは閉じられます. そのときは
gnuplot> set terminal x11
|
とします. また, gnuplot の対話モードを終了して元のシェルに戻りたい場合は
とします.
バッチモード
上記に示した対話モードでは, いちいち順序を追ってコマンドを入力しなければならないため, 例えばグラフの設定を使いまわしたいときには不便です. そんなときにはバッチモードを使います. バッチモードは, gnuplot のコマンドが列挙されているファイル(バッチファイル)を gnuplot 自身が読み込み, そのコマンドを逐次実行するというモードです. バッチモードでグラフを描画する際は, シェルから以下のように gnuplot へバッチファイルを読み込ませます.
それではバッチファイルを作成してみましょう. バッチファイルの作り方は簡単で, gnuplot のコマンドたちを実行順に 1 行に 1 つずつ書くだけです. 今回はバッチファイルのファイル名を batch.gpl としましょう. 下記はバッチファイル (batch.gpl) の中身です.
#!/usr/bin/gnuplot
set terminal pngcairo
set output "new.png"
set grid
set xrange [-15:15]
plot sin(x)/x
exit
|
バッチファイルが完成したら, パーミッションを変更し,gnuplot へ読み込ませます.
$ chmod 744 batch.gplのパス
$ batch.gplのパス
|
または,下記コマンドでも実行できます.
$ chmod 744 batch.gplのパス
$ gnuplot batch.gplのパス
|
しばらく時間が経つとプロンプトが戻ってきて, new.png がカレントディレクトリに生成されているはずです.