国外课栈 - 国外电子信息技术视角栈

透视Matplotlib核心功能和工具包 - Cartopy工具包

 二维码 22

关联知识

Cartopy是用于在Matplotlib上绘制地理地图的第三方工具包。Cartopy具有各种各样的功能,可以满足许多不同的用户群体。 在这里,我们将尝试介绍企业中通常使用的大多数功能。

地理地图以经度和纬度绘制,均以度为单位。 经度绘制在x轴上,并且从西向180度(-180)到东向180度(180)变化。 纬度绘制在y轴上,从向南90度(-90)到向北90度(90)变化。 地图上的位置由其经度和纬度值标识。

绘制基本地图特征

在此,我们将学习cartopy提供的用于绘制地图的基本功能。 将涵盖国家边界,沿海地区与陆地,陆地区域,海洋,河流和湖泊的边界等特征。 它还将介绍如何提供背景图像以实现更好的可视化效果。

导入所需库:

import matplotlib.pyplot as plt
import cartopy.crs as ccrs
import cartopy.feature as cfeature

步骤细节:

  • 如下定义图和轴:

fig = plt.figure(figsize=(12,8))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())

  • 使用以下命令设置范围和背景图像:

ax.set_global()
ax.stock_img()

  • 添加所需的功能以在地图上进行绘制,如下所示:

ax.add_feature(cfeature.LAND, color='wheat')
ax.add_feature(cfeature.OCEAN,
color='skyblue')
ax.add_feature(cfeature.COASTLINE, linestyle=
'-',lw=3)
ax.add_feature(cfeature.BORDERS, linestyle=
':')
ax.add_feature(cfeature.LAKES,
alpha=0.5, color='y')
ax.add_feature(cfeature.RIVERS,
color='blue')
ax.tissot(facecolor=
'orange', alpha=0.4) # Tissot's indicatrix in cartography

  • 设置标题和标签,如下所示:

ax.set_title('Cartopy Map Features - Demo', size=20, weight='bold', color='g')

ax.
text(0.5, -0.06, 'Longitude', va='bottom', ha='center', size=15, color='r',
       rotation=
'horizontal', rotation_mode='anchor', transform=ax.transAxes)
ax.
text(-0.02, 0.55, 'Latitude', va='bottom', ha='center', size=15, color='b',
        rotation=
'vertical', rotation_mode='anchor', transform=ax.transAxes)

  • 使用以下命令在屏幕上显示地图:

plt.show()

分解代码

  • import cartopy.crs as ccrs 导入负责设置参考坐标系的包。
  • import cartopy.feature as cfeature导入用于绘制各种要素的包,例如陆地,海洋,河流和湖泊。
  • ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree()) 定义要在其上绘制地图的轴,如下所示:
  • (1,1,1)指定它是1 x 1网格中的第一个轴,这实际上意味着它是整个图形中的唯一图。
  • projection = ccrs.PlateCarree()指定用于绘制地图的坐标参考系统。 Cartopy提供了许多这样的投影(参考坐标系)。
  • 投影仅给出了地图的轮廓,因此根据我们要绘制的内容,我们可以添加各种预定义的要素,然后绘制我们感兴趣的数据。
  • ax.set_global() 指定坐标系统的限制由整个地球形成,这恰好是默认设置。 通过覆盖此全局设置,我们可以设置较小的限制来绘制感兴趣的特定区域。
  • ax.stock_img()在背景上绘制默认图像,以提供更好的可视化效果。 也可以用我们自己的图像覆盖它。
  • ax.add_feature(cfeature.LAND, color='wheat') 使用小麦颜色设置绘制标记为土地的区域。
  • ax.add_feature(cfeature.OCEAN, color='skyblue')使用“天蓝色”颜色设置绘制海洋。
  • ax.add_feature(cfeature.COASTLINE, linestyle='-',lw=3)绘制沿沿海地区将土地和水分开的线,线宽为3点,虚线样式为虚线。
  • ax.add_feature(cfeature.BORDERS, linestyle=':')用冒号的线条样式绘制国家边界。
  • ax.add_feature(cfeature.LAKES, alpha=0.5, color='y')绘制具有黄色设置的湖泊。
  • ax.add_feature(cfeature.RIVERS, color='blue') 用蓝色绘制河流。
  • ax.tissot(facecolor='orange', alpha=0.4)绘制天梭的指标。
  • ax.set_title('Cartopy Map Features - Demo', size=20, weight='bold', color='g')打印具有各种与文本相关的属性的标题。
  • ax.text()用于打印x和y标签。 常规的ax.set_xlabel和ax.set_ylabel命令在这里不起作用,因为将轴控件赋予了ax.gridlines()函数,该函数也没有用于绘制x和y轴标签的预定义方法。

运行上述代码后,您应该在屏幕上看到以下地图:

图略

绘制投影

使用网格线和标签

在地图上绘制位置

绘制具有政治边界的国家地图

使用GeoPandas和Cartopy绘制国家地图

绘制世界人口稠密的地方

绘制人口稠密的前五名和后五名国家

绘制全球温度

绘制时区

绘制动画地图

...更多

阅读完整文档

文章分类: 编程碎语Matplotlib