其他
数据治理 | 地址数据可视化—教你如何绘制地理散点图和热力图
本文目录
一、引言
二、经纬度可视化
1. 使用 Python 创建地图
(1)创建地图底图
(2)标记地点
(3)标记区域
2. 地理散点图
3. 地理热力图
三 、结束语
本文共4772个字,阅读大约需要18分钟,欢迎指正!对话框发送"0617"获得本文同款数据!
Part1引言
Part2经纬度可视化
(1)使用 Python 创建地图
folium
是其中非常简单易用的一个,如果你是 Windows 用户并且已经安装了 Python3 环境,那么在命令提示符中使用命令 pip install folium
即可安装该模块。安装完成后就可以快速上手生成地图了。(1)创建地图底图
# 导入 Python 地图处理模块
import folium
# 生成地图底图
My_map = folium.Map(
# 地图的初始中心点,纬度在前,经度在后;
# 此点为 杭州市政府 的经纬度
location=[30.246026,120.210792],
# 地图初始缩放比例,数值越小,放大程度越低
# 如果设置为 1或2,将会得到一个世界地图
zoom_start=15,
# 地图底图的风格,可以使用模块提供的底图,也可以使用
# 其他渠道的底图,无需科学上网就能在国内使用的
# 部分底图风格已经以注释的形式罗列在下方,
# 此处使用高德提供的底图
tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
# 'OpenStreetMap' : 开放街道底图,默认值
# 'Stamen Watercolor': 水墨画底图
# 'Stamen Terrain' : 地势地形底图
# 'Stamen Toner' : 黑白无标记底图
# 高德地图提供的街道图 url:'http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}'
# 是否在地图左下角添加比例尺
control_scale=True,
# 使用第三方提供的底图时需要用到的参数
attr='default'
)
# 展示生成的地图底图,需要在 Jupyter notebook 中运行才可以看到
My_map
(2)标记地点
注意:当使用的地图底图是模块自带的底图时,默认使用的是 WGS84 坐标系,使用时需要传入 WGS84 坐标系的坐标点(经纬度);而当使用高德提供的地图底图时,则使用的是 GCJ-02 坐标系,需要传入 GCJ-02 坐标系的坐标点 ,否则会发生坐标偏移,导致标记的位置与实际的位置不一致。
# 地点标记
folium.Marker(
# 标记地点的经纬度
# 这里使用的是杭州市政府的经纬度
location = [30.246026,120.210792],
# 标记的样式,使用此参数即可
popup='<i>Mt. Hood Meadows</i>',
# 标记点的颜色、形状
icon=folium.Icon(
icon='heart', # 标记点的内部形状,这里设置为心形
color='pink', # 外部颜色设置为粉色
icon_color ='red'# 内部颜色设置为红色
)
).add_to(My_map) # add_to:将设置的标记添加到底图上
# 查看添加了标记的地图
My_map
(3)标记区域
# 添加区域标记
folium.Circle(
# 标记区域的中心点经纬度,此点为杭州市政府
location=[30.246026,120.210792],
# 标记圆形区域的半径,单位:米
radius=2000,
# 标记区域的形状,此参数代表使用圆形
popup='The waterfront',
# 标记区域轮廓线的颜色
color="lightgreen",
# 标记区域内部填充色
fill_color='skyblue',
# 标记区域内部填充色的透明度
# 从 0 到 1;数字越小,透明度越高
fill_opacity=0.4
).add_to(My_map) # 将标记的区域添加到地图底图上
# 查看添加区域标记后的地图
My_map
(2)地理散点图
import pandas as pd
data = pd.read_csv('1000条杭州地址.csv')
data.head() # 输出前 5 行
Scatter_map
,在新的地图上标记位置可以免受其他组件的影响。另外,我们可以标记出指定行政区划的轮廓线,这样有利于我们识别地区和散点的位置。创建地图和添加行政区划轮廓线的代码如下:# 创建一个新的地图底图,用于地理散点图
Scatter_map= folium.Map(
location=[30.246026,120.210792],
zoom_start=15,
# 使用高德街道地图,需要使用对应坐标系的经纬度(GCJ-02)
tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
control_scale=True,
attr='default')
# 添加杭州市的轮廓线
# 杭州市行政区划轮廓线 url
url = 'https://geo.datav.aliyun.com/areas/bound/geojson?code=330100_full'
folium.GeoJson(
url,
style_function = lambda _: {
# 轮廓线内部的填充色
'fillColor': 'skyblue',
# 轮廓线颜色
'color': 'blue',
# 轮廓线粗细
'weight': 1,
# 轮廓线稠密度
'dashArray': '5, 8'},
).add_to(Scatter_map) # 将轮廓线添加到新的地图底图上
Scatter_map
# 散点对象
incidents = folium.map.FeatureGroup()
# 使用准备好的杭州市内地址数据
for lat,lng in zip(data['经度'], data['纬度']):
'''遍历所有位置的经纬度,每一个点都标记在地图上'''
incidents.add_child(
folium.CircleMarker(
[lng, lat], # 散点的经纬度,纬度在前
radius=1, # 散点的半径
color='red', # 散点的主体颜色
fill=False, # 散点是否为实心
opacity=0.3, # 散点的透明度
fill_color='blue', # 散点内部填充色
fill_opacity=1, # 内部填充的透明度,0-1,1 代表完全不透明
)
)
# 将散点图对象添加到地图上
Scatter_map.add_child(incidents)
Scatter_map
Scatter_map.save("我的地理散点图.html")
(3)地理热力图
# 创建一个新的地图底图,用于地理热力图
Heat_map= folium.Map(
location=[30.246026,120.210792],
zoom_start=9,
# 使用高德街道地图,需要使用对应坐标系的经纬度(GCJ-02)
tiles='http://webrd02.is.autonavi.com/appmaptile?lang=zh_cn&size=1&scale=1&style=7&x={x}&y={y}&z={z}',
control_scale=True,
attr='default')
# 添加杭州市的轮廓线
# 杭州市行政区划轮廓线 url
url = 'https://geo.datav.aliyun.com/areas/bound/geojson?code=330100_full'
folium.GeoJson(
url,
style_function = lambda _: {
# 轮廓线内部区域的填充色
'fillColor': 'skyblue',
# 轮廓线颜色
'color': 'blue',
# 轮廓线粗细
'weight': 1,
# 轮廓线稠密度
'dashArray': '5, 8'},
).add_to(Heat_map) # 将轮廓线添加到新的地图底图上
# 导入热力图函数
from folium.plugins import HeatMap
HeatMap(
# 经纬度数据值,可以是numpy.array对象或者二维列表
# 纬度在前,经度在后
data[['纬度', '经度']].values,
# 每个点热力强度,直接影响热力图色温
radius=20,
# 热力拟合程度,或称模糊程度
blur=15,
# 热力程度与颜色对应值,不建议自定义该参数, 会很丑
# gradient={0.4: 'green', 0.65: 'orange', 1: 'red'}
).add_to(Heat_map) # 将热力图添加到地图底图上
Heat_map
Heat_map.save("我的地理热力图.html")
Part3结束语
星标⭐我们不迷路!想要文章及时到,文末“在看”少不了!
点击搜索你感兴趣的内容吧
往期推荐
数据Seminar
这里是大数据、分析技术与学术研究的三叉路口
文 | 《社科领域大数据治理实务手册》
欢迎扫描👇二维码添加关注