gnuplotをMacで使う(3)
hal-drumas.hatenablog.com
hal-drumas.hatenablog.com
前回までのちょっとした補足をば。
変数・関数の定義
gnuplotでは変数や関数が宣言できる。例えば、
とやれば、図のように出力される。
あれ、x=0の挙動がおかしいぞと思ったが、どうやら仕様みたい(参考)。点と点を自動的に線で結ぼうとするから変な事になるのであって、ならば点で描画すればいい。
グラフの描画(点、区間、グリッド線)
のように実行すると、線ではなく点で出力出来る。
が、やってみると分かるが点の間隔が広くなってしまう。そこで、前回グラデーションを滑らかにしたように、
と、サンプリング数を増やすことで、点の間隔が狭まる。
また、xとyの区間を限定したいときには、
の様に打てば良い。この場合は-4≦x, y≦4となる。
ここでは-4から+4としたが、+4から-4とした場合は軸の向きが反転する。
ちなみに「;」は行の終わりを表し、コレを挟めば
の様に2行に分けずに済む。
もう一つ、グリッド線について。
のように書くことで、目盛りの幅が設定できる。また、
で小目盛りに、何分割するか(こちらは幅を設定するわけではない)を設定できる。
そして
と打つと、選んだ目盛りに応じてグリッド線が引かれる。
他にもまだまだいろいろ設定が出来そう(参考)。
スクリプトの読み込み・保存
最後に、毎回毎回グラフを作るためにコマンドを入力するのは面倒くさいと思うので、スクリプトの組み方についても説明しておく。
準備としては、コマンドの内容を羅列しただけのファイルを用意すれば良い。ここまでの例では、
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を起動したら
そうすれば、記述したコマンドを一気に実行してくれるはずだ。
ちなみにloadがあればsaveもあるわけで、
と打てばこれまで実行してきたコマンドから、hoge.pltというファイル名でスクリプトを自動的に生成してくれる模様。
ただし、デフォルトの設定などもいちいち記述しているためか、雑多な内容になるので、自分で書いた方が見た感じはすっきりする。