<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之繪制個(gè)人足跡地圖

          共 6112字,需瀏覽 13分鐘

           ·

          2020-06-07 23:22

          ??19d8ca4922eedce1883aae2d2ceb8d15.webp


          ? ???作者:挖數(shù)


          ? ? ?來(lái)源:挖數(shù)


          前兩年,足跡地圖小程序風(fēng)靡朋友圈,一時(shí)間大家都流行曬自己的旅行地圖。但是,筆者最近體驗(yàn)了好幾款足跡地圖的小程序,發(fā)現(xiàn)這些小程序雖然號(hào)稱是足跡地圖,但最多只是展示到省級(jí)別,無(wú)法精確到市級(jí)別,因此,筆者周末花了點(diǎn)時(shí)間,用Python來(lái)繪制自己的個(gè)人足跡地圖,可以精確到市級(jí)別。
          ??下面的部分,筆者將介紹如何簡(jiǎn)單地來(lái)繪制個(gè)人足跡地圖。
          ??首先我們需要安裝以下Python的第三方模塊:

          echarts-china-cities-pypkg==0.0.9??????
          echarts-china-provinces-pypkg==0.0.3??????
          pyecharts==1.6.2
          PyYAML==5.3.1?

          ??本項(xiàng)目的完整結(jié)構(gòu)如下:

          c50ab5881a4e295df2c64cca7bd3667d.webp完整的項(xiàng)目結(jié)構(gòu)

          ??我們?cè)陧?xiàng)目中采用YAML文件來(lái)配置自己旅行過(guò)的省以及省下面的市,筆者的配置文件如下:

          北京:
          ??-?延慶區(qū)
          ??-?昌平區(qū)
          ??-?海淀區(qū)
          ??-?東城區(qū)
          ??-?西城區(qū)
          ??-?大興區(qū)
          ??-?朝陽(yáng)區(qū)
          上海:
          ??-?嘉定區(qū)
          ??-?青浦區(qū)
          ??-?松江區(qū)
          ??-?寶山區(qū)
          ??-?閔行區(qū)
          ??-?奉賢區(qū)
          ??-?浦東新區(qū)
          ??-?崇明區(qū)
          ??-?徐匯區(qū)
          ??-?黃浦區(qū)
          ??-?靜安區(qū)
          ??-?楊浦區(qū)
          ??-?虹口區(qū)
          ??-?金山區(qū)
          ??-?長(zhǎng)寧區(qū)
          ??-?普陀區(qū)
          天津:
          ??-?濱海新區(qū)
          ??-?南開(kāi)區(qū)
          ??-?河西區(qū)
          ??-?和平區(qū)
          河北:
          ??-?保定市
          ??-?廊坊市
          山東:
          ??-?煙臺(tái)市
          ??-?青島市
          江蘇:
          ??-?南京市
          ??-?蘇州市
          ??-?揚(yáng)州市
          ??-?鎮(zhèn)江市
          ??-?無(wú)錫市
          浙江:
          ??-?杭州市
          ??-?紹興市
          ??-?寧波市
          ??-?舟山市
          ??-?湖州市
          ??-?嘉興市
          ??-?臺(tái)州市
          ??-?金華市
          江西:
          ??-?南昌市
          ??-?九江市
          安徽:
          ??-?黃山市
          湖北:
          ??-?武漢市
          湖南:
          ??-?長(zhǎng)沙市
          海南:
          ??-???谑?br />??-?三亞市
          四川:
          ??-?成都市
          廣東:
          ??-?湛江市

          ??接著我們利用Python腳本來(lái)生成足跡地圖。先是全國(guó)地圖,用于顯示省和直轄市的情況,china_map.py的代碼如下:

          #?-*-?coding:?utf-8?-*-
          #?author:?Jclian91
          #?place:?Pudong?Shanghai
          #?time:?2020/5/31?9:21?上午
          #?繪制個(gè)人足跡地圖:全國(guó)范圍
          import?yaml
          from?pyecharts.charts?import?Map
          from?pyecharts?import?options?as?opts

          #?省和直轄市
          with?open("travel_config.yml",?'r',?encoding='utf-8')?as?ymlfile:
          ????province_city_dict?=?yaml.safe_load(ymlfile)

          province_dict?=?dict(zip(province_city_dict.keys(),?[1]*len(province_city_dict.keys())))
          print(province_dict)

          #?maptype='china'?只顯示全國(guó)直轄市和省級(jí)
          map?=?Map(init_opts=opts.InitOpts(width='1200px',?height='800px'))
          map.set_global_opts(
          ????title_opts=opts.TitleOpts(title="個(gè)人足跡地圖"),
          ????visualmap_opts=opts.VisualMapOpts(max_=1,?is_piecewise=True,
          ??????????????????????????????????????pieces=[
          ????????????????????????????????????????{"max":?1,?"min":?1,?"label":?"去過(guò)",?"color":?"#4EA397"},
          ????????????????????????????????????????{"max":?0,?"min":?0,?"label":?"未去過(guò)",?"color":?"#FFFFFF"},
          ????????????????????????????????????????])??#最大數(shù)據(jù)范圍,分段
          ?????????????????????????????????????)
          map.add("個(gè)人足跡地圖",?data_pair=province_dict.items(),?maptype="china",?is_roam=True)
          map.render('全國(guó).html')

          運(yùn)行上述腳本,會(huì)生成全國(guó).html。為了保證圖片居中顯示,我們對(duì)該HTML中的下面一行:

          "a438407081634ceab6af1c965034ae16"?class="chart-container"?style="width:1200px;?height:800px;">div>

          的樣式(style)增加如下內(nèi)容:

          margin:auto;top:30px

          全國(guó)范圍的足跡地圖效果圖如下:

          b566095e95dc163f2f9644257c7ac84c.webp個(gè)人足跡地圖——全國(guó)
          ??接著,我們來(lái)生成每個(gè)省市的足跡地圖,利用province_map.py腳本,代碼如下:
          #?-*-?coding:?utf-8?-*-
          #?author:?Jclian91
          #?place:?Pudong?Shanghai
          #?time:?2020/5/31?10:01?上午
          #?繪制個(gè)人足跡地圖:省市范圍
          import?yaml
          from?pyecharts.charts?import?Map
          from?pyecharts?import?options?as?opts

          #?省和直轄市下面的市
          with?open("travel_config.yml",?'r',?encoding='utf-8')?as?ymlfile:
          ????province_city_dict?=?yaml.safe_load(ymlfile)


          for?province,?cities?in?province_city_dict.items():

          ????map?=?Map(init_opts=opts.InitOpts(width='1200px',?height='800px'))
          ????map.set_global_opts(
          ????????title_opts=opts.TitleOpts(title="個(gè)人足跡地圖-%s"?%?province),
          ????????visualmap_opts=opts.VisualMapOpts(max_=1,?is_piecewise=True,
          ??????????????????????????????????????????pieces=[
          ????????????????????????????????????????????{"max":?1,?"min":?1,?"label":?"去過(guò)",?"color":?"#4EA397"},
          ????????????????????????????????????????????{"max":?0,?"min":?0,?"label":?"未去過(guò)",?"color":?"#FFFFFF"},
          ????????????????????????????????????????????])??#最大數(shù)據(jù)范圍,分段
          ?????????????????????????????????????????)
          ????city_dict?=?dict(zip(cities,?[1]*len(cities)))
          ????map.add("個(gè)人足跡地圖-%s"?%?province,?data_pair=city_dict.items(),?maptype=province,?is_roam=True)
          ????map.render('./provinces/%s.html'?%?province)
          ????print("生成個(gè)人足跡地圖-%s?成功"?%?province)

          這時(shí),會(huì)在provinces目錄下生成每個(gè)省或者直轄市的足跡地圖,我們分別對(duì)每個(gè)HTML進(jìn)行修改,保證圖片居中。我們?cè)谶@里只展示三個(gè)省市的情況:

          088e9529facdff597198796624af5a8f.webp個(gè)人足跡地區(qū)——海南
          c46cccb2497f64d1a0d94885e4e40816.webp個(gè)人足跡地圖——江蘇
          68b16e2fa31056c2ccb76f477ec09e64.webp個(gè)人足跡地圖——浙江
          ??最后一步,也是最為關(guān)鍵的一步,就是我們要打通全國(guó)足跡地圖和每個(gè)省市足跡地圖的聯(lián)系,也就是說(shuō),我們點(diǎn)擊全國(guó)足跡地圖上去過(guò)的省份,那么可以點(diǎn)擊進(jìn)去查看該省市下的足跡地圖情況,比如說(shuō)去過(guò)哪些市。
          ??對(duì)此,我們修改生成的全國(guó).html文件,假設(shè)該地圖的圖像句柄為chart_a438407081634ceab6af1c965034ae16,那么在最后的
          <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>
                    色黄操逼网站 | 亚洲欧美一区二区三区在线 | 亚洲日本一级片 | 丝袜美腿亚洲综合 | 天天伊人久久 |