leaflet的小搭檔leaflet.minicharts來了,從此動態地圖又多了一些樂趣~~~
本文內容取材自leaflet.minicharts包官方主頁的案例介紹,本篇案例雖然是關於leaflet在線地圖的輔助包,但是該包的出現對於leaflet生態系統來說,確是有著劃時代的意義。
該包大大擴充了leaflet包所能呈現的圖表形式,打破了散點圖、路徑圖、熱力圖三類圖表對於傳統地圖數據呈現形式的壟斷地位。
該包為此提供了氣泡餅圖、玫瑰圖、mini柱形圖以及時間維度控制器等多種數據可視化元素。
以下便是作者對該包的簡要介紹及案例演示:
一直以來,藉助於Rstudio團隊開發的互動式地圖工具包——leaflet,在R語言中創建互動式地圖已非難事。但是該包僅僅提供了很少的集中圖表呈現類型,因而在一張單獨的地圖上呈現的數據信息量被大大限制了。
倘若你要在地圖上呈現一些點數據,你只能需要使用兩個變數定位出這些點在地圖上的位置,然後更改點的半徑和點的填充顏色來呈現數據。
然後leaflet.minicharts包的出現大大改變了這一格局。你可以在利用其提供的兩個附加函數,在leaflet包的交互地圖上增加更多的mini圖表。
這些mini圖表可以呈現比之前多得多的變數數據(理論上不受變數數量的限制),目前為止,僅支持三種圖表類型:
barcharts (the default), pie charts and polar area charts.
該包內提供了一個法國自2010~2017年包含電力產品、電力消費及結構變動趨勢的數據集。
library("ggplot2")library("leaflet.minicharts")library(geojsonio)library(rgdal)data("eco2mix")head(eco2mix)
geojson <-readOGR("D:/R/mapdata/State/France.json","OGRGeoJSON",stringsAsFactors=FALSE)#導入json格式的法國地圖數據素材
library(dplyr)prod2016 <- eco2mix %>% mutate( renewable = bioenergy + solar + wind + hydraulic, non_renewable = total - bioenergy - solar - wind - hydraulic ) %>% filter(grepl("2016",month) & area!= "France") %>% select(-month) %>% group_by(area,lat,lng) %>% summarise_all(sum) %>% ungroup()#抽取了法國2016年的能源消費結構數據信息:
library(leaflet)library(leafletCN)basemap <- leaflet(geojson,width ="100%",height="400px") %>% amap() %>%addPolygons(weight=1,color="#444444",opacity=1,fillColor ="white",fillOpacity =0.7,smoothFactor=0.5)#將地圖背景保存為臨時對象:
renewable2016 <- prod2016 %>% select(hydraulic,solar,wind)colors <- c("#3093e5","#fcba50","#a0d9e8")basemap %>% addMinicharts( prod2016$lng, prod2016$lat, chartdata = renewable2016, colorPalette = colors, width = 45, height = 45 )#默認圖表形式是柱形圖
#氣泡餅圖colors <- c("#4fc13c", "#cccccc")basemap %>% addMinicharts( prod2016$lng, prod2016$lat, type = "pie", chartdata = prod2016[, c("renewable", "non_renewable")], colorPalette = colors, width = 60 * sqrt(prod2016$total)/sqrt(max(prod2016$total)),transitionTime=0)
#玫瑰圖1:basemap %>%addMinicharts(prod2016$lng, prod2016$lat,type = "polar-radius",chartdata = prod2016[, c("renewable", "non_renewable")],colorPalette = colors,width = 60 * sqrt(prod2016$total)/sqrt(max(prod2016$total)),transitionTime=0)#極坐標(玫瑰圖)
#玫瑰圖2:basemap %>%addMinicharts(prod2016$lng, prod2016$lat,type = "polar-area",chartdata = prod2016[, c("renewable", "non_renewable")],colorPalette = colors,width = 60 * sqrt(prod2016$total)/sqrt(max(prod2016$total)),transitionTime=0)
添加時間趨勢:
#柱形圖(帶時間趨勢)prodRegions <- eco2mix %>% filter(area != "France")basemap %>% addMinicharts( prodRegions$lng, prodRegions$lat, chartdata = prodRegions[, c("hydraulic", "solar", "wind")], time = prodRegions$month, colorPalette = colors, width = 45, height = 45 )
#餅圖(帶時間趨勢)prodRegions <- eco2mix %>% filter(area != "France")basemap %>% addMinicharts( prodRegions$lng, prodRegions$lat, chartdata = prodRegions[, c("hydraulic", "solar", "wind")], time = prodRegions$month, colorPalette = colors, type="pie", width = 45, height = 45 )
#玫瑰圖(帶時間趨勢)prodRegions <- eco2mix %>% filter(area != "France")basemap %>% addMinicharts( prodRegions$lng, prodRegions$lat, chartdata = prodRegions[, c("hydraulic", "solar", "wind")], time = prodRegions$month, colorPalette = colors, type="pie", width = 45, height = 45 )
聯繫方式:
微信:ljty1991
博客主頁:raindu"s home
個人公眾號:數據小魔方(datamofang)
團隊公眾號:EasyCharts
qq交流群:[魔方學院]298236508
推薦閱讀:
※ggplot2入門簡介
※經管類核心期刊地域分布數據可視化
※那些年倒騰的R語言學習筆記,全都在這裡了~
※什麼是專業圖表與商業圖表?
※上帝視角——給世界一個特寫~