4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Radial.plotを使って風配図(wind rose)を描いてみる

Last updated at Posted at 2015-06-06

はじめに

はじめまして。Rに興味を持っている非プログラマです。
皆さんの投稿を読んでいつも勉強させていただいております。

radial plotを使って風向図を描く

先日、気象庁のページを見ていて過去の気象データをダウンロードできることを知ったので、plotrixパッケージのradial.plotを使って風配図(Wind rose)を描いてみました。
どの地点を使ってもよかったのですが、例として羽田空港の日最多風向データを元に作成しています。

Rのversionなど

>sessionInfo()
R version 3.1.2 (2014-10-31)
Platform: x86_64-apple-darwin13.4.0 (64-bit)

locale:
[1] ja_JP.UTF-8/ja_JP.UTF-8/ja_JP.UTF-8/C/ja_JP.UTF-8/ja_JP.UTF-8

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] plotrix_3.5-10

loaded via a namespace (and not attached):
[1] digest_0.6.4     htmltools_0.2.6  rmarkdown_0.3.10 tools_3.1.2     
[5] yaml_2.1.13 

Radial.plot

plotrixパッケージ内のradial.plotを使ってレーダーチャートを書いていきます。

library(plotrix)

wind <- read.csv("~/RJTTwind.csv",header=TRUE)
head(wind)
tail(wind)

年月日 風向
1 2000/1/1 北北西
2 2000/1/2 北東
3 2000/1/3 北
4 2000/1/4 北北西
5 2000/1/5 北北東
6 2000/1/6 北北西
....略...
5474 2014/12/26 北北西
5475 2014/12/27 北北西
5476 2014/12/28 西北西
5477 2014/12/29 北北西
5478 2014/12/30 東北東
5479 2014/12/31 西南西

データは2000年1月1日から2014年12月31日までの日最多風向を利用しています。
元のデータは観測値の名前などの付帯情報がついてくるのですが、その辺は邪魔になるのであらかじめ削除してあります。さらに、Shift-jisが文字化けするのでエンコードの変換も済ませておきました。

wind_label <- c("北","北北東","北東","東北東","東","東南東","南東","南南東","南","南南西","南西","西南西","西","西北西","北西","北北西")

table(factor(wind$風向,levels=wind_label))

16方位それぞれの回数をtableでカウントして、その要素をfactorで
北から順番に並べています。カウントした結果は以下のようになります。

方位 日数 方位 日数
702 938
北北東 718 南南西 477
北東 355 南西 126
東北東 335 西南西 53
229 西 55
東南東 256 西北西 38
南東 147 北西 158
南南東 78 北北西 814

あとはプロットするだけです。

wind_raw <- matrix(table(factor(wind$風向,levels=wind_label)),nrow=1)
wind_c <- wind_raw/sum(wind_raw)*100 #各日数を全日数の百分率に変換

par(family="HiraKakuProN-W3") #フォント指定(mac用)

radial.plot(wind_c, #プロットする値はベクタか行列で指定
            line.col="red", #プロットする線の色
       lwd = 2, #プロットする線の太さ
            lty = 6, #プロットする線の種類
                     # 0.なし 1.実線(デフォルト) 2.- - - 3. ・ ・ ・
                     # 4.・ー・ー・ー 5.ーー ーー  6. −ー −ー  
            labels=wind_label, #ラベル(項目名)
            rp.type="p", #表示方法
                          # r:radial lines(中心から伸びる直線)
                          # p: polygon(点を線で結ぶ)
              # s: symbol(点)
            radial.lim =c(0,20), # 枠(外周の円)の大きさ
            start=pi/2, #グラフの描画を始める位置(ラジアンで指定)
            clockwise=TRUE, #時計回りにプロット(Falseの場合、反時計周り)
       radial.label = "" #軸目盛り
)

RJTTwind.png

##実は……
Plotrixパッケージの中にはそのものずばり、oz.windroseという風配図を描くための関数が用意されていることを、この記事を書いている最中に知りました。
ただし、oz.windrose関数は風向と風速をまとめて表示するものなので、今回作りたいグラフとは少し違った形のものが出来上がります。詳しくはplotrixのHelpやdemoをご覧ください。

#参考サイト
今回のネタはdichika様のブログを参考にさせていただきました。
この場をお借りしてお礼申し上げます。
レーダーチャート(またの名をスパイダーチャート)を描く
http://d.hatena.ne.jp/dichika/20110202/1296653560

4
6
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
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?