つれづれなる備忘録

日々の発見をあるがままに綴る

gnuplotによるグラフ作成19~コンタ―プロット

 前回はからgnuplotによる基本的な3Dプロットする方法について紹介したが、今回はコンタ―プロットについて紹介する。

atatat.hatenablog.com

1. コンタ―プロットの作成

コンタ―プロット(等高線図)を作成するにはset contourとすれば等高線が作成される。

f(x,y)=exp((-x**2-y**2)/20)
set contour
splot f(x,y)

以下のようなプロットが得られるが、3Dプロットに等高線が付随する形になる

"等高線付き3Dプロット"
等高線付き3Dプロット

等高線のみを表示するには、unset surfaceとすると3Dプロット部分が非表示になる。また視点を真上にするにはset view mapなどの追加設定を以下のようにする。

unset surface
set isosamples 50,50
set view map
set size square
replot

上のコードを実行すると以下のようなコンタ―プロットが得られる。

"コンタ―プロット"
コンタ―プロット

2. コンタ―プロットの書式設定

 コンタ―プロットの等高線の本数を指定するには、set cntrparam levels 本数とする。例えば

set cntrparam levels 10
replot

等高線を10本としたプロット
等高線を10本としたプロット

set cntrparam levels incremental 初期値,刻み値とすると初期値から刻み値ごとに等高線が引かれる。

set cntrparam levels incremental 0,0.1

とすると上と同様に0から0.1刻みで10本の等高線が引かれる。

つぎに等高線を滑らかにつなぐにはset cntrparam points 10としてからset cntrparam cubicsplineとする。

set cntrparam points 10
set cntrparam cubicspline
replot

等高線自体はスプライン補間されて滑らかになっているはずだが、見た目はあまり変わらない。set cntrparam pointsの数は大きいほど滑らかになる。

[f:id:ATATAT:20201009073358p:plain:w500::alt=等高線を滑らかにしたコンタ―プロット]
等高線を滑らかにしたコンタ―プロット

他に等高線を滑らかにするにはset cntrparam order 10などとしてからset cntrparam bsplineとする。

最後に凡例と軸数値が被っているので、凡例の位置を右の外側にずらす。

set key right outside
replot

凡例の位置を調整
凡例の位置を調整

3. まとめ

 今回はコンタ―プロットの表示方法と等高線の設定などについて紹介した。