「globe」パッケージの出力を「svgPanZoom」と「SVGAnnotation」パッケージで拡大・縮小が可能なプロットにする方法を紹介します。
なお、台風経路はJAXAの台風データベースで紹介されているユニシス社のデータを「XML」と「RCurl」パッケージを利用して取得しています。
・JAXAの台風データベース
http://sharaku.eorc.jaxa.jp/TYP_DB/database_j.html
・ユニシス社のデータ
http://weather.unisys.com/hurricane/
・「svgPanZoom」と「SVGAnnotation」パッケージの紹介
https://www.karada-good.net/analyticsr/r-154/
・「globe」パッケージ
https://www.karada-good.net/analyticsr/r-383/
実行コマンドはR version 3.2.2で確認しています。
実行コマンド
詳細はコメント、各パッケージのヘルプを確認してください。
#パッケージの読み込み #globeパッケージがなければインストール if(!require("globe", quietly = TRUE)){ install.packages("globe");require("globe") } #svgPanZoomパッケージがなければインストール if(!require("svgPanZoom", quietly = TRUE)){ install.packages("svgPanZoom");require("svgPanZoom") } #SVGAnnotationパッケージがなければインストール if(!require("SVGAnnotation", quietly = TRUE)){ devtools::install_github("duncantl/SVGAnnotation");require("SVGAnnotation") } #XMLパッケージがなければインストール if(!require("XML", quietly = TRUE)){ install.packages("XML");require("XML") } #RCurlパッケージがなければインストール if(!require("RCurl", quietly = TRUE)){ install.packages("RCurl");require("RCurl") } #JAXAの台風データベースを参考:http://sharaku.eorc.jaxa.jp/TYP_DB/database_j.html #ユニシス社:http://weather.unisys.com/hurricane/からデータを取得 #2015年のデータURLを設定 SelectURL <- "http://weather.unisys.com/hurricane/w_pacific/2015/index.php" #ページ内容を取得 doc <- getURL(SelectURL) #内容をparse doc <- htmlParse(doc) #ページ内のリンクを取得 Listhref <- xpathSApply(doc, "//li/a", xmlGetAttr, 'href') Dthref <- xpathSApply(doc, "//td/a", xmlGetAttr, 'href') #データリンクを抽出 Allhref <- c(Listhref[grep("\\.dat$", Listhref)], Dthref[grep("\\.dat$", Dthref)]) #データの取得 MasterData <- NULL for(i in seq(Allhref)){ #データリンクを設定 GetData <- paste0("http://weather.unisys.com/hurricane/w_pacific/2015/", Allhref[i]) #台風名を取得 Name <- unlist(strsplit(Allhref[i], "/"))[1] #データを読み込み Data <- readLines(GetData) #必要のないデータを削除 Data <- Data[4:length(Data)] #データ格納用の変数を準備 SubMasterData <- NULL #連続処理 for(m in seq(length(Data))){ #読み込んだデータを空白ごとに文字を分割 GetStrings <- unlist(strsplit(Data[m], " ")) #文字が存在しないデータを削除 GetStrings <- GetStrings[grep(".", GetStrings)] #台風名と結合 GetStrings <- c(Name, GetStrings) #分割されるSTATデータを結合処理 if(length(GetStrings) > 8){ #分割された場合 GetStrings <- c(GetStrings[1:7], paste0(GetStrings[8:length(GetStrings)], collapse = "-")) SubMasterData <- rbind(SubMasterData, matrix(GetStrings, ncol = 8)) } else { #分割されない場合 SubMasterData <- rbind(SubMasterData, matrix(GetStrings, ncol = 8)) }} #データを結合 MasterData <- rbind(MasterData, SubMasterData) } #取得データをdata.frame化 MasterData <- as.data.frame(MasterData) #データ名を付与 names(MasterData) <- c("NAME", "ADV", "LAT", "LON", "TIME", "WIND", "PR", "STAT") ###取得したデータから拡大が可能な地球儀プロットを作成##### #台風経路をプロット用に変形 TyphoonPoint <- t(apply(MasterData[ , 4:3], 1, function(x) as.numeric(as.character(x)))) #インタラクティブにプロット svgPanZoom(svgPlot( { #札幌を中心 LonLatData <- ensurelonlat(c(141.21, 43.3)) #空の地球儀をプロット globeearth(eye = LonLatData, top = place("northpole")) #台風経路をプロット globepoints(loc = TyphoonPoint, eye = LonLatData, top = place("northpole"), col = rgb(0.4, 0.3, 0.5, alpha = 0.5), pch = 17, cex = .5) } ))
出力例
拡大・縮小・移動が可能です。
少しでも、あなたの解析が楽になりますように