python用pyecharts實(shí)現(xiàn)地圖數(shù)據(jù)可視化
有的時(shí)候,我們需要對(duì)不同國(guó)家或地區(qū)的某項(xiàng)指標(biāo)進(jìn)行比較,可簡(jiǎn)單通過(guò)直方圖加以比較。但直方圖在視覺(jué)上并不能很好突出地區(qū)間的差異,因此考慮地理可視化,通過(guò)地圖上位置(地理位置)和顏色(顏色深淺代表數(shù)值差異)兩個(gè)元素加以體現(xiàn)。在本文案例中,基于第三方庫(kù)pyecharts,對(duì)中國(guó)各省2010-2019年的GDP進(jìn)行繪制。
我們先來(lái)看看最終效果:
關(guān)于繪圖數(shù)據(jù)
基于時(shí)間和截面兩個(gè)維度,可把數(shù)據(jù)分為截面數(shù)據(jù)、時(shí)間序列及面板數(shù)據(jù)。在本文案例中,某一年各省的GDP屬于截面數(shù)據(jù),多年各省的GDP屬于面板數(shù)據(jù)。因此,按照先易后難的原則,先對(duì)某一年各省的GDP進(jìn)行地理可視化,再進(jìn)一步構(gòu)建for循環(huán)對(duì)多年各省的GDP進(jìn)行可視化,形成最終的時(shí)間輪播圖。
數(shù)據(jù)來(lái)源:本文案例使用的GDP數(shù)據(jù)來(lái)源于國(guó)家統(tǒng)計(jì)局官網(wǎng),可在線下載到本地,保存為csv或excel格式,用pandas中的DataFrame進(jìn)行讀取。
地理可視化
一、全國(guó)各省單年GDP的可視化在pyecharts中可使用Map類(lèi)型實(shí)現(xiàn)地理可視化,其原理是通過(guò)不同顏色填充以展現(xiàn)不同的數(shù)據(jù),options實(shí)現(xiàn)圖表的調(diào)整及修飾。代碼展示如下:
import pandas as pdfrom pyecharts.charts import Mapimport pyecharts.options as optsframe = pd.read_csv(’C:UsersdellDesktop分省年度數(shù)據(jù)2.csv’,encoding=’GBK’)map = Map()map.add('我國(guó)地區(qū)的GDP',frame[[’地區(qū)’,’2019年’]].values.tolist(),'china')map.set_global_opts(visualmap_opts=opts.VisualMapOpts(min_=500,max_=12000))map.render('2019年全國(guó)各地區(qū)GDP.html')
解析:add()來(lái)實(shí)現(xiàn)了數(shù)據(jù)的加載,在配置3個(gè)參數(shù)中——第1個(gè)是圖的標(biāo)題,第2個(gè)通過(guò).values.tolist()加載要顯示的數(shù)據(jù),第3個(gè)'china'確保顯示的地圖類(lèi)型是中國(guó)。有個(gè)細(xì)節(jié)需要注意,Map 使用的中國(guó)各省份需要將全部的省、市、自治區(qū)等去掉。set_global_opts()實(shí)現(xiàn)了用顏色標(biāo)記數(shù)據(jù)的數(shù)值大小,參數(shù)min_和max_分別代表最小值和最大值。render()用于生成并保存圖像。
效果如下:
然而數(shù)據(jù)分布并不平均,可以通過(guò)is_piecewise 屬性表述分段自定義不同的顏色區(qū)間:
geo.set_global_opts(visualmap_opts=opts.VisualMapOpts( is_piecewise=True, pieces=[{'min':0,'max':10000,'label':'1~10000','color':'cyan'},{'min':10001,'max':20000,'label':'10001~20000','color':'yellow'},{'min':20001,'max':50000,'label':'20001~50000','color':'orange'},{'min':50001,'max':80000,'label':'50001~80000','color':'coral'},{'min':80001,'max':120000,'label':'80001~120000','color':'red'}, ] ))
效果如下:
由于要繪制2010-2019年的GDP數(shù)據(jù),可以考慮構(gòu)建一個(gè)for循環(huán),通過(guò)str(i)+'年'的形式訪問(wèn)數(shù)據(jù)表格中處于不同列的各年GDP數(shù)據(jù)。繪制輪播圖可考慮調(diào)用Timeline,代碼如下:
import pandas as pdfrom pyecharts import options as optsfrom pyecharts.charts import Map, Timelineframe = pd.read_csv(’C:UsersdellDesktop分省年度數(shù)據(jù)2.csv’,encoding=’GBK’)tl = Timeline()for i in range(2010, 2020): map0 = (Map().add('省份',frame[[’地區(qū)’,str(i)+’年’]].values.tolist(), 'china').set_global_opts( title_opts=opts.TitleOpts(title='Map-{}年GDP(億元)'.format(i)), visualmap_opts=opts.VisualMapOpts(is_piecewise=True,pieces=[ {'min':0,'max':10000,'label':'1~10000','color':'cyan'}, {'min':10001,'max':20000,'label':'10001~20000','color':'yellow'}, {'min':20001,'max':50000,'label':'20001~50000','color':'orange'}, {'min':50001,'max':80000,'label':'50001~80000','color':'coral'}, {'min':80001,'max':120000,'label':'80001~12000','color':'red'},] ),)) tl.add(map0, '{}年'.format(i))tl.render('2010~2019年全國(guó)各地區(qū)GDP.html')
效果如下:
本案例的實(shí)現(xiàn)并不復(fù)雜,在pyecharts官方的參考案例基礎(chǔ)上稍加改動(dòng)即可實(shí)現(xiàn)。作為一名初學(xué)者,模仿案例是提升功力的重要途徑,通過(guò)模仿可以有效吃透代碼要具體實(shí)現(xiàn)的功能,量變到質(zhì)變,就能根據(jù)自己工作和學(xué)習(xí)的需要進(jìn)行靈活應(yīng)用。
以上就是python用pyecharts實(shí)現(xiàn)地圖數(shù)據(jù)可視化的詳細(xì)內(nèi)容,更多關(guān)于python pyecharts實(shí)現(xiàn)地圖數(shù)據(jù)可視化的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. CSS3實(shí)例分享之多重背景的實(shí)現(xiàn)(Multiple backgrounds)2. XML實(shí)體注入深入理解3. 不要在HTML中濫用div4. XML入門(mén)的常見(jiàn)問(wèn)題(三)5. CSS Hack大全-教你如何區(qū)分出IE6-IE10、FireFox、Chrome、Opera6. XML入門(mén)的常見(jiàn)問(wèn)題(四)7. XML 非法字符(轉(zhuǎn)義字符)8. Xpath語(yǔ)法格式總結(jié)9. 前端html+css實(shí)現(xiàn)動(dòng)態(tài)生日快樂(lè)代碼10. JavaScript多級(jí)判定代碼優(yōu)化淺析
