地图在生活、科研、商业等诸多领域都有着广泛的应用,从日常出行的导航,到地理信息系统(GIS)中的数据分析,再到市场调研中的区域分布展示。在 Python 的世界里,拥有丰富的库可以助力我们轻松创建和定制各类地图,将地理数据以直观、生动的方式呈现出来。本教程将带你踏入 Python 地图绘制的大门,从基础操作逐步深入到个性化定制,让你掌握使用 Python 制作地图的技能。
访问 Python 官方网站,根据你的操作系统(Windows、Mac 或 Linux)下载并安装 Python 3.x 版本。安装时勾选 “Add Python to PATH”,方便在命令行中使用 Python。
Python 3.11安装教程:https://blog.csdn.net/u014164303/article/details/145549489
Python 3.13安装教程:https://blog.csdn.net/u014164303/article/details/146024500
Python 3.11下载地址:https://pan.quark.cn/s/9c44793cb24c
Python 3.13下载地址:https://pan.quark.cn/s/bce37ebd7f70
PyCharm 社区版(免费)或专业版(需付费或申请教育版)。安装完成后,打开 PyCharm,创建一个新的项目,在项目设置中选择之前创建的虚拟环境作为项目的 Python 解释器。PyCharm 功能强大,提供代码自动补全、调试等功能,适合开发大型项目。
Pycharm安装教程:https://blog.csdn.net/u014164303/article/details/145674773
PyCharm下载地址:https://pan.quark.cn/s/5756c8cf8b2a
在开始绘制地图之前,需要安装一些必要的 Python 库。
pip install matplotlib
pip install geopandas
Shapely:用于处理几何形状的库,在 Geopandas 处理地理数据时,Shapely 提供了对几何对象(如点、线、多边形等)的操作支持。安装命令为:
pip install shapely
Descartes:这个库与 Matplotlib 结合使用,能够帮助绘制地理数据中的几何形状。安装命令:
pip install descartes
在 Python 脚本或交互式环境中,首先导入绘制地图所需的关键库。
import geopandas as gpd
import matplotlib.pyplot as plt
这里geopandas用于加载和处理地理数据,matplotlib负责地图的实际绘制与显示。
Geopandas 提供了便捷的方式来加载世界地图数据集,该数据集包含各个国家的边界信息及地理坐标。
world = gpd.read_file(gpd.datasets.get_path(‘naturalearth_lowres’))
执行上述代码后,world变量将成为一个包含世界地图数据的 GeoDataFrame 对象。你可以通过以下代码查看数据的概况:
print(world.head())
这会显示出数据的前几行,其中包含国家名称、ISO 代码、人口、区域等相关信息。
利用 Matplotlib 的绘图函数,绘制出基本的世界地图。
world.plot(figsize=(10, 6))
plt.title(“世界地图”)
plt.show()
figsize参数用于设置生成地图图像的大小,单位为英寸。plt.title添加地图的标题,plt.show则将绘制好的地图展示出来。运行这段代码,你将看到一个简单的世界地图。
为了使地图更具信息展示性,可以根据国家面积大小为每个国家分配不同的颜色。
world[‘area’] = world.geometry.area
world.plot(column=‘area’, figsize=(10, 6), legend=True, cmap=‘blues’)
plt.title(“按国家面积着色的世界地图”)
plt.show()
上述代码中,首先计算每个国家的面积并存储在area列中。然后在plot函数中,通过column='area’指定根据面积列来为国家着色,legend=True显示颜色图例,cmap='blues’设置颜色映射为蓝色系,面积越大颜色越深。
若想在地图上突出显示某些特定国家,如中国和美国,可通过数据过滤实现。
highlight = world[world[‘name’].isin((‘China’, ‘United States of America’))]
ax = world.plot(figsize=(10, 6), color=‘lightgray’)
highlight.plot(ax=ax, color=‘red’)
plt.title(“突出显示中国和美国的世界地图”)
plt.show()
这段代码使用isin方法筛选出中国和美国的数据,存储在highlight变量中。先以浅灰色绘制整个世界地图,然后在同一坐标轴ax上,用红色突出绘制中国和美国,使这两个国家在地图上显著区分开来。
在地图上标注国家名称能让地图信息更完整。
fig, ax = plt.subplots(figsize=(10, 6))
world.plot(ax=ax, color=‘lightblue’, edgecolor=‘black’)
for x, y, label in zip(world.geometry.centroid.x, world.geometry.centroid.y, world[‘name’]):
ax.text(x, y, label, fontsize=4, ha=‘center’, color=‘black’)
plt.title(“带有国家名称的世界地图”)
plt.show()
这里通过world.geometry.centroid获取每个国家几何形状的质心坐标(x和y),结合国家名称,使用ax.text方法在地图相应位置标注国家名称。fontsize设置字体大小,ha='center’使文字居中显示。
除国家名称外,还可添加更多地理要素,如城市、河流等。这需要额外的地理数据文件,例如,若有城市坐标数据文件cities.csv,可按以下方式读取并标注城市:
import pandas as pd
cities = pd.read_csv(‘cities.csv’)
fig, ax = plt.subplots(figsize=(10, 6))
world.plot(ax=ax, color=‘lightgreen’, edgecolor=‘black’)
for index, row in cities.iterrows():
x, y = row[‘longitude’], row[‘latitude’]
ax.plot(x, y, ‘ro’, markersize=5)
ax.text(x, y, row[‘city_name’], fontsize=4, ha=‘left’, color=‘red’)
plt.title(“带有城市标注的世界地图”)
plt.show()
上述代码读取城市数据文件,文件中应包含城市的经度、纬度和名称等信息。通过循环遍历城市数据,在地图上用红色圆点标注城市位置,并在旁边标注城市名称。
当完成地图的绘制和定制后,可以将其保存为图像文件,方便后续使用。
world.plot(figsize=(10, 6), color=‘lightyellow’)
plt.title(“保存的世界地图”)
plt.savefig(“world_map.png”, dpi=300)
plt.savefig方法用于保存地图,第一个参数为保存的文件名,dpi参数设置图像的分辨率,数值越高图像越清晰。保存的文件格式可以根据需要更改,如.jpg、.pdf等。
通过本教程的学习,你已经掌握了使用 Python 绘制地图的基本方法,包括地图数据的加载、样式自定义、地理信息添加以及地图保存等操作。在实际应用中,你可以根据具体需求,进一步探索和扩展地图绘制的功能,处理更复杂的地理数据,创建出满足各种需求的精美地图。