這幾天在網(wǎng)上看到一個(gè)了不起的R包:Leaflet/LeafletCN形帮,忍不住跟著大神學(xué)習(xí)、動(dòng)手實(shí)踐一番周叮,先看個(gè)效果圖(<small>交互式界面辩撑,可實(shí)現(xiàn)拖拽</small>):
下面是一些簡單的用法與介紹
一、Leaflet/LeafletCN實(shí)例
Leaflet是一個(gè)國外動(dòng)態(tài)交互地圖仿耽,超贊合冀;而LeafletCN適應(yīng)了“中國國情”,劃分更能細(xì)到縣市級项贺,雖然不一定完全準(zhǔn)君躺,但是夠用就行啦~
回到前面的效果圖,先看如何實(shí)現(xiàn):
【1】載入包开缎,讀取網(wǎng)頁數(shù)據(jù)(這里使用網(wǎng)上提供的各城市AQI指數(shù))
library(XML)
library(leafletCN)
# Sorry for 爬了你家網(wǎng)站
table = readHTMLTable("http://www.pm25.in/rank", encoding = "UTF-8", stringsAsFactors = F)[[1]]
【2】整理數(shù)據(jù)
# 整理數(shù)據(jù)并命名
dat = table[ , 2:3]
names(dat) = c("city","AQI")
dat$AQI = as.numeric(dat$AQI)
【3】使用geojsonMap繪制城市的污染情況
# 調(diào)用geojsonMap進(jìn)行繪制
geojsonMap(dat, "city",
popup = paste0(dat$city, ":", dat$AQI),
palette = "Reds", legendTitle = "AQI")
我去棕叫,喪心病狂,7行代碼搞定 ~
二啥箭、函數(shù)使用
簡單的COPY誰都會谍珊,各種函數(shù)、參數(shù)選擇多少也要會一點(diǎn)急侥,下面介紹常用函數(shù)
【regionNames函數(shù)】
如果傳入省份級砌滞,會輸出該省份下的城市
> regionNames("江蘇")
[1] "鹽城市" "徐州市" "南通市" "淮安市" "蘇州市" "宿遷市" "連云港市" "揚(yáng)州市"
[9] "南京市" "泰州市" "無錫市" "常州市" "鎮(zhèn)江市"
若傳入市級,則對應(yīng)輸出區(qū)縣級
> regionNames("無錫")
[1] "北塘區(qū)" "濱湖區(qū)" "崇安區(qū)" "惠山區(qū)" "江陰市" "南長區(qū)" "錫山區(qū)" "宜興市"
【geojsonmap函數(shù)】
dat = data.frame(name = regionNames("china"), value = runif(34))
geojsonMap(dat,"china")
# 可以看到有很多參數(shù)坏怪,默認(rèn)顏色是藍(lán)色贝润,地圖類型是高德地圖,可自己調(diào)參
> geojsonMap
function (dat, mapName, namevar = NULL, valuevar = NULL, palette = "Blues",
colorMethod = "numeric", na.color = "#808080", popup = NULL,
stroke = T, smoothFactor = 1, weight = 1, fillOpacity = 0.7,
legendTitle = "Legend", tileType = amap, ...)
三铝宵、其他實(shí)例
【1】單點(diǎn)標(biāo)注:地圖+標(biāo)點(diǎn)
leaflet() %>%amap() %>%addMarkers(lng=121.587687, lat=31.201832,popup="張江老司機(jī)")
# %>%:管道操作符打掘,它的主要作用就是把前面的語句(變量)傳遞給下一個(gè)語句华畏,并且作為第一個(gè)參數(shù)使用
【2】底圖地圖多樣選擇
# 使用addProviderTiles("XXX")來調(diào)用這些源, 部分源需要注冊
衛(wèi)星地圖:
Esri.WorldImagery
帶海拔的地圖:
OpenTopoMap
黑白地圖:
Stamen.Toner
NASA氣象地圖:
NASAGIBS.ModisTerraChlorophyll
NASA夜景:
NASAGIBS.ViirsEarthAtNight2012
這么炫,簡直沒朋友啊
待續(xù)未完...