用地图显示数据是表达数据信息的最好的方式,说的多,不如一张图清晰明白。
本文将解释如何使用python的geopandas库轻松绘制一张中国地图。
#----------------------------------------------
首先当然加载数据库:
geopandas绘制图的基本逻辑是使用 数据点 或者 多个点构成的区域进行绘制,这样的数据可以自己构建。
# 1. 数据点的表达以及绘制
得到图1:
# 2. 构建区域
得到图2
# 3. 将计算区域图面积
# 4. 将区域图边缘圆滑化
得到图3
# 以上讲解了 geopandas库的基本功能 以及 作图的基本构件,下面直接制作地图
为了方便,直接读取shp文件数据,使用geo.GeoDataFrame.from_file函数
geo_dataframe=geo.GeoDataFrame.from_file('province_2004.shp')# 读取shp 地图格式数据,读取后的数据结构为DataFrame格式
得到DataFrame数据结构数据:
其数据结构类型为DataFrame,其数据结构特点是存在一个区域数据列:geometry。
利用数据进行作图:
geo_dataframe.plot(column='AD2004',edgecolor='black',cmap='Greens',legend=True)
得到图4:
图的颜色依据AD2004列的数据值来显示深浅。参数:column指定显示颜色深浅的对应的指标; edgecolor指定县界线的颜色,cmap指定图颜色类型,legend就不用说了。
读取地级市的shp数据,同理很容易得到更细致的图:
china=geo.GeoDataFrame.from_file('dijishi_2004.shp') # 导入中国地图底图
china.plot(column='AREA', cmap = plt.cm.Greens,k=10,edgecolor='black',legend=True)
得到图5:
# 有时候我们希望分层级来显示
得到图6:
# 通过以上介绍,已经可以通过读取shp数据或者自己构建数据来做地图了。
下篇将介绍如何制作叠加效果图(地图之上添加想显示的其他位置信息)方式,例如:
求助:
在学习使用geopandas过程中,发现制作地图时,无法控制 legend ( 图例 ) 的显示位置,例如图6,如果显示在左下方则最好,有没有谁能指教一下,实现图例位置定制化?可以留言赐教,感谢!
领取专属 10元无门槛券
私享最新 技术干货