つれづれなる備忘録

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

gnuplotによるグラフ作成11~補間線の効果

 前回の補間線の追加について紹介したが、補間手法のuniqueの効果が見えにくかったので、今回は同じX座標に2つの値があるようなデータを使って補間線の効果を確認してみたい。

atatat.hatenablog.com

1. X座標に2つの値を持つデータ

 今回はX座標に2つの値をもつデータを用意した。実際にはExcelでXの列はXは0から0.5刻みでRound(X,0)をX列、Y列はX+2*sin(2*PI()*8.5*X)としてデータを生成した。

#X Y, data2.txt
0   0
1   2.5
1   1
2   -0.5
2   2
3   4.5
3   3
4   1.5
4   4
5   6.5
5   5
6   3.5
6   6
7   8.5
7   7
8   5.5
8   8
9   10.5
9   9
10  7.5
10  10

このデータを単純に線で結ぶと

plot 'data2.txt' with linespoints

実行結果は以下のようになり、すべての点が線で結ばれてしまい見にくい。

"X座標に複数のデータがある場合のラインプロット"
X座標に複数のデータがある場合のラインプロット

2. X座標に2つの値を持つデータの補間

次にuniqueで補間線を挿入すると、

plot 'data2.txt'  smooth unique,  'data2.txt' with points pt 6

実行結果は以下のようにX座標に2点ある中間地点同士を結ぶ補間線が挿入されていることがわかる。

"X座標に複数のデータがある場合のuniqueでの補間"
X座標に複数のデータがある場合のuniqueでの補間

ちなみにX座標上に複数のYデータがない場合は、下のようにデータ同士が線で結ばれるだけとなる。

"X座標に複数のデータがない場合のuniqueでの補間"
X座標に複数のデータがない場合のuniqueでの補間

前回紹介した補間線のオプションcsplines, acsplines, bezier, sbezierでプロットした例を以下に示す。

plot 'data2.txt'  smooth csplines,  'data2.txt' with points pt 6

uniqueの処理をしているのでcsplineではX座標に2点ある中間地点同士を曲線で結ぶ補間線が挿入されている。

"X座標に複数のデータがある場合のcsplinesでの補間"
X座標に複数のデータがある場合のcsplinesでの補間

plot 'data2.txt'  smooth acsplines,  'data2.txt' with points pt 6

uniqueの処理をした後で等しい重みをもつ自然スプライン補間になっているが、全体をフィッティングしたような補間線になっている。

"X座標に複数のデータがある場合のacsplinesでの補間"
X座標に複数のデータがある場合のacsplinesでの補間

plot 'data2.txt'  smooth bezier,  'data2.txt' with points pt 6

データ点の数と同じ次数のベジエ曲線が引かれるが、端のデータは曲線上にある。ベジエ曲線の両端が補間線として不自然に見える。

X座標に複数のデータがある場合のbezierでの補間

plot 'data2.txt'  smooth sbezier,  'data2.txt' with points pt 6

uniqueの処理をした後でベジエ曲線を引くため、端のデータは曲線上にない。上のベジエ曲線よりも補間線としては自然に見える。

X座標に複数のデータがある場合のsbezierでの補間

3. まとめ

 前回の補間線の追加の補足として今回は同じX座標に2つの値があるようなデータを使って補間線の効果を紹介した。