python基于场景的热力图,python画热力分布图

  python基于场景的热力图,python画热力分布图

  https://mp.weixin.qq.com/s/Bh-L3syzJSHhLPZqzHvIyA

  这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改。

  本人使用的集成驱动电子设备是蟒蛇,因此事先在水蟒提示中安装底图包

  城市安装底图新建文档,导入需要的包

  将matplotlib.pyplot作为血小板计数导入

  从mpl_toolkits.basemap导入底图

  从matplotlib .补丁导入多边形

  从matplotlib.colors导入rgb2hex

  将数组作为铭牌导入

  进口熊猫作为螺纹中径

  底图中不包括中国省界,需要在下面网站下载中国省界(https://gadm。org/download _ country _ v3html),点击Shapefile下载。

  生成中国大陆省界图片。

  plt.figure(figsize=(16,8))

  m=底图(

  llcrnrlon=77,

  llcrnrlat=14,

  urcrnrlon=140,

  urcrnrlat=51,

  投影=lcc ,

  lat_1=33,

  lat_2=45,

  lon_0=100

  )

  m.drawcountries(线宽=1.5)

  m.drawcoastlines()

  m。读取形状文件( gadm 36 _ CHN _ shp/gadm 36 _ CHN _ 1 , states ,drawbounds=True)

  去国家统计局网站下载人口各省(http://www。统计数据。gov . cn/tjsj/pcsj/rkpc/6rp/indexce。htm),只需保留地区和总人口即可,保存为战斗支援车格式并改名为pop.csv。

  读取数据,储存为数据帧格式,删去地名之中的空格,并设置地名为数据帧的索引。

  df=pd.read_csv(pop.csv )

  new_index_list=[]

  对于df[中的我地区]:

  i=i.replace( ,)

  新索引列表附加

  new _ index={ " region ":new _ index _ list }

  new_index=pd数据框架(新索引)

  df=pd.concat([df,new_index],axis=1)

  df=df.drop([地区],轴=1)

  df.set_index(region ,inplace=True)

  将底图中的地区与我们下载的战斗支援车中的人口数据对应起来,建立字典。注意,底图中的地名与战斗支援车文件中的地名并不完全一样,需要进行一些处理。

  省份=m.states _信息

  statenames=[]

  colors={}

  cmap=plt.cm.YlOrRd

  vmax=100000000

  vmin=3000000

  对于各省中的每个省:

  province _ NAME=each _ province[ NL _ NAME _ 1 ]

  p=province_name.split( )

  如果镜头(p) 1:

  s=p[1]

  否则:

  s=p[0]

  s=s[:2]

  如果s==黑龍:

  s=黑龙江

  如果s==内蒙:

  s=内蒙古

  州名.追加

  pop=df[人口数][s]

  colors[s]=cmap(NP。sqrt((pop-vmin)/(VMAX-vmin)))[:3]

  最后画出图片即可

  ax=plt.gca()

  对于nshape,seg in enumerate(m.states):

  color=RGB 2 hex(colors[statenames[n shape]])

  poly=多边形(seg,facecolor=color,edgecolor=color)

  ax.add_patch(多边形)

  plt.show()

  完整代码如下

  # -*-编码:utf-8 -*-

  将matplotlib.pyplot作为血小板计数导入

  从mpl_toolkits.basemap导入底图

  从matplotlib .补丁导入多边形

  从matplotlib.colors导入rgb2hex

  将数组作为铭牌导入

  进口熊猫作为螺纹中径

  plt.figure(figsize=(16,8))

  m=底图(

  llcrnrlon=77,

  llcrnrlat=14,

  urcrnrlon=140,

  urcrnrlat=51,

  投影=lcc ,

  lat_1=33,

  lat_2=45,

  lon_0=100

  )

  m.drawcountries(线宽=1.5)

  m.drawcoastlines()

  m。读取形状文件( gadm 36 _ CHN _ shp/gadm 36 _ CHN _ 1 , states ,drawbounds=True)

  df=pd.read_csv(pop.csv )

  new_index_list=[]

  对于df[中的我地区]:

  i=i.replace( ,)

  新索引列表附加

  new _ index={ " region ":new _ index _ list }

  new_index=pd数据框架(新索引)

  df=pd.concat([df,new_index],axis=1)

  df=df.drop([地区],轴=1)

  df.set_index(region ,inplace=True)

  省份=m.states _信息

  statenames=[]

  colors={}

  cmap=plt.cm.YlOrRd

  vmax=100000000

  vmin=3000000

  对于各省中的每个省:

  province _ NAME=each _ province[ NL _ NAME _ 1 ]

  p=province_name.split( )

  如果镜头(p) 1:

  s=p[1]

  否则:

  s=p[0]

  s=s[:2]

  如果s==黑龍:

  s=黑龙江

  如果s==内蒙:

  s=内蒙古

  州名.追加

  pop=df[人口数][s]

  colors[s]=cmap(NP。sqrt((pop-vmin)/(VMAX-vmin)))[:3]

  ax=plt.gca()

  对于nshape,seg in enumerate(m.states):

  color=RGB 2 hex(colors[statenames[n shape]])

  poly=多边形(seg,facecolor=color,edgecolor=color)

  ax.add_patch(多边形)

  plt.show()

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: