python制作一个山东省的地图热力图。可以这么做。
###################################################################
###################################### 制作山东省热力图
###################################################################
import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import pylab as mpl # import matplotlib as mpl
# 设置汉字格式
# sans-serif就是无衬线字体,是一种通用字体族。
# 常见的无衬线字体有 Trebuchet MS, Tahoma, Verdana, Arial, Helvetica,SimHei 中文的幼圆、隶书等等
mpl.rcParams['font.sans-serif'] = ['FangSong'] # 指定默认字体
mpl.rcParams['axes.unicode_minus'] = False # 解
albers_proj = '+proj=aea +lat_1=25 +lat_2=47 +lon_0=105'
shandong = gpd.read_file('region_map/MLgis/shandong.json')
shandong.name
number = np.random.randint(1000, 10000, 16)
number
df_num = pd.DataFrame({"city": shandong.name,
"number": number })
df_num
shandong
data_with_geometry = pd.merge(left=df_num,
right=shandong,
left_on='city',
right_on='name',
how='right')
data_with_geometry = gpd.GeoDataFrame(data_with_geometry, crs='EPSG:4326')
fig, ax = plt.subplots(figsize=(12, 8))
ax = data_with_geometry.to_crs(albers_proj).plot(ax=ax,
column='number',
cmap='Reds',
legend=True,
scheme='Percentiles',
classification_kwds={
'pct': [1, 50, 99, 100]
},
legend_kwds={
'loc': 'lower right',
'title': '山东各地市志愿者组织数量',
'shadow': True}
)
得到结果如图:
其中山东省的json格式数据可以从网上找。