Analyses and Visualization of Typhoon in R and ggplot2 #1: The basics


台風が来そうで来ない@関東。

Rでの解析の一例として、台風の軌道とか強さとかを処理してみよう。
台風のデータは実験心理学のデータに近いので、その手の解析には応用できると思います。

今回は基礎編、分析はないです。
データを引っ張ってきて、ゴニョゴニョ加工して、軌道と強さをプロットするところまで。

次回から、Rとか使うとマジでデータから探索的に情報を引っ張り出すの楽だよね〜、って話をするかもしれません。

科学の手法は仮説ドリブンじゃないとだめっしょ、っていう人は、データドリブンなやり方は馴染まないと思うので、読まない方がいいと思います。

# plyrとかも一緒にロードしてくれるので, ggplot2をロード
library(ggplot2) 

# ベストトラックデータ thanks to 気象庁
bst <- 'http://www.jma.go.jp/jma/jma-eng/jma-center/rsmc-hp-pub-eg/Besttracks/bst2011.txt'

# ファイルを読み込む
lines <- readLines(bst)

# bstファイルにデータ行とヘッダ行が混ざってるので自分で処理。
header_line_no <- grep("^66666", lines)
# いろいろ面倒なので行連結→テキストコネクション→read.tableコンボ。
header <- read.table(textConnection(lines[header_line_no]))
entry <- read.table(textConnection(lines[-header_line_no]), fill=TRUE)

# 名前をつける。
names(header) <- c("HIND", "IID", "NROW", "CID", "IID2", "FLD", "DTM", "Name", "REV")
names(entry) <- c("TIME", "EIND", "Grade", "Lat", "Long", "hPa", "WSP")

# データとヘッダを紐付ける。
entry$CID <- rep(header$CID, header$NROW)
data <- merge(header, entry, by = "CID")

# TIMEは一応time形式に。緯度経度をちゃんとする。台風の名前をアルファベット順じゃなくて登録順に
data <- transform(data,
                  TIME = strptime(entry$TIME, "%y%m%d%H"),
                  Lat = Lat / 10,
                  Long = Long / 10,
                  Name = factor(Name, levels = header$Name))


# こっからプロットします。

# 地図データ
library(maps)
# 緯度と経度の範囲は手作業で
long.lim <- expand_range(range(data$Long), 0.05)
lat.lim <- expand_range(range(data$Lat), 0.05)
jpn <- data.frame(map(plot=FALSE, xlim = long.lim, ylim = lat.lim)[c("x","y")]) 

# 地図座標系用
library(maptools)

p <- ggplot(data, aes(Long, Lat, colour = Name)) + 
  geom_point(aes(size = hPa), shape = 21, alpha = 0.5) + # 大きさは気圧
  geom_path() + # 線でパスを
  geom_path(aes(x, y, colour = NULL), jpn) + # 地図
  coord_map() + # 地図座標系で。デフォルトはメルカトル
  scale_size_continuous(to = c(1, 10), trans = "reverse") # 点の大きさスケール

ggsave("tyh001.png", p)
About these ads

One thought on “Analyses and Visualization of Typhoon in R and ggplot2 #1: The basics

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s