前幾日買回來《R語言數(shù)據(jù)可視化之美:專業(yè)圖表繪制指南(增強(qiáng)版)》俭识,看到作者張杰在“增強(qiáng)版特別說明”里專門提到了地圖繪制時需嚴(yán)格執(zhí)行各種規(guī)定巍虫,否則無法通過審核程序彭则。我買到的是增強(qiáng)版,而該書這之前的版本中占遥,作者為通過審核計沒有收入地圖繪制的內(nèi)容。如早些時候的2019第23周:評《R語言數(shù)據(jù)可視化之美:專業(yè)圖表繪制指南》文中就提到該書最新出版的版本中缺少了空間數(shù)據(jù)可視化部分內(nèi)容输瓜。
說起來由于地圖引發(fā)的各種爭議也不在少數(shù)瓦胎,也因此利用ECharts繪制地圖應(yīng)該是可以省去大家不少這方面的麻煩芬萍。ECharts是最先由百度開發(fā)的使用 JavaScript 實(shí)現(xiàn)的開源可視化庫,其功能強(qiáng)大搔啊、交互豐富柬祠,直觀且好用。盡管百度公司在其它方面的口碑不怎么樣负芋,但Echart絕對算得上是Baidu的良心之作了漫蛔。
比如在Python for Data Analysis和前面提到的《R語言數(shù)據(jù)可視化之美:專業(yè)圖表繪制指南(增強(qiáng)版)》的教程中,介紹的都是R或者Python調(diào)用.shp格式的地圖的方法旧蛾。這些方法中首先能找到的合適的.shp文件本就不易莽龟,辛辛苦苦生成了地圖也可能又不符合各種規(guī)定也說不定。反正我試過了.shp的方法后锨天,再換到ECharts來生成地圖后就再也不想去用.shp文件格式地圖了毯盈。
ECharts繪制動態(tài)地圖實(shí)例
如題圖所示,仍然以國內(nèi)的LEED認(rèn)證項(xiàng)目統(tǒng)計數(shù)據(jù)為例病袄,利用Echarts生成的動態(tài)地圖以對比各省之間的項(xiàng)目數(shù)量搂赋,以及歷年的認(rèn)證項(xiàng)目數(shù)量增長趨勢。
參照Echarts官方樣例中地圖益缠,以及timeline 組件脑奠,就可以輕松得到上圖中的效果了。
Echarts的官方教程宣稱5 分鐘上手 ECharts幅慌,事實(shí)上也確實(shí)如此宋欺。
在引入Echats之后,不管選用的是哪種類型的圖標(biāo)欠痴,首先第一步就是定制視圖選項(xiàng)迄靠。包括標(biāo)題、配色喇辽、字體掌挚、視覺映射、工具條菩咨、懸浮顯示等等吠式。
配置好選項(xiàng)后,接下來指定數(shù)據(jù)及圖標(biāo)類型抽米,就算大功告成了特占。
$.get("leedcn.json", function (data) {
/*
將json文件導(dǎo)入,數(shù)據(jù)格式:
timeline:[2005,2006,……2017,2018] //LEED統(tǒng)計年份數(shù)組
// 從2005-2018年云茸,每年獲認(rèn)證的LEED項(xiàng)目數(shù)量數(shù)組
yearseries:[[{name:"北京",value:2}, …{name:"西藏",value:0}],
……
[{name:"北京",value:216}, …{name:"西藏",value:0}]]
//從2005-2018年是目,累加的各省LEED項(xiàng)目數(shù)量數(shù)組
totalseries:[[{name:"北京",value:2}, …{name:"西藏",value:0}],
……
[{name:"北京",value:216}, …{name:"西藏",value:0}]]
*/
// 解析json文本賦值給object
//cnDataset = eval('('+ data +')');
cnDataset = eval(data);
// 調(diào)用完成后將loading動畫停止
myChart.hideLoading();
// debugger
// 按年份將數(shù)據(jù)賦值給地圖填色
for (var n = 0; n < cnDataset.timeline.length; n++) {
option.baseOption.timeline.data.push(cnDataset.timeline[n]);
option.options.push({
title: {
show: true,
'text': cnDataset.timeline[n] + ''
},
series: {
name: cnDataset.timeline[n],
type: 'map',
roam: false,
map: 'china',
data: cnDataset.totalseries[n],
}
});
}
myChart.setOption(option);
});
如代碼中所示,Echarts圖表中的圖表類型和數(shù)據(jù)由series來指定标捺,Echarts還支持多個series實(shí)現(xiàn)類似讓Echarts幾年前一舉成名的百度人口遷徙大數(shù)據(jù)可視化之類的更加炫酷的效果懊纳。下圖就是將餅圖和堆疊面積圖合體后的效果揉抵。但不論如何我始終覺得,利用ECharts來生成動態(tài)地圖算得上是它的優(yōu)勢之一嗤疯。
本文中的完整代碼參見LEED in China和LEED in China(version 2)冤今,最好的Echarts學(xué)習(xí)資源應(yīng)該說是官方的教程和樣例,所以感興趣的同學(xué)不妨前往官網(wǎng)圍觀茂缚。Echarts的支持文檔完整詳細(xì)馏臭,還可以在Echarts官方樣例上在線修改并實(shí)時查看效果卤橄,真的是非常方便了。
包括Plotly和R中g(shù)ganimate等在內(nèi)的工具包都可以實(shí)現(xiàn)動態(tài)圖表,但各路大神們?yōu)镋charts開發(fā)了R語言和Python的API接口浅蚪,由此也可見Echarts的江湖地位了收叶。
地圖就說到這了碟贾,等有空了再來試下把ECharts的動態(tài)網(wǎng)頁插入的PPT中防嗡。