Echart繪制動(dòng)態(tài)地圖

利用Echart繪制的逐年LEED項(xiàng)目熱圖

前幾日買(mǎi)回來(lái)《R語(yǔ)言數(shù)據(jù)可視化之美:專(zhuān)業(yè)圖表繪制指南(增強(qiáng)版)》,看到作者張杰在“增強(qiáng)版特別說(shuō)明”里專(zhuān)門(mén)提到了地圖繪制時(shí)需嚴(yán)格執(zhí)行各種規(guī)定,否則無(wú)法通過(guò)審核程序。我買(mǎi)到的是增強(qiáng)版,而該書(shū)這之前的版本中,作者為通過(guò)審核計(jì)沒(méi)有收入地圖繪制的內(nèi)容。如早些時(shí)候的2019第23周:評(píng)《R語(yǔ)言數(shù)據(jù)可視化之美:專(zhuān)業(yè)圖表繪制指南》文中就提到該書(shū)最新出版的版本中缺少了空間數(shù)據(jù)可視化部分內(nèi)容。

《R語(yǔ)言數(shù)據(jù)可視化之美:專(zhuān)業(yè)圖表繪制指南(增強(qiáng)版)》特別說(shuō)明

說(shuō)起來(lái)由于地圖引發(fā)的各種爭(zhēng)議也不在少數(shù),也因此利用ECharts繪制地圖應(yīng)該是可以省去大家不少這方面的麻煩。ECharts是最先由百度開(kāi)發(fā)的使用 JavaScript 實(shí)現(xiàn)的開(kāi)源可視化庫(kù),其功能強(qiáng)大、交互豐富,直觀且好用。盡管百度公司在其它方面的口碑不怎么樣,但Echart絕對(duì)算得上是Baidu的良心之作了。

比如在Python for Data Analysis和前面提到的《R語(yǔ)言數(shù)據(jù)可視化之美:專(zhuān)業(yè)圖表繪制指南(增強(qiáng)版)》的教程中,介紹的都是R或者Python調(diào)用.shp格式的地圖的方法。這些方法中首先能找到的合適的.shp文件本就不易,辛辛苦苦生成了地圖也可能又不符合各種規(guī)定也說(shuō)不定。反正我試過(guò)了.shp的方法后,再換到ECharts來(lái)生成地圖后就再也不想去用.shp文件格式地圖了。

ECharts繪制動(dòng)態(tài)地圖實(shí)例

如題圖所示,仍然以國(guó)內(nèi)的LEED認(rèn)證項(xiàng)目統(tǒng)計(jì)數(shù)據(jù)為例,利用Echarts生成的動(dòng)態(tài)地圖以對(duì)比各省之間的項(xiàng)目數(shù)量,以及歷年的認(rèn)證項(xiàng)目數(shù)量增長(zhǎng)趨勢(shì)。
參照Echarts官方樣例中地圖,以及timeline 組件,就可以輕松得到上圖中的效果了。
Echarts的官方教程宣稱(chēng)5 分鐘上手 ECharts,事實(shí)上也確實(shí)如此。
在引入Echats之后,不管選用的是哪種類(lèi)型的圖標(biāo),首先第一步就是定制視圖選項(xiàng)。包括標(biāo)題、配色、字體、視覺(jué)映射、工具條、懸浮顯示等等。

指定Echarts圖表的配置項(xiàng)

配置好選項(xiàng)后,接下來(lái)指定數(shù)據(jù)及圖標(biāo)類(lèi)型,就算大功告成了。

    $.get("leedcn.json", function (data) {
        /*
        將json文件導(dǎo)入,數(shù)據(jù)格式:
        timeline:[2005,2006,……2017,2018]        //LEED統(tǒng)計(jì)年份數(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動(dòng)畫(huà)停止
        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圖表中的圖表類(lèi)型和數(shù)據(jù)由series來(lái)指定,Echarts還支持多個(gè)series實(shí)現(xiàn)類(lèi)似讓Echarts幾年前一舉成名的百度人口遷徙大數(shù)據(jù)可視化之類(lèi)的更加炫酷的效果。下圖就是將餅圖和堆疊面積圖合體后的效果。但不論如何我始終覺(jué)得,利用ECharts來(lái)生成動(dòng)態(tài)地圖算得上是它的優(yōu)勢(shì)之一。

堆疊圖與餅圖的合體
map(white background).gif

本文中的完整代碼參見(jiàn)LEED in ChinaLEED in China(version 2),最好的Echarts學(xué)習(xí)資源應(yīng)該說(shuō)是官方的教程和樣例,所以感興趣的同學(xué)不妨前往官網(wǎng)圍觀。Echarts的支持文檔完整詳細(xì),還可以在Echarts官方樣例上在線修改并實(shí)時(shí)查看效果,真的是非常方便了。
包括Plotly和R中g(shù)ganimate等在內(nèi)的工具包都可以實(shí)現(xiàn)動(dòng)態(tài)圖表,但各路大神們?yōu)镋charts開(kāi)發(fā)了R語(yǔ)言Python的API接口,由此也可見(jiàn)Echarts的江湖地位了。
地圖就說(shuō)到這了,等有空了再來(lái)試下把ECharts的動(dòng)態(tài)網(wǎng)頁(yè)插入的PPT中

參考資料
  1. Echart教程
  2. "Life Expectancy and GDP"實(shí)例
  3. "Air Quality - Baidu Map"實(shí)例
  4. recharts: 百度ECharts 2的R語(yǔ)言接口
  5. pyecharts - A Python Echarts Plotting Library
  6. 如何用 R 繪制動(dòng)態(tài)統(tǒng)計(jì)圖?
  7. Python 可視化神器-Plotly Express
  8. Powerpoint的舊瓶裝上ECharts的新酒,讓你的年終總結(jié)PPT高大上起來(lái)——Web Viewer 與 WebBrowser對(duì)比
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容