LoginSignup
0
0

More than 5 years have passed since last update.

gnuplot の初歩 #3 茨城の花粉飛散情報をプロットしてみる。

Last updated at Posted at 2019-03-10

#1/#2/#3

花粉の飛散状況を材料に、時系列データの練習を。

前提

  • 5.2系での確認(-cとか使用)
  • –persist(-p) オプションを使用。

-p は OS X だとそれなり設定しないと使えません。
-pが設定されてない環境では、~/.gnuplotファイルを設定して、置き換えてから読むと良いかも(#1の最後で触れてます)。

.gnuplot

~/.gnuplot に以下の内容を記載。

set xdata time
set timefmt "%Y%m%d%H"
set format x "%Y/%m/%d"
set xtics rotate by 90  right

load ファイルに時間軸の設定を記載する場合の注意

$ cat ./.gnuplot
set xdata time
set timefmt "%Y%m%d%H"
set format x "%Y/%m/%d"
set xtics rotate by 90  right
$ gnuplot -c <( echo 'load ".gnuplot" ; ...') ...

などとして、呼び出す方法は、CentOS上では上手く行ったが、私の OS X(brew上)では上手く行かなかった1

但し、~/.gnuplot に同様の記載をし、load コマンドを実行しない場合には上手く行く。

データの準備

はなこさんから花粉の飛散数のデータを適当にダウンロード。2019/02/01 から 03/10 までのデータだった。

私は、茨城県民なので、茨城3観測点のデータを。

format.csv読めばフォーマットについては説明されている。

利用しやすいように、測定局を1ファイルずつに分割。

% perl -F, -lane 'open my $out, ">>", $F[0] . q{.txt} ; print $out join " ", $F[2] . $F[3], $F[10]' Data.csv 

測定局コードは、

50810200 つくば
50810100 水戸
50820100 日立

だそうで。

とりあえず、プロット

$ gnuplot -p -c <( echo 'plot for [ i = 1:ARGC ] ARGV[i] u 1:2 w l' ) 50810200.txt 50810100.txt 50820100.txt

kafun1.png

ふむ。重なって見辛いぞ。

縮尺一緒のまま、ずらして、ちょこっと体裁を整える2

$ gnuplot -p -c <( echo 'array Stat[3]=["tsukuba","mito","hitachi"]; \
set yrange [-0.5:3] ; \
set ytics ( Stat[1] 0, Stat[2] 1, Stat[3] 2 ); \
plot for [ i = 1:ARGC ] ARGV[i] \
    u 1:($2/9000 + 1 * ( i - 1 ) ) w l title Stat[i]\
' ) 50810200.txt 50810100.txt 50820100.txt

#1/#2から新しい事と言えば、

  • 配列(Stat[3])
    • インデクスが1から始まる。
  • ytics(Y軸の目盛)は、名前 Y値のカンマ区切りのセットで上書き出来る。もちろんxticsも。
    • ただしmyticsなどが効かなくなってしまうらしい。
  • using 引数内での四則演算は基本
    • この場合は、9000で割って、描画をずらすために、index分足してる。

程度?

kafun3.png


  1. ARG1 は問題ないのに、ARGV[1] に "ariel" が入ってしまう。別制御の変数らしいw 

  2. '\' 改行を入れて視認しやすくしてある。 

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0