数値計算入門【3. 付録: gnuplot について】

  1. 事前準備
  2. 微分方程式の数値解法
  3. [付録]gnuplot について

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 の対話モードの起動

シェル上で,
$ 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 と入力します.
gnuplot> exit

グラフの描画

早速, $y=\frac{\sin x}{x}$のグラフを描画しましょう. 2 次元のグラフを描画するためには, plot コマンドを使います. plot のあとにスペースを入れてその後に数式($x$の式)を書けば, 新しい窓が出てきてグラフが描画されます.

gnuplot> plot sin(x)/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> replot
ただし, このままでは画像ファイルは gnuplot によってアクセスされたままであり, 他のソフトウェアで開くことができない状態となっています. よって, 画像ファイルを別のソフトで閲覧・編集したいときは, gnuplot で開かれている画像ファイルを閉じる必要があります. 画像ファイルを閉じるために, gnuplot 自体を終了しても構いませんが, 例えば
gnuplot> unset output
とするだけでもよいです. 一方, 再び画面 (X-window-system) へのグラフ描画へ戻るだけでも 画像ファイルは閉じられます. そのときは
gnuplot> set terminal x11
とします. また, gnuplot の対話モードを終了して元のシェルに戻りたい場合は
gnuplot> exit
とします.

バッチモード

上記に示した対話モードでは, いちいち順序を追ってコマンドを入力しなければならないため, 例えばグラフの設定を使いまわしたいときには不便です. そんなときにはバッチモードを使います. バッチモードは, 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 がカレントディレクトリに生成されているはずです.


情報実験第 10 回のページへ戻る

最終更新日: 2024/07/11 髙橋 聖輝 copyright © 2024 inex