日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python第三方库大概有多少人口_python绘制中国大陆人口热力图

發(fā)布時間:2023/12/20 python 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python第三方库大概有多少人口_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中不包括中國省界,需要在下面網站下載中國省界,點擊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)

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

讀取數據,儲存為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中的人口數據對應起來,建立字典。注意,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 == '內蒙':

s = '內蒙古'

statenames.append(s)

pop = df['人口數'][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 == '內蒙':

s = '內蒙古'

statenames.append(s)

pop = df['人口數'][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()

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持我們。

本文標題: python繪制中國大陸人口熱力圖

本文地址: http://www.cppcns.com/jiaoben/python/243741.html

總結

以上是生活随笔為你收集整理的python第三方库大概有多少人口_python绘制中国大陆人口热力图的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。