gnuplotの使い方

インストール方法

Ubuntuでは以下のコマンドでgnuplotをインストールします.

sudo apt install gnuplot

macOSでHomebrewをインストールしてあれば,以下のコマンドでgnuplotをインストールします.

brew install gnuplot

使い方

対話型で起動する場合は以下のコマンドを使います.

gnuplot

予め用意したスクリプトファイルを実行する場合は,以下のコマンドを使います. ここでは sample.gp を読み込ませています.

gnuplot < sample.gp
cat sample.gp | gnuplot

チートシート

入力データのファイル形式

デフォルトでは以下のようなスペース区切りのデータを扱える.

1 3.2
2 4.5
3 9.0

TSVファイルを読み込む場合に指定する.

set datafile separator "\t"

# こちらでも良い
set datafile separator tab

CSVファイルを読み込む場合に指定する.

set datafile separator ","

# こちらでも良い
set datafile separator comma

ファイルに保存

PNG形式の graph.png へ結果を保存する.

set terminal png
set output 'graph.png'

PDF形式の graph.pdf へ結果を保存する.

set terminal pdfcairo font "Helvetica,16"
set output graph.pdf
set termoption enhanced

# 個人的によく使う組み合わせ
set terminal pdfcairo font "Helvetica,18" size 5in, 2in

EPS(ポストスクリプト)形式で結果を保存する.

set output 'graph.eps'
set terminal postscript eps color enhanced "Arial" 18

グラフのスタイル(目盛り,軸ラベル,凡例)

軸のフォントを以下で設定する.

set tics font "Arial,16"   # 目盛りのフォントの変更
set xlabel font "Arial,18" # xlabelのフォントの変更
set ylabel font "Arial,18" # ylabelのフォントの変更
set zlabel font "Arial,18" # zlabelのフォントの変更
set key font "Arial,18"    # 凡例のフォントの変更

軸ラベルを設定する.

set xlabel 'Elapsed time [Sec]'
set ylabel 'Measured error bytes [Byte]'

目盛りの表示範囲を設定する.

set xrange [0:1.0]
set yrange [0:1.0]

主目盛りの間隔を設定する.

set xtics 0.2
set ytics 0.5

副目盛りの間隔を設定する.

set mxtics 0.1
set mytics 0.1

目盛りのスケールを対数にする.

set logscale x
set logscale y

目盛りのラベルの形式を小数点第一位で揃える.

set format x "%.1f"

目盛りのラベルの形式を指数表記にする.

set format x "10^{%L}"

目盛りのラベルの形式を日付+時間に指定

set xdata time                 # x軸のデータを日付+時間に設定
set timefmt "%Y-%m-%d %H:%M"   # データファイルのフォーマット
set format x "%H:%M"           # 表示フォーマット(時間のみ)

# x軸の目盛り間隔を2019-12-04 00:00から2019-12-05 23:59までで2時間ごとにする
set xtics "2019-12-04 00:00", 14400, "2019-12-05 23:59"

凡例の位置を指定する.

## 非表示の場合(set nokeyは非推奨)
unset key

## グラフ内の右上に表示
set key right top

## グラフ外の右に表示
set key outside

## グラフ外の上に表示
set key outside top center

## グラフ外の上に表示(少し始点をずらす)
set key outside top center offset -5,0

## 凡例を横に2列で並べる
set key horizontal columns 2

## 凡例を横に並べたときの横の隙間を狭くする
set key width -3.0

グラフのスタイル(細かい部分)

グラフのX軸とY軸以外の罫線(ボーダー)を消す.上と右にある枠の線を消す.

unset border
set border 3

上と右の縁にある目盛りを消す.

set xtics nomirror
set ytics nomirror

棒グラフ

棒の幅

set boxwidth 1.0

棒の塗り

set style fill solid 0.7 border

折れ線グラフ

折れ線グラフを描画する.入力となるsample.dat 以下はsample.datファイルに書かれたデータをX軸が1列目,Y軸が2列目になるよう描画する. 凡例は,my-dataになる.

plot 'sample.dat' using 1:2 with linespoints linewidth 2 pointsize 1 title 'my-data'
10 250
15 330
20 370
25 70
30 140

以下は実際に作成したグラフの例である.

再描画する.これはplotしたあとに書かれた命令を反映させるために必要となる.

replot

Makefile

ディレクトリ内のpltファイルをまとめてビルドするMakefile

PLT_FILES := $(wildcard *.plt)
PDF_FILES := $(wildcard *.pdf)

all: clean plot eps
plot: $(PLT_FILES:.plt=.pdf)
eps: $(PDF_FILES:.pdf=.eps)

%.pdf: %.plt
	gnuplot $<
%.eps: %.pdf
	pdf2ps $< eps/$@
clean:
	rm -f *.pdf eps/*.eps