gnuplotのfit関数を使ったフィッティング~その2~


前回に続いて、グラフのまとめ方です。

3dplotした際に、背景部分の線を隠すことができるようです。
コマンドは「set hidden3d」です。

qnorm
set hidden3d
set dgrid3d splines
splot 'C:\\Fitting\\Sample3D.txt' with lines

プロットすると以下のように陰線部分の色が変わります。

なお、参考にしたリンクは以下になります。
gnuplot補完
↓こちらがお勧めです。
gnuplot補完

グラフの凡例について

タイトルの設定

 set title "xxx"

x軸、y軸のラベル設定

set xlabel "xxx"
set ylabel "xxx"
ちなみに、Texのように、上付き文字は「^」、下付き文字は「_」で設定できるようです。

レンジの設定例

set xrange[-10:10]
set yrange[-10:10]

凡例の位置変更

set key
optionで使用できるコマンド:left、right、top、bottom、outside、below
非表示にしたい場合:unset key

Grid表示

set grid

上記を一通り設定してみます。

TitleLabel
set hidden3d
set title "3dplot:x^2+y^2"
set xlabel "x [-]"
set ylabel "y [-]"
set xrange[0:5]
set yrange[0:5]
unset key
set grid
set dgrid3d splines
splot 'C:\\Fitting\\Sample3D.txt' with lines

プロットすると以下のようになります。

ひとまず最低限の様式は整ってきました。

複数のグラフの重ね合わせ

「,」で式やデータを区切ることで、複数のグラフを重ねて描画することができます。
また、今回格子点をlineでつないだ表記になっていますが、点で表示することもできるようです。
実験データをdotで、x^2+y^2のグラフをlineで書いて重ね合わせてみます。
コマンドとしては「with line」の部分を「with points」に変更します。

Points
splot 'C:\\Fitting\\Sample3D.txt' with points, x**2+y**2 with lines

もともとz=x^2+y^2のデータを乱数で作成していただけですので、当然ですがきれいにx^+y^2の上に各点が乗っていますね。

ポイントサイズ、種類の変更

ポイントの大きさを変えたい場合は、「pointsize xx」という形で書きます。
またポイントやラインのタイプも変更できるようです。
以下のページによると、pointsizeはps、pointtypeはptと書いても良いそうです。(試してみましたが確かにできました)
gnuplot point,lineタイプ

Pointtype
splot 'C:\\Fitting\\Sample3D.txt' with points pointsize 0.5 pt 7, x**2+y**2 with lines

パレットの使用

値の大小に応じて色分けをしたい場合、paletteというコマンドが使えるようです。
以下のリンクが絵付きで見やすいです。
gnuplot パレット
色の組み合わせで、好みのものを選びます。
今回はCMY rgbformulae 7,5,15を選択します。
set palette modelで上記を定義し、with lines palette、with points palette等で定義します。

palette
set palette model CMY rgbformulae 7,5,15
set hidden3d
set title "3dplot:x^2+y^2 samples"
set xlabel "x [-]"
set ylabel "y [-]"
set xrange[0:5]
set yrange[0:5]
unset key
set grid
set dgrid3d splines
splot 'C:\\Fitting\\Sample3D.txt' with lines palette

今までのグラフに関する知見を織り込んでまとめたグラフが以下になります。

大体グラフの形状は分かりましたので、次回フィッティングの方法についてまとめていきます。

おまけ:pm3d

上記の色分けを調べていた際に見たリンクによると曲面を色分けすることもできるようですね。
dgrid3dの代わりにpm3dを設定するようですので、早速試してみます。
pm3d

pm3d
set pm3d
splot x**2+y**2

また、等高線形式にするにはpm3d mapを使うようです。
pm3d map

pm3dmap
set pm3d map
splot x**2+y**2