gnuplot version 5 について

2015年1月1日、gnuplot version 5.0.0がリリースされました。gnuplot 4.0が出たのが2004年の4月(私がまだ修士課程在籍中のことですね…)ということですので、10年たってついにバージョンが1上がったということになります。大変に喜ばしいことです。今後もgnuplotがさらに発展していくことを願っています。

gnuplot 5.0になって、幾つかの大きな変更点があります。それらの幾つかを紹介していこうと思います。

※ちなみに、上の図は(もちろん)gnuplot 5.0.0だけを用いて描いたものです。5.0から取り入れられた機能も幾つか含まれていますが、分かりますか?

Windows版でのデフォルトのターミナルの変更

公式ページからダウンロードするWindows版(gp500-win32-mingw.zipまたはgp500-win32-mingw.exe)ではデフォルトのターミナルがQtターミナルになっています。

QtターミナルはQtフレームワークを用いた以下のような見た目のターミナルです。

基本的な機能としては、windowsターミナルやwxtターミナルとあまり変わりません。好みに応じてデフォルトのターミナルを選んで構わないと思います。(個人的にはwxtが好みです。)

もし、デフォルトのターミナルを変更したい場合は、環境変数GNUTERMwinまたはwxtに変更して下さい。もしインストーラー版(gp500-win32-mingw.exe)を用いてインストールした場合は、インストール途中で出てくる「追加タスクの選択」画面(下図)で好みのターミナルを選択しておくことで、簡単にGNUTERMを設定・変更できます。

デフォルトのlinecolorの変更

gnuplot 5.0.0ではグラフをプロットする際のデフォルトの線色が紫、青緑、空色、だいだい色、…というように変わっています。以前は赤、緑、青、マゼンタ、…だったので、少しシブい色合いになったことになります。また、このデフォルト色順は全てのターミナルで同一のものが使用されるようになったとのことです。

これを以前の赤、緑、青、マゼンタ、…の順に戻すには、以下のコマンドを用います。

set colorsequence classic

実はこのset colorsequenceコマンドの引数には、現時点ではdefaultclassicpodoの3種類が使えます。defaultは上述の紫、青緑、空色、だいだい色、…のデフォルトの色順です。一方、podoは黒、だいだい色、空色、緑、…という順で、色盲の方にも区別しやすいように工夫された色順であるということです。以下の図が、いずれを選ぶかの参考になると思います。

これらの図は、以下のスクリプトを用いて作製したものです。

# 枠やマージンを消すためのコマンド
set lmargin 0
set tmargin 0
set rmargin 0
set bmargin 0
set format xy ""
unset xtics
unset ytics
set border 0
# 枠やマージンを消すためのコマンドここまで
set xrange [0:1]
set yrange [0:1]
set key center center samplen 10 font "Courier,15" spacing 1.3

set colorsequence default
set label 1 at graph 0.5,0.85 center "colorsequence default" font "Arial,20" 
plot for [i=1:16] 1/0 w l lt i dt solid lw 10 title sprintf("  %d", i)

pause -1

set colorsequence classic
set label 1 "colorsequence classic"
plot for [i=1:16] 1/0 w l lt i dt solid lw 10 title sprintf("  %d", i)

pause -1

set colorsequence podo
set label 1 "colorsequence podo"  
plot for [i=1:16] 1/0 w l lt i dt solid lw 10 title sprintf("  %d", i)

破線の使い方の変更

gnuplot 4.6まではグラフのプロットや、矢印などに破線を使う場合、linetype属性を使って指定していましたが、あまり多くの種類の波線は使えませんでした。また、同時にターミナルのオプションをdashedにしておく必要がありました。gnuplot 5.0では、dashtypeという属性が新設され、より細かい指定が出来るようになりました。また、ターミナルオプションのsoliddashedは無視されるようになりました。

詳しくは破線の使用(dashtype)をご覧ください。

enhanced textの機能強化: イタリックやボールド体の出力

enhanced textで、フォントをイタリックにしたりボールドにしたりするオプション:Italic:Bold(さらに、通常書体の:Normal)が使えるようになったので、これまでイタリック体やボールド体の文字を出力するのが意外と難しかったwxtやpdfcairoなどのターミナルでも、これらが簡単に使えるようになりました。

以下の例のように、enhanced textでフォントを指定するための{/に引き続いて:Italic:Boldを用いることで、イタリックやボールドのフォントを使えます。

set label 1 at graph 0.05,0.9 left "{/Arial:Normal=20 Arial:Normal}"
set label 2 at graph 0.05,0.8 left "{/Arial:Italic=20 Arial:Italic}"
set label 3 at graph 0.05,0.7 left "{/Arial:Bold=20 Arial:Bold}"
set label 4 at graph 0.05,0.6 left "{/Arial:Italic:Bold=20 Arial:Italic:Bold}"

set label 5 at graph 0.05,0.45 left "{/Times-New-Roman:Normal=20 Times-New-Roman:Normal}"
set label 6 at graph 0.05,0.35 left "{/Times-New-Roman:Italic=20 Times-New-Roman:Italic}"
set label 7 at graph 0.05,0.25 left "{/Times-New-Roman:Bold=20 Times-New-Roman:Bold}"
set label 8 at graph 0.05,0.15 left "{/Times-New-Roman:Italic:Bold=20 Times-New-Roman:Italic:Bold}"

set label 9  at graph 0.45,0.9 left "{/Symbol:Normal=20 Symbol:Normal}"
set label 10 at graph 0.45,0.8 left "{/Symbol:Italic=20 Symbol:Italic}"
set label 11 at graph 0.45,0.7 left "{/Symbol:Bold=20 Symbol:Bold}"
set label 12 at graph 0.45,0.6 left "{/Symbol:Italic:Bold=20 Symbol:Italic:Bold}"

set xrange [0:1]
set yrange [0:1]
plot 1/0 notitle

出力例は以下のようになります。それぞれのフォントで、イタリック体・ボールド体・イタリックボールド体が使えていることが分かります。

importコマンドの導入

c言語でコンパイルして作ったdllファイルを読み込むコマンドimportが導入されました。これにより、c言語で書いた関数をgnuplot上で用いることが出来るようになります。

これは非常に重要な拡張であると考えられます。例えば、gnuplot上で定義することが不可能な数学関数(例えば、特殊関数や、積分方程式・微分方程式の解として出てくる関数など)がgnuplot上で使えるようになります。それだけでなく、文字列やファイルの操作などの関数をも自ら作ることが出来るようになるわけです。gnuplotの可能性が大幅に広がったと言えるでしょう。

gnuplotのdemo/pluginフォルダの中のplugin.demdemo_plugin.c等の中身を見てみると、使い方の参考になります。また、コンパイルの仕方についてはgnuplot掲示板 の2697「import」から始まるスレッドが参考になります。

このページでも、importコマンドの詳細や、dllのコンパイルの仕方などはC言語の関数を取り込む(import)その1その1.5その2その3で説明しています。