基于python轻松绘制地图

用地图显示数据是表达数据信息的最好的方式,说的多,不如一张图清晰明白。

本文将解释如何使用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,如果显示在左下方则最好,有没有谁能指教一下,实现图例位置定制化?可以留言赐教,感谢!

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180609G1PA1U00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券