亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

python繪制中國大陸人口熱力圖

 更新時間:2018年11月07日 08:36:07   作者:qq_41816368  
這篇文章主要為大家詳細介紹了Python繪制中國大陸人口熱力圖,具有一定的參考價值,感興趣的小伙伴們可以參考一下

這篇文章給出了如何繪制中國人口密度圖,但是運行存在一些問題,我在一些地方進行了修改。

本人使用的IDE是anaconda,因此事先在anaconda prompt 中安裝Basemap包

conda install Basemap

新建文檔,導入需要的包

import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Polygon
from matplotlib.colors import rgb2hex
import numpy as np
import pandas as pd

Basemap中不包括中國省界,需要在下面網(wǎng)站下載中國省界,點擊Shapefile下載。

生成中國大陸省界圖片。

plt.figure(figsize=(16,8))
m = Basemap(
 llcrnrlon=77,
 llcrnrlat=14,
 urcrnrlon=140,
 urcrnrlat=51,
 projection='lcc',
 lat_1=33,
 lat_2=45,
 lon_0=100
)
m.drawcountries(linewidth=1.5)
m.drawcoastlines()
 
m.readshapefile('gadm36_CHN_shp/gadm36_CHN_1', 'states', drawbounds=True)

去國家統(tǒng)計局網(wǎng)站下載人口各省,只需保留地區(qū)和總人口即可,保存為csv格式并改名為pop.csv。

讀取數(shù)據(jù),儲存為dataframe格式,刪去地名之中的空格,并設置地名為dataframe的index。

df = pd.read_csv('pop.csv')
new_index_list = []
for i in df["地區(qū)"]:
 i = i.replace(" ","")
 new_index_list.append(i)
new_index = {"region": new_index_list}
new_index = pd.DataFrame(new_index)
df = pd.concat([df,new_index], axis=1)
df = df.drop(["地區(qū)"], axis=1)
df.set_index("region", inplace=True)

將Basemap中的地區(qū)與我們下載的csv中的人口數(shù)據(jù)對應起來,建立字典。注意,Basemap中的地名與csv文件中的地名并不完全一樣,需要進行一些處理。

provinces = m.states_info
statenames=[]
colors = {}
cmap = plt.cm.YlOrRd
vmax = 100000000
vmin = 3000000
 
for each_province in provinces:
 province_name = each_province['NL_NAME_1']
 p = province_name.split('|')
 if len(p) > 1:
  s = p[1]
 else:
  s = p[0]
 s = s[:2]
 if s == '黑龍':
  s = '黑龍江'
 if s == '內(nèi)蒙':
  s = '內(nèi)蒙古'
 statenames.append(s)
 pop = df['人口數(shù)'][s]
 colors[s] = cmap(np.sqrt((pop - vmin) / (vmax - vmin)))[:3]

最后畫出圖片即可

ax = plt.gca()
for nshape, seg in enumerate(m.states):
 color = rgb2hex(colors[statenames[nshape]])
 poly = Polygon(seg, facecolor=color, edgecolor=color)
 ax.add_patch(poly)
 
plt.show()

完整代碼如下

# -*- coding: utf-8 -*-
 
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
from matplotlib.patches import Polygon
from matplotlib.colors import rgb2hex
import numpy as np
import pandas as pd
 
plt.figure(figsize=(16,8))
m = Basemap(
 llcrnrlon=77,
 llcrnrlat=14,
 urcrnrlon=140,
 urcrnrlat=51,
 projection='lcc',
 lat_1=33,
 lat_2=45,
 lon_0=100
)
m.drawcountries(linewidth=1.5)
m.drawcoastlines()
 
m.readshapefile('gadm36_CHN_shp/gadm36_CHN_1', 'states', drawbounds=True)
 
df = pd.read_csv('pop.csv')
new_index_list = []
for i in df["地區(qū)"]:
 i = i.replace(" ","")
 new_index_list.append(i)
new_index = {"region": new_index_list}
new_index = pd.DataFrame(new_index)
df = pd.concat([df,new_index], axis=1)
df = df.drop(["地區(qū)"], axis=1)
df.set_index("region", inplace=True)
 
provinces = m.states_info
statenames=[]
colors = {}
cmap = plt.cm.YlOrRd
vmax = 100000000
vmin = 3000000
 
for each_province in provinces:
 province_name = each_province['NL_NAME_1']
 p = province_name.split('|')
 if len(p) > 1:
  s = p[1]
 else:
  s = p[0]
 s = s[:2]
 if s == '黑龍':
  s = '黑龍江'
 if s == '內(nèi)蒙':
  s = '內(nèi)蒙古'
 statenames.append(s)
 pop = df['人口數(shù)'][s]
 colors[s] = cmap(np.sqrt((pop - vmin) / (vmax - vmin)))[:3]
 
ax = plt.gca()
for nshape, seg in enumerate(m.states):
 color = rgb2hex(colors[statenames[nshape]])
 poly = Polygon(seg, facecolor=color, edgecolor=color)
 ax.add_patch(poly)
 
plt.show()

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • python在windows調(diào)用svn-pysvn的實現(xiàn)

    python在windows調(diào)用svn-pysvn的實現(xiàn)

    本文主要介紹了python在windows調(diào)用svn-pysvn的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-02-02
  • 21行Python代碼實現(xiàn)拼寫檢查器

    21行Python代碼實現(xiàn)拼寫檢查器

    21行python代碼實現(xiàn)的一個簡易但是具備完整功能的拼寫檢查器,感興趣的小伙伴們可以參考一下
    2016-01-01
  • python貪吃蛇核心功能實現(xiàn)上

    python貪吃蛇核心功能實現(xiàn)上

    我想大家都玩過諾基亞上面的貪吃蛇吧,這篇文章將帶你一步步用python語言實現(xiàn)一個snake小游戲,文中的示例代碼講解詳細,感興趣的可以了解一下
    2022-09-09
  • python讀寫excel數(shù)據(jù)--pandas詳解

    python讀寫excel數(shù)據(jù)--pandas詳解

    這篇文章主要為大家詳細介紹了python操作EXCEL讀數(shù)據(jù)、寫數(shù)據(jù)的實例源碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-09-09
  • 如何在django里上傳csv文件并進行入庫處理的方法

    如何在django里上傳csv文件并進行入庫處理的方法

    這篇文章主要介紹了如何在django里上傳csv文件并進行入庫處理的方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Python用requests-html爬取網(wǎng)頁的實現(xiàn)

    Python用requests-html爬取網(wǎng)頁的實現(xiàn)

    本文主要介紹了Python用requests-html爬取網(wǎng)頁的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 五分鐘學會Python 模塊和包、文件

    五分鐘學會Python 模塊和包、文件

    通過學習本文可以五分鐘掌握Python 模塊和包、文件的相關知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Python小紅書旋轉驗證碼識別實戰(zhàn)教程

    Python小紅書旋轉驗證碼識別實戰(zhàn)教程

    這篇文章主要介紹了Python小紅書旋轉驗證碼識別實戰(zhàn)教程,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-08-08
  • Django中間件Middleware功能詳解

    Django中間件Middleware功能詳解

    Django中間件(Middleware)是Django框架中的一個功能,它允許開發(fā)者在處理請求和響應的過程中插入自定義代碼,中間件能夠在視圖函數(shù)執(zhí)行前后進行操作,本文給大家介紹Django中間件Middleware功能,感興趣的朋友一起看看吧
    2024-10-10
  • python入門之Tkinter使用的方法詳解

    python入門之Tkinter使用的方法詳解

    作為Python開發(fā)者,圖形用戶界面(GUI)開發(fā)是必備技能之一,本文將介紹Python自帶的GUI工具包TKinter,這篇文章主要給大家介紹了關于python入門之Tkinter使用的相關資料,需要的朋友可以參考下
    2022-03-03

最新評論