Tuesday 14 May 2013

gnuplot (9)


今回は smooth で二次元データプロットに線を引く話.短い.




京都の最高気温と最低気温をプロットしたものを再掲.


これはなんの工夫もなく with linespoints で plot したもの.
これはこれで見やすいけれど,例えば何年ぶんもいっぺんに表示したい時はどうだろうか.
あるいはもう少しなめらかだったら全体の様子がみやすいのではないだろうか.
そんな時のために smooth.

syntax: smooth {unique | frequency | cumulative | cnormal | kdensity | csplines |acsplines | bezier | sbezier }
それぞれの説明はまあ飛ばすとして,いくつか拾うと
  • unique : x座標が同じ点たちを, y座標がそれらのy座標の平均となるような点で代表させる
  • frequency : x座標が同じ点たちを, y座標がそれらのy座標の和となるような点で代表させる
  • bezier : bezier 曲線
  • sbezier : unique してから bezier
他のもかなり要所要所で使いどころが ありそうなので頭に留めておこう.



たとえば,年初から数えた日付を x軸,日の最低気温を y軸に,
京都の2008年から2012年まで5年間のデータを plot したものがこちら.
unique, scplines, sbezier でちょっと太めに線を引いてみました.

set xrange[0:366]
plot "./kyoto.dat" u 1:6,\
"./kyoto.dat" u 1:6 w l lw 3 smooth uniq title "unique",\
"./kyoto.dat" u 1:6 w l lw 3 smo csp title "scplines",\
"./kyoto.dat" u 1:6 w l lw 3 smo sb title "sbezier"


っていう感じで plot. なお smooth つけると元の点は出力されないので,
結局これは別に plot するのが一番のやりかたのようです.
これ,点をばらまくときに年ごとに色変えたりしても綺麗そうですね.

No comments:

Post a Comment