Linuxを日常的に使う実験ブログ

Linuxで使えるグラフ作成ソフトgnuplotの使い方

 2015-08-13

 2015-08-14

 Linux全般

こんにちは。今回のテーマは『Linuxで使えるグラフ作成ソフトgnuplotの使い方』です。gnuplotはグラフ作成ソフトです。仕事でグラフを作成するときにはエクセルを使う機会が多いと思うのですが、3次元のシミュレーション結果等をプロットするときにはgnuplotの方が便利です。とても機能が多いので全ては紹介しきれませんが今回は「とりあえず使えるようになる」ことを念頭に基本的な使い方をご紹介できればと思います。 尚、gnuplotはWindowsやMac版もありクロスプラットフォームで使えます。今回はLinuxでの使用を念頭においた記事になります。 【関連記事】 [adsense02] 【目次】 起動と終了 数式をプロットする 数値データをプロットする グラフのスタイルを変更する 線やプロットの色を変更する プロットの線や点のデザインを変更する 軸の名称や範囲を変更する 凡例に名前を表示する スクリプトファイルで処理する グラフを図として保存する

起動と終了

まずはgnuplotを起動しましょう。ターミナル上で以下のコマンドを入力してgnuplotを起動しましょう。

$ gnuplot

01 gnuplotを起動するとコマンド待ちのプロンプトが出ます。専用のスクリプトを打ち込んで操作をします。せっかく起動したばかりですが終了させましょう。終了のコマンドを打ちます。

gnuplot> quit または gnuplot> exit

数式をプロットする

まずは基本的な使い方です。数式をプロットしてみましょう。

2次元プロット

Y=5xをプロットする場合

gnuplot> 5*x

Y=x^2をプロットする

gnuplot> x**2

Y=sin(x)をプロットする

gnuplot> sin(x)

02

3次元プロット

xyz軸をもつ3次元プロットも出来ます。 z=x^2+y^2をプロットする

gnuplo> splot x**2+y**2

03

リプロット

gnuplotには一度描画したプロットを再描画するコマンドがあります。これはreplotを使います。以下のようにコマンドするだけでplotやsplotを呼ばなくても描画できます。

gnuplot> replot

複数のプロット

一つのグラフに複数のプロットを行う場合はplotコマンドで式やデータをカンマで区切ればOKです。 [実行例]

gnuplot> plot sin(x),5*x+3

数値データをプロットする

グラフを作成するときには数式ではなく、数値データをプロットすることも多いと思います。

データファイルの作成

まずは読み込むデータファイルを作成します。今回は~/Documents上に作成します。

$ cd ~/Documents $ vim test.dat

test.datを次のように編集します。#の行はコメントを表します。注意点としてはデータはスペースを開けて区切って下さい。タブでもOKですが、CSVファイルのようにカンマで区切っても読み込めません。

# x y z 0 2.7 0 10 10.2 30 20 40.2 60 30 90.2 90 40 160.2 120 50 250.2 150 60 360.2 180 70 490.2 210 80 640.2 240 90 810.2 270

ファイルの読み込み

gnuplo> plot “test.dat”

04 データカラムの選択 先ほどの例では1列目と2列目のデータを使用しました。では、今度は1列目と3列目のデータを使用してプロットしてみます。u コマンドで使うデータ列を指定します。

gnuplot plot “test.dat” u 1:3

3次元プロット

データ列が3つあれば3次元プロットも可能です。ただしplotではなくsplotを使いますので注意が必要です。

gnuplot> splot “test.dat”

05

グラフのスタイルを変更する

ここまでで描画してきたグラフは全てポイントでプロットされていました。今度は線でプロットしてみます。

gnuplot> plot “test.dat” u 1:2 with line

06 線とポイントでプロット with linespointで点と線に指定します。

gnuplot> plot “test.dat” u 1:2 with linespoint

プロットのタイプは以下のようなものがあります。一例を表示します。

  • line : 線
  • point : ポイント
  • linespoint : 線とポイント
  • dot : 点
  • boxes : 棒グラフ
  • vector : ベクトル

線やプロットの色を変更する

ここまでは線や点の色は赤一色でしたが、線に色を着けて行きましょう。色を変えるにはlinecolorを使います。linecolorは省略形でlcとも書けます。

gnuplot> plot “test.dat” u 1:2 with line linecolor “blue”

07 色の指定は”blue” “red”などの他に”#ff6677”等の16進数コードでも指定可能です。

gnuplot> plot “test.dat” u 1:2 with line linecolor “blue”,“test.dat” u 1:3 with line linecolor “#ff1493”

プロットの線や点のデザインを変更する

タイプの変更

plotやsplot時にlinetypeやpointtypeでタイプの番号を指定することで変更できます。この出力はターミナルによって異なるので事前に確認をしておいたほうが良いです。testコマンドを実行するとタイプの一覧と番号を確認することができます。 [testコマンドの実行結果] 11

線の太さ

linewidth [数値]でポイントサイズを指定します。

点のサイズ

pointsize [数値]でポイントサイズを指定します。 [設定例]

gnuplot> plot “test.dat” u 1:2 with point linecolor “#4682b4” linetype 5 linewidth 2

軸の名称や範囲を変更する

軸にラベルを付ける

軸にラベルを付けるには[軸の名称]labelを使います。例えばx軸にラベルを付けるときには以下のようにします。

gnuplot> set xlabel “Time [min]“

グラフの軸範囲を指定する

グラフ作成時に軸の範囲を指定したいことはよくあることだと思います。軸の範囲の指定にはrangeコマンドを使います。rangeは設定する軸(x,y,z)と組み合わせて使います。 例えばx軸を20から80に設定する場合は以下のようにします。

gnuplot> set xrange [20:80]

[使用例]

gnuplot> plot “test.dat” u 1:2 with line linecolor “blue”,“test.dat” u 1:3 with line linecolor “#ff1493” gnuplot> xrange [20:80] gnuplot> replot

12 また、xrangeやyrangeはxr,yrと略すことが出来ます。

軸の目盛りを設定する

目盛りの刻みを設定するには[軸の名称]+ticsを使います。例えばx軸の目盛りを2刻みに変更するには以下ようにします。

gnuplot> set xtics 2

副目盛りを設定する

gnuplotは目盛りに副目盛りをつけることが出来ます。設定にはm[設定軸]mticsを使います。この設定は主目盛り何分割するかで設定します。例えば主目盛りを2分割する場合は以下のようにします。

gnuplot> set mxtics 2

副目盛りを削除する

副目盛り削除するにはunsetを使います。例えばx軸の副目盛りを削除するには以下のように設定します。

gnuplot> unset mxtics

凡例に名前を表示する

凡例の表示の設定

凡例の表示

gnuplot> set key

凡例の非表示

gnuplot> unset key

凡例の表示名の設定

凡例にプロットの名前を表示するにはplotやsplotでプロット時にtitleで指定します。 [設定例]

gnuplot> plot “test.dat” u 1:2 with line linecolor “blue” title “sample 1”

これで凡例の部分に”sample 1”が表示されました。

スクリプトファイルで処理する

ここまでは対話式でプロンプトにコマンドを打ち込んで操作してきました。この操作をスクリプトファイルにまとめて記述することが出来ます。これにより設定などをまとめて記述しておき読み込むなどの処理が容易になります。また、プロンプト上では扱えない日本語もスクリプトファイルにしておけば扱うことが出来ます。 エディタでスクリプトファイルを作ります。

$ vim test.plt

以下ように編集します。

set yrange [0:500] set xrange [0:80] set xlabel “時間” set ylabel “温度” set xtics 10 set mxtics 2 set ytics 100 plot “test.dat” u 1:2 with line linecolor “blue” title “テスト 1”

作成したtest.pltをgnuplotで読み込みます。読み込む時はloadを使います。

gnuplot> load “test.plt”

10

グラフを図として保存する

作成したグラフは使いやすいようにグラフィックファイルに変換して使います。エクスポートするにはset terminalで出力ターミナルを切り替えます。

pngにエクスポートする

pngにエクスポートするときにはOSにインストールされているTTFフォントがそのまま指定できます。日本語をグラフ中で使うときには日本語のフォントを指定しないと文字化けします。 [実行例]

gnuplot> load “test.dat” gnuplot> set terminal png font “MigMix 2M,14” gnuplot> set output “sample.png” gnuplot> replot

epsにエクスポートする

epsにエクスポートする際、日本語を使用している場合は文字化けしないようにフォントを指定する必要があります。英語の場合は必要はありませんが、フォントを指定したい場合は設定出来ます。 [実行例]

gnuplot> load “test.dat” gnuplot> set terminal eps enhanced color font “GothicBBB-Medium-UniJIS-UTF8-H,14” gnuplot> set output “sample.eps” gnuplot> replot

尚、Linuxの場合は設定すべき日本語フォントは/etc/ghostscript/cidfmap.d/90gs-cjk-resource-japan1.confで設定されています。

最後に

基本的な操作のみ簡単に記そうと思ったのですが、案外ボリュームのある記事になってしまいました。gnuplotは理工系の出身者には馴染みのあるソフトだと思いますが、業務データを綺麗にまとめるときにも使いやすいソフトだとお思います。エクセルに慣れきった方もこの機会にgnuplotを使ってみては如何でしょうか? [adsense]