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


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

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


### Rのversionなど

```r
>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を使ってレーダーチャートを書いていきます。

```r
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が文字化けするのでエンコードの変換も済ませておきました。


```r
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 | 

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

```r
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](https://qiita-image-store.s3.amazonaws.com/0/80212/eb991d12-207d-4971-b61b-104b42714d37.png)

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

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

* 風配図についての説明:
http://ja.wikipedia.org/wiki/風配図
* 気象庁|過去の気象データ・ダウンロード: http://www.data.jma.go.jp/gmd/risk/obsdl/index.php
* RjpWiki
http://www.okada.jp.org/RWiki/