<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python精美地理可視化繪制——以中國歷年GDP數(shù)據(jù)為例

          共 4677字,需瀏覽 10分鐘

           ·

          2021-04-12 10:05

          點(diǎn)擊上方“IT共享之家”,進(jìn)行關(guān)注

          回復(fù)“資料”可獲贈Python學(xué)習(xí)福利

          專欄作者:zch,經(jīng)管專業(yè)研一在讀,Python數(shù)據(jù)分析及可視化愛好者。公眾號后臺回復(fù)入群,拉你進(jìn)技術(shù)群與大佬們近距離交流。



          有的時(shí)候,我們需要對不同國家或地區(qū)的某項(xiàng)指標(biāo)進(jìn)行比較,可簡單通過直方圖加以比較。但直方圖在視覺上并不能很好突出地區(qū)間的差異,因此考慮地理可視化,通過地圖上位置(地理位置)和顏色(顏色深淺代表數(shù)值差異)兩個(gè)元素加以體現(xiàn)。在本文案例中,基于第三方庫pyecharts,對中國各省2010-2019年的GDP進(jìn)行繪制。

          我們先來看看最終效果:




          01

          關(guān)于繪圖數(shù)據(jù)


          基于時(shí)間和截面兩個(gè)維度,可把數(shù)據(jù)分為截面數(shù)據(jù)、時(shí)間序列及面板數(shù)據(jù)。在本文案例中,某一年各省的GDP屬于截面數(shù)據(jù),多年各省的GDP屬于面板數(shù)據(jù)。因此,按照先易后難的原則,先對某一年各省的GDP進(jìn)行地理可視化,再進(jìn)一步構(gòu)建for循環(huán)對多年各省的GDP進(jìn)行可視化,形成最終的時(shí)間輪播圖。


          數(shù)據(jù)來源:本文案例使用的GDP數(shù)據(jù)來源于國家統(tǒng)計(jì)局官網(wǎng),可在線下載到本地,保存為csv或excel格式,用pandas中的DataFrame進(jìn)行讀取。



          02

          地理可視化



          一、全國各省單年GDP的可視化

          在pyecharts中可使用Map類型實(shí)現(xiàn)地理可視化,其原理是通過不同顏色填充以展現(xiàn)不同的數(shù)據(jù),options實(shí)現(xiàn)圖表的調(diào)整及修飾。代碼展示如下:

          import pandas as pd
          from pyecharts.charts import Map
          import pyecharts.options as opts

          frame = pd.read_csv('C:\\Users\\dell\\Desktop\\分省年度數(shù)據(jù)2.csv',encoding='GBK')
          map = Map()
          map.add("我國地區(qū)的GDP",frame[['地區(qū)','2019年']].values.tolist(),"china")
          map.set_global_opts(visualmap_opts=opts.VisualMapOpts(min_=500,max_=12000))
          map.render("2019年全國各地區(qū)GDP.html")

          解析:add()來實(shí)現(xiàn)了數(shù)據(jù)的加載,在配置3個(gè)參數(shù)中——第1個(gè)是圖的標(biāo)題,第2個(gè)通過.values.tolist()加載要顯示的數(shù)據(jù),第3個(gè)"china"確保顯示的地圖類型是中國。有個(gè)細(xì)節(jié)需要注意,Map 使用的中國各省份需要將全部的省、市、自治區(qū)等去掉。set_global_opts()實(shí)現(xiàn)了用顏色標(biāo)記數(shù)據(jù)的數(shù)值大小,參數(shù)min_和max_分別代表最小值和最大值。render()用于生成并保存圖像。

          效果如下:


          然而數(shù)據(jù)分布并不平均,可以通過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"},
              ]   
          ))

          效果如下:



          二、全國各省多年GDP的可視化

          由于要繪制2010-2019年的GDP數(shù)據(jù),可以考慮構(gòu)建一個(gè)for循環(huán),通過str(i)+"年"的形式訪問數(shù)據(jù)表格中處于不同列的各年GDP數(shù)據(jù)。繪制輪播圖可考慮調(diào)用Timeline,代碼如下:

          import pandas as pd
          from pyecharts import options as opts
          from pyecharts.charts import Map, Timeline

          frame = pd.read_csv('C:\\Users\\dell\\Desktop\\分省年度數(shù)據(jù)2.csv',encoding='GBK')
          tl = Timeline()
          for i in range(20102020):
              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年全國各地區(qū)GDP.html")

          效果如下:




          03

          小結(jié)


          本案例的實(shí)現(xiàn)并不復(fù)雜,在pyecharts官方的參考案例基礎(chǔ)上稍加改動(dòng)即可實(shí)現(xiàn)。作為一名初學(xué)者,模仿案例是提升功力的重要途徑,通過模仿可以有效吃透代碼要具體實(shí)現(xiàn)的功能,量變到質(zhì)變,就能根據(jù)自己工作和學(xué)習(xí)的需要進(jìn)行靈活應(yīng)用。

          看完本文有收獲?請轉(zhuǎn)發(fā)分享給更多的人

          IT共享之家

          入群請?jiān)谖⑿藕笈_回復(fù)【入群】

          ------------------- End -------------------

          往期精彩文章推薦:

          瀏覽 36
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  午夜福利3| 一区二区三区欧美 | 国产亚洲视频在线观看 | 日韩一级 片中文字幕 | 91视频直播做爱 |