-
python绘制中国大陆人口热力图
2020-09-19 23:33:38主要为大家详细介绍了Python绘制中国大陆人口热力图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 -
python人口热力图_利用Python绘制中国大陆人口热力图
2021-01-29 07:22:25https://mp.weixin.qq.com/s/Bh-L3syzJSHhLPZqzHvIyA这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改。本人使用的IDE是anaconda,因此事先在anaconda prompt 中安装Basemap包...https://mp.weixin.qq.com/s/Bh-L3syzJSHhLPZqzHvIyA
这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改。
本人使用的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中不包括中国省界,需要在下面网站下载中国省界(https://gadm.org/download_country_v3.html),点击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)
去国家统计局网站下载人口各省(http://www.stats.gov.cn/tjsj/pcsj/rkpc/6rp/indexce.htm),只需保留地区和总人口即可,保存为csv格式并改名为pop.csv。
读取数据,储存为dataframe格式,删去地名之中的空格,并设置地名为dataframe的index。
df = pd.read_csv('pop.csv')
new_index_list = []
for i in df["地区"]:
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(["地区"], axis=1)
df.set_index("region", inplace=True)
将Basemap中的地区与我们下载的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["地区"]:
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(["地区"], 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()
-
读取csv绘制直方图_python绘制中国大陆人口热力图
2021-01-14 21:45:16这篇文章主要为大家详细介绍了Python绘制中国大陆人口热力图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改。...这篇文章主要为大家详细介绍了Python绘制中国大陆人口热力图,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改。
本人使用的IDE是anaconda,因此事先在anaconda prompt 中安装Basemap包
conda install Basemap
新建文档,导入需要的包
import matplotlib.pyplot as pltfrom mpl_toolkits.basemap import Basemapfrom matplotlib.patches import Polygonfrom matplotlib.colors import rgb2heximport numpy as npimport 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)
去国家统计局网站下载人口各省,只需保留地区和总人口即可,保存为csv格式并改名为pop.csv。
读取数据,储存为dataframe格式,删去地名之中的空格,并设置地名为dataframe的index。
df = pd.read_csv('pop.csv')new_index_list = []for i in df["地区"]: i = i.replace("
-
1.3某地区人口热力图制作
2020-05-28 11:51:33上图为某区域的单日24小时人口总人口流动热力图,由蓝到橙色颜色变化,越往后说明该区域单日24小时内人口流动次数越高,再结合一些其他交通数据就可辅助分析一些交通现状问题。 2.制图相关知识 制作热力图主要...1.制图背景
新的工作中有涉及到一些为决策规划提供数据指导的内容,会需要制作关于人口流动方面的地图数据,这里以热力图为例。
如图:
上图为某区域的单日24小时人口总人口流动热力图,由蓝到橙色颜色变化,越往后说明该区域单日24小时内人口流动次数越高,再结合一些其他交通数据就可辅助分析一些交通现状问题。
2.制图相关知识
制作热力图主要用到的ArcGIS工具有两个,‘核密度分析’和‘按掩膜提取’,位置分别是Spatial Analyst Tools-密度分析-核密度分析,提取分析-按掩膜提取。
核密度分析(空间分析)理解
摘要:核密度分析使用核函数根据点或折线要素计算每单位面积的量值以将各个点或折线拟合为光滑锥状表面。
插图:
用法:(以下部分为arcgis文档介绍)
-
搜索半径参数值越大,生成的密度栅格越平滑且概化程度越高。值越小,生成的栅格所显示的信息越详细。
-
计算密度时,仅考虑落入邻域范围内的点或线段。如果没有点或线段落入特定像元的邻域范围内,则为该像元分配 NoData。
-
如果面积单位比例因子的单位相对于要素(点间距离或线段长度,取决于要素类型)很小,则输出值可能会很小。要获取较大的值,请选择单位较大的面积单位比例因子(例如,平方千米与平方米)。
-
对于 ArcGIS 10.2.1 及更高版本,默认搜索半径(带宽)是基于空间配置和输入点数计算的。此方法可更正空间异常值(距离其他输入点非常远的点),这样将不会导致搜索半径过大。
-
Population 字段中的值过大或过小都会使结果看起来并不直观。如果 population 字段的平均值远大于 1(例如,城市人口),则默认搜索半径可能会非常小,导致在输入点周围生成很小的环。如果 population 字段的平均值远小于 1,则计算的带宽看起来可能会非常大。在这些情况下,您可能想要输入自己的搜索半径。
-
密度计算依赖于准确的距离和面积计算。在大多数情况下,建议使用 GEODESIC 方法。如果要对投影准确保留了正确距离和面积的本地区域执行分析,可使用 PLANAR 方法。请参阅了解有关地理和投影坐标系的详细信息以确定适用的投影。
-
有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst。
简单理解,点线数据越密集,数据值越高,生成的栅格颜色就越深。
按掩膜提取(空间分析)理解
摘要:提取所定义掩膜区域内的栅格像元。
插图:
用法:(以下部分为arcgis文档介绍)
-
使用按掩膜提取工具的结果与设置掩膜环境大体相同,但二者的区别在于输入掩膜只适用于即时实例,而在环境中设置的掩膜可在发生更改或被禁用之前应用于所有工具。
-
当输入为多波段栅格时,将输出一个新的多波段栅格。对输入多波段栅格中的每一单个波段都会进行相应分析。
默认输出格式为地理数据库栅格。如果输出格式指定为 Esri 格网栈,请注意名称不得以数字开头,不得使用空格且长度不能超过九个字符。
-
如果输入内容为根据多波段栅格(超过三个波段)创建的图层,提取操作将只考虑图层加载(符号化)的波段。因此,输出的多波段栅格只会具有三个波段,分别对应于输入图层显示中使用的多波段栅格。
-
如果输入掩膜是栅格,则会将非 NoData 输入像元位置的值复制到输出栅格。可用来创建掩膜栅格的工具包括条件函数、条件测试,以及提取分析工具集中的其他工具。
-
当为输入栅格掩膜指定多波段栅格时,将只在运算中使用第一个波段。
-
如果输入栅格为整型,那么输出栅格也为整型。如果输入栅格为浮点型,则输出栅格也为浮点型。
-
有关适用于此工具的地理处理环境的详细信息,请参阅分析环境和 Spatial Analyst。
简单理解,设置一片区域提取该区域内的栅格像元。
3.制图流程
由arcgis文档可知,做核密度分析的源数据为点线数据,事先准备该类源数据后进行核密度分析。
实际工作中,取得的是面数据和表格数据,这里需要先将表格数据与面数据连接,获取到每个面的population字段。
以上取得population字段,即是实际的SUM字段值,然后利用toolbox要素转点工具即可得到所需要的用来做核密度分析的数据。
下一步做核密度分析之前需要先确保点数据坐标系为投影坐标系,因为核密度分析有涉及到搜索半径的选项。
系统工具箱-Spatial Analyst Tools.tbx-密度分析-核密度分析
如上图设置各个参数,输出像元大小和搜索半径以实际数据为准,这里示例数据为某省会城市的某三个街道的各个小区数据。
设置好参数和环境后即可进行核密度分析:
得到核密度分析后的栅格数据,可在图形属性设置渲染的颜色,分类等级或者按实际情况更换中断值。(这一步可在按掩膜提取后进行)
最后使用按掩膜提取工具,将所需区域的热力图提取出来即可。
系统工具箱-Spatial Analyst Tools.tbx-提取分析-按掩膜提取
获得成果热力图:
最后按照出图要求,设置布局视图、添加文本、添加比例尺、指北针等。
4.制图总结
数据准备:面数据需要转点或线,点线数据坐标系为投影坐标系。
制图过程:核密度分析设置像元大小和搜索半径根据实际情况变化,设置环境内的应用范围为所需制作热力图的范围。设置符号系统分类数量根据实际情况,采样数量大于10k时需要更改采样最大值。
-
-
python编写人口预测图_python绘制中国大陆人口热力图
2021-02-04 09:53:17这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改。本人使用的IDE是anaconda,因此事先在anaconda prompt 中安装Basemap包conda install Basemap新建文档,导入需要的包import ...这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改。
本人使用的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)
去国家统计局网站下载人口各省,只需保留地区和总人口即可,保存为csv格式并改名为pop.csv。
读取数据,储存为dataframe格式,删去地名之中的空格,并设置地名为dataframe的index。
df = pd.read_csv('pop.csv')
new_index_list = []
for i in df["地区"]:
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(["地区"], axis=1)
df.set_index("region", inplace=True)
将Basemap中的地区与我们下载的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["地区"]:
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(["地区"], 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()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
-
宜出行人口热力图
2018-06-28 14:32:00# Desc : 宜出行热力图 import hashlib import socket import os import json import time import random import datetime import requests from yichuxing.settings import qq_list, s_fre, proxyMeta, is_proxy ... -
利用Python绘制中国大陆人口热力图
2018-06-23 22:32:14https://mp.weixin.qq.com/s/Bh-L3syzJSHhLPZqzHvIyA这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改。本人使用的IDE是anaconda,因此事先在anaconda prompt 中安装Basemap包... -
百度慧眼人口热力图数据爬取接口已失效
2020-06-28 17:14:45原文写到“请大家不要对端口进行恶意攻击或高频访问,一次请求即可获取全市数据,而且数据按小时更新。” 现在客户端也看不到数据了,疑似key的额度用完了,考虑到有人恶意攻击端口,我已经删除原文。... -
python人口热力图_[宜配屋]听图阁
2020-12-16 13:34:40这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改。本人使用的IDE是anaconda,因此事先在anaconda prompt 中安装Basemap包conda install Basemap新建文档,导入需要的包import ... -
Python使用 matplotlib的basemap绘图之二--画美国地图和中国人口热力图(含省份)
2020-03-18 00:11:06在学习了之一的基础上,我们来继续深入学习一些Basemap绘图知识: 一、利用美国的经纬度画美国地图: 二、画中国(含省界或市界或县界)地区,注意加入台湾地区。...三、根据第六次人口普查结果,画中国人力热力图 -
python第三方库大概有多少人口_python绘制中国大陆人口热力图
2020-12-10 22:45:43这篇文章给出了如何绘制中国人口密度图,但是运行存在一些问题,我在一些地方进行了修改。本人使用的IDE是anaconda,因此事先在anaconda prompt 中安装Basemap包conda install Basemap新建文档,导入需要的包import ... -
全国各省市县 人口密度 数据 下载 空间数据 高精度 空间分布数据 多年 人口热力图 地理信息 GIS...
2018-11-28 15:42:00苏州百米 和千米的对比 数据下载方式 q 2944410238 苏州百米 和千米的对比 苏州百米 和千米的对比 西部地区,马尔康市 沿河流分布特征非常明显。 西部地区,马尔康市 沿河流分布特征非常明显。... -
腾讯人口密度热力图_可视化 | 腾讯前端工程师手把手教你实现热力图
2020-12-17 23:04:35热力图我们知道热力图以特殊高亮的形式来显示访客热衷的页面区域和访客所在的地理区域。通过热力图,我们可以直观清楚地看到页面上每一个区域的访客兴趣焦点,无须报告数据分析,图形化展现,无需任何页面分析经验。... -
腾讯人口密度热力图_遂宁、射洪、大英、蓬溪城市化进展:热力图、夜光图与数据...
2020-12-13 10:22:02一、热力图图1遂宁船山区热力图,老城区仍然十分火热,涪江东岸已经发展起来,西边的开发规模很大,但是新开发区域人气还不足。南边的南坝机场确实影响了城市发展,南边有大片的河谷平原,本科与金桥新区连片发展。... -
腾讯人口密度热力图_郑州、长沙、佛山三市从同比例热力图看城市发展是怎样的...
2020-12-15 03:44:16本文章并没有将三座城市的发展进行比较,只是三座城市经济总量相近,分别从热力图看城市发展而已郑州、长沙、佛山三市都是我国经济万亿城市中一员,分别位列2019年经济总量城市排名中第15-17名,那么从同比例热力图... -
echarts3地级市人口密度热力图
2017-04-19 15:14:15杭州热力图 title > head > < body > < div id = "main1" style = "height:600px;width:800px;margin-top:10px;margin-left:200px;" > div > < script src = "js/echarts.js" > script > < ... -
(壹)规划师方向技能:人口网格数据热力图制作
2017-03-03 14:58:13热力图(thermodynamics diagram)的概念 以特殊高亮的形式显示访客热衷的页面区域或访客所在的地理区域的图示。 热力图通常应用在点数据的分析上,但很多时候我们手上没有点数据,只有行政区域数据,这时候我们如何... -
热力地图高德_《高德地图》城市热力图开启查看方法
2021-01-14 15:58:54高德地图中有一个城市热力图的功能,开启后,可以查看到相应城市的人口流量等等数据。很多小伙伴想要看看自己当前城市的人口,或者看一下其它哪些地方人比较多,那么具体该如何查看呢?下面小编就来为大家介绍一下... -
python/folium绘制中国人口数量热力图(HeatMap)
2017-12-23 20:47:07# 将热力图添加到前面建立的map里 file_path = r"D:\Files\python\地图\人口.html" map_osm.save(file_path) # 保存为html文件 webbrowser.open(file_path) # 默认浏览器打开 结果: -
百度热力图颜色说明_城市分析工具热力图
2020-11-22 16:33:26一)热力图热力图是利用获取的手机基站定位该区域的用户数量,通过用户数量渲染地图颜色。通过坐标信息,实时展示该地区的人口密度。拿起手机——打开“百度地图”APP——点击右侧“图层”——在“地图设置”一栏,...