8月27-28日の降水量プロットの続き。降水量の図は、ニョキニョキ伸びた棒グラフで表されていることが多いが、似たような図が描けないか探していたら、R言語でそれっぽいパッケージが紹介されていた。
※ 『からだにいいもの』のページ(www.karada-good.net/analyticsr/r-593)
leaflet.minichartsのページは、こちら(rte-antares-rpackage.github.io/leaflet.minichart/)。
データを棒グラフや円グラフでプロットできる。
R言語でなくてもプラグイン(.jsファイル)を入れて使えるようだ。
ひとまずRでleaflet.minichartsパッケージをインストールして、
library(leaflet)
library(leaflet.minicharts)
で呼び出し。
さすがに日本全国約1300地点のデータを各々グラフにして描画すると重くなるので、降水量が多かった山口、福岡、佐賀、長崎、熊本、大分、宮崎の範囲(142地点)に絞って描画してみる。
rainData <- read.csv("kisyo_rain201908281800geok.csv")
でCSVファイル読み込み。CSVファイルの中身は、山口~宮崎の観測所、緯度、経度、1時間降水量の最大値、24時間降水量の最大値。
map <- leaflet()
map <- addTiles(map)
map <- setView(map,130.50,33.50,8)
の後、
map <- addMinicharts(map,
lng = rainData[,5],
lat = rainData[,4],
type = "bar",
chartdata = rainData[,6:7],
colorPalette = c("blue","orange"),
width = 20,
height = 50
)
map
lat・lngで緯度・経度。
typeのbarは棒グラフ。
chartdataで1時間降水量の最大値と24時間降水量の最大値。
colorPaletteで色指定。
%>%表記の場合、
map <- leaflet() %>%
addTiles() %>%
setView(130.50,33.50,8) %>%
addMinicharts(
lng = rainData[,5],
lat = rainData[,4],
type = "bar",
chartdata = rainData[,6:7],
colorPalette = c("blue","orange"),
width = 20,
height = 50
)
map
生成されたHTMLを取り出し。
棒グラフ -1時間降水量の最大値と24時間降水量の最大値- →
もう1パターン、棒グラフ(1時間降水量の最大値)を赤・橙・青で色分けしてみたい。
・
・
・
map2 <- addMinicharts(map2,
lng = rainData[,5],
lat = rainData[,4],
type = "bar",
chartdata = rainData[,6],
fillColor = ifelse(rainData[,6] > 100 , "red" , ifelse (rainData[,6] > 50 & rainData[,6] < 100 , "orange" , "blue")),
width = 10,
height = 50
)
map2
colorPaletteをfillColorにして……。
if文でエラー発生。
『条件が長さが2以上なので、最初の1つだけが使われます』。
?。
困った時の…… →。
ベクトル配列は条件文で使えないらしい。ifelse文にしたら解消された。
100[mm]超で赤色、50[mm]超で橙色、10[mm]超で青色。
入れ子状になっていくが、これでいいのかな。
棒グラフ -1時間降水量の最大値(色分け)- →
ちょっと重いのとスマートフォンのタップで反応してくれないのが難点。