gnuplotで棒グラフを作ってみよう

gnuplotを使って棒グラフを作成し、画像ファイルとして保存します。以下のグラフの作成を目標にします。

gnuplotをインストールする

MacではHomebrewを使うことで簡単にインストールすることができます。

$ brew install gnuplot

棒グラフを作成する

データを準備する

sample-box.datというファイル名で保存しました。

1 "2016年" 9500
2 "2017年" 10800
3 "2018年" 11800
4 "2019年" 12100
5 "2020年" 16600

グラフを表示する

gnuplotを起動して、グラフを表示させます。

sample-box.datがカレントディレクトリにない場合は、ファイルパスを指定します。

$ gnuplot 

	G N U P L O T
	Version 5.4 patchlevel 0    last modified 2020-07-13 

	Copyright (C) 1986-1993, 1998, 2004, 2007-2020
	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 'qt'
gnuplot> 
gnuplot> plot 'sample-box.dat' using 1:3:xtic(2) with boxes
gnuplot>

棒グラフが表示されましたでしょうか?

x軸は"2016年"〜"2020年"で表示され、y軸はsample-box.datの3列目の値で棒グラフが作成されたと思います。

画像として保存する

set terminalおよび、set outputで出力先を指定してplotします。

gnuplot> set terminal png font "Sans,9"

Terminal type is now 'png'
Options are 'nocrop enhanced size 640,480 font "Sans,9.0" '
gnuplot> set output 'test-boxes.png'
gnuplot> 
gnuplot> plot 'sample-box.dat' using 1:3:xtic(2) with boxes
gnuplot>

test-boxes.pngファイルとしてグラフが保存されたでしょうか。

fontは皆さんの環境で日本語を表示できるものを選択してください。

棒グラフの出力を簡略化する

以下のようなファイルをpng_plot-boxes.txtとして保存します。

また、グラフのフォーマットも指定してみました。

set terminal png font "Sans,9"
set output 'test-boxes.png'
set boxwidth 0.5
set style fill solid
unset key
set title '年別の売り上げ額'
set ylabel '(円)'
# 以下数値の桁区切り
set format "%'.0f"
set decimalsign locale; set decimalsign "."

plot [][0:] 'sample-box.dat' using 1:3:xtic(2) with boxes

以下のように実行することで、ファイル内のコマンドを一括で実行できます。

$ gnuplot png_plot-boxes.txt 

gnuplotを起動し、loadコマンドを用いても同じ結果が得られます。

gnuplot> load 'png_plot-boxes.txt'

以下のような画像が保存されます。

関連情報