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版(gp500-win32-mingw.zipまたはgp500-win32-mingw.exe)ではデフォルトのターミナルがQtターミナルになっています。
QtターミナルはQtフレームワークを用いた以下のような見た目のターミナルです。
基本的な機能としては、windowsターミナルやwxtターミナルとあまり変わりません。好みに応じてデフォルトのターミナルを選んで構わないと思います。(個人的にはwxtが好みです。)
もし、デフォルトのターミナルを変更したい場合は、環境変数GNUTERMをwinまたはwxtに変更して下さい。もしインストーラー版(gp500-win32-mingw.exe)を用いてインストールした場合は、インストール途中で出てくる「追加タスクの選択」画面(下図)で好みのターミナルを選択しておくことで、簡単にGNUTERMを設定・変更できます。
gnuplot 5.0.0ではグラフをプロットする際のデフォルトの線色が紫、青緑、空色、だいだい色、…というように変わっています。以前は赤、緑、青、マゼンタ、…だったので、少しシブい色合いになったことになります。また、このデフォルト色順は全てのターミナルで同一のものが使用されるようになったとのことです。
これを以前の赤、緑、青、マゼンタ、…の順に戻すには、以下のコマンドを用います。
set colorsequence classic
実はこのset colorsequence
コマンドの引数には、現時点ではdefault
、classic
、podo
の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
という属性が新設され、より細かい指定が出来るようになりました。また、ターミナルオプションのsolid
やdashed
は無視されるようになりました。
詳しくは破線の使用(dashtype)をご覧ください。
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
出力例は以下のようになります。それぞれのフォントで、イタリック体・ボールド体・イタリックボールド体が使えていることが分かります。
c言語でコンパイルして作ったdllファイルを読み込むコマンドimport
が導入されました。これにより、c言語で書いた関数をgnuplot上で用いることが出来るようになります。
これは非常に重要な拡張であると考えられます。例えば、gnuplot上で定義することが不可能な数学関数(例えば、特殊関数や、積分方程式・微分方程式の解として出てくる関数など)がgnuplot上で使えるようになります。それだけでなく、文字列やファイルの操作などの関数をも自ら作ることが出来るようになるわけです。gnuplotの可能性が大幅に広がったと言えるでしょう。
gnuplotのdemo/pluginフォルダの中のplugin.demやdemo_plugin.c等の中身を見てみると、使い方の参考になります。また、コンパイルの仕方についてはgnuplot掲示板 の2697「import」から始まるスレッドが参考になります。
このページでも、import
コマンドの詳細や、dllのコンパイルの仕方などはC言語の関数を取り込む(import)その1、その1.5、その2、その3で説明しています。