手搓Python代码制作可视化地图
在社会学、公共管理、社会心理学研究中,很多时候会需要对文本内容进行分析,获取某些数据后需要在地图上制作一个可视化结果。这次就用手搓Python代码来制作数据的可视化地图。
制作这种可视化地图,主要分为两部分。
获取底版地图
1.获取地图json数据
阿里云的数据可视化平台提供了具有审图号的标准地图json文件
地址:
http://datav.aliyun.com/portal/school/atlas/area_selector
点击页面右侧 其他类型 后边的下载标记
可以下载到json格式的地图文件
json格式的地图数据可以打开看看,是通过各种边界坐标来绘制各地区的地图。
2.json格式数据转成shp格式地图数据
这里我们使用Mapshaper工具转换json为shp格式,shp格式可以直接使用python包Geopandas进行读取和编辑
选择页面的select,读取json文件
随后点击右上角的Export,导出地图数据为shapefile格式文件,下载下来的是一个压缩包。
请将整个压缩包解压,并且将全部文件拷贝到你的python代码的目录下。
数据链接至底版地图
建议将数据处理成csv文件,列1为省份,列2为数据。直接上代码。
1.导入Python包
import geopandas as gpd
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib as mpl
没有安装包就用 pip install XXX来安装
2.下面是设置画图时可以显示中文标注
mpl.rcParams['font.sans-serif'] = ['SimSun'] # SimHei SimSun FangSong Kaiti LiSu YouYuan STSong
mpl.rcParams['font.family'] = 'sans-serif'
plt.rcParams['axes.unicode_minus'] = False
3.加载数据-矢量地图数据的位置
regions = gpd.GeoDataFrame.from_file('中国地图.shp', encoding='utf-8')
4.然后用pandas读取数据的csv文件,并且处理下
data = pd.read_csv('666.csv')
data['area_name'] = data['prov_name']
5.链接地图矢量数据属性表与你的数据表格
reg = pd.merge(regions, data, left_on='name', right_on='area_name')
reg02 = reg.copy()
reg02['coords'] = reg02['geometry'].apply(lambda x: x.representative_point().coords[0])
6.对画出来的图片进行稍微的修改
reg02.plot(figsize=(16, 16), # 图像大小
column='value', # 分级设色字段
scheme='quantiles', # MapClassify-分级类型
legend=True, # 图例
legend_kwds={"loc": "lower left"},
cmap='Reds', # 渐变色带的名称
edgecolor='k') # 边框颜色
for n, i in enumerate(reg02['coords']):
plt.text(i[0] - 0.13, i[1], reg02['area_name'][n]) # 标注位置X,Y,标注内容
7.最后导出这张图片
plt.savefig('777.png', dpi=300)
最后放上预览图
地图审图号
GS(2021)6375号
第一,人生故事分享
第二,个人近况分享
第三,匿名故事分享
第四,计算机知识分享
第五,科研知识分享
第六,旅游知识分享
第N 。。。。。。。。。