Re:Readme

PCトラブルや環境構築、家電量販店とかで買ったもののメモ。ご利用は自己責任で。

gnuplotをMacで使う(3)

hal-drumas.hatenablog.com
hal-drumas.hatenablog.com
前回までのちょっとした補足をば。

変数・関数の定義

gnuplotでは変数や関数が宣言できる。例えば、

gnuplot> f(x)=1/x
gnuplot> plot f(x)

とやれば、図のように出力される。
f:id:hal_drumas:20170207002025p:plain

あれ、x=0の挙動がおかしいぞと思ったが、どうやら仕様みたい(参考)。点と点を自動的に線で結ぼうとするから変な事になるのであって、ならば点で描画すればいい。

グラフの描画(点、区間、グリッド線)

gnuplot> plot f(x) with dots

のように実行すると、線ではなく点で出力出来る。

が、やってみると分かるが点の間隔が広くなってしまう。そこで、前回グラデーションを滑らかにしたように、

gnuplot> set samples 10000

と、サンプリング数を増やすことで、点の間隔が狭まる。

また、xとyの区間を限定したいときには、

gnuplot> set xr[-4:4]; set yr[-4:4]

の様に打てば良い。この場合は-4≦x, y≦4となる。
ここでは-4から+4としたが、+4から-4とした場合は軸の向きが反転する。
ちなみに「;」は行の終わりを表し、コレを挟めば

gnuplot> set xr[-4:4]
gnuplot> set yr[-4:4]

の様に2行に分けずに済む。
f:id:hal_drumas:20170207002035p:plain

もう一つ、グリッド線について。

gnuplot> set xtics 1; set ytics 1

のように書くことで、目盛りの幅が設定できる。また、

gnuplot> set mxtics 5; set mystics 5

で小目盛りに、何分割するか(こちらは幅を設定するわけではない)を設定できる。

そして

gnuplot> set grid xtics ytics mytics

と打つと、選んだ目盛りに応じてグリッド線が引かれる。
f:id:hal_drumas:20170207002042p:plain

他にもまだまだいろいろ設定が出来そう(参考)。

スクリプトの読み込み・保存

最後に、毎回毎回グラフを作るためにコマンドを入力するのは面倒くさいと思うので、スクリプトの組み方についても説明しておく。
準備としては、コマンドの内容を羅列しただけのファイルを用意すれば良い。ここまでの例では、

reset
f(x)=1/x
set xr[-4:4]; set yr[-4:4]
set xtics 1; set tics 1; set mxtics 5; set mystics 5;
set grid xtics ytics mytics
set samples 10000
plot f(x) with dots
#pause -1 "Hit return to continue."

とでも書き込んだファイルを、テキストエディタか何かで作れば良い。

ここで、「reset」と「#pause -1」という見慣れない文言を追加した。resetはsetコマンドによる設定を初期状態に戻すコマンドらしい。またpauseコマンドはその次の引数の分だけ実行停止(そのまた次に文字列を書いた場合は、それを出力してから停止)させるコマンドで、使い方や環境によってはウィンドウが一瞬で消えてしまうため、これを埋め込む必要があるのだとか。-1にするとEnterキーを押すまで待機。
なお、私の環境では今のところ必要とする場面が発生していないので、「#」を頭に付けてコメントアウトした。

保存するファイルの拡張子はUNIXなら関係無いが、Windows版などで使うにあたっては「.plt」などが良いようだ。今回は「1divX.plt」という名前にする。
保存したら、gnuplotでこれを読み込んでみる。gnuplotを起動したら

gnuplot> load "1divX.plt"
と打つ(保存した場所とgnuplotを起動した場所が違っても、ファイルの相対パスを打てば読み込んでくれる)。
そうすれば、記述したコマンドを一気に実行してくれるはずだ。

ちなみにloadがあればsaveもあるわけで、

gnuplot> save "hoge.plt"

と打てばこれまで実行してきたコマンドから、hoge.pltというファイル名でスクリプトを自動的に生成してくれる模様。
ただし、デフォルトの設定などもいちいち記述しているためか、雑多な内容になるので、自分で書いた方が見た感じはすっきりする。