You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Spyder中离线绘制地图坐标(无需浏览器)

在Spyder内直接绘制地图坐标的可行方案

完全可以无需浏览器或外部工具,直接在Spyder内完成坐标的地图绘制,以下是几个实用的Python包及实现方式:

1. Matplotlib + Cartopy

Cartopy是Matplotlib的地理扩展库,专注于静态地图绘制,能直接在Spyder的内置绘图窗口渲染结果。

安装命令

pip install cartopy matplotlib

示例代码

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

# 待绘制的坐标(纬度,经度)及对应名称
coords = [(39.9042, 116.4074), (40.7128, -74.0060), (35.6762, 139.6503)]
city_names = ['北京', '纽约', '东京']

# 创建带地理投影的画布
fig, ax = plt.subplots(subplot_kw={'projection': ccrs.PlateCarree()})

# 添加基础地图元素:海岸线、陆地、海洋
ax.add_feature(cfeature.COASTLINE)
ax.add_feature(cfeature.LAND, facecolor='lightgray')
ax.add_feature(cfeature.OCEAN, facecolor='lightblue')

# 绘制坐标点并标注名称
for (lat, lon), name in zip(coords, city_names):
    ax.plot(lon, lat, 'ro', markersize=8, transform=ccrs.PlateCarree())
    ax.text(lon + 1, lat + 0.5, name, transform=ccrs.PlateCarree())

# 设置地图显示范围(覆盖全球主要区域)
ax.set_extent([-180, 180, -60, 90])

# 在Spyder绘图窗口显示结果
plt.show()

2. Plotly

Plotly支持交互式地图,在Spyder的IPython控制台环境下,可直接在内置窗口展示交互式地图(无需导出HTML到浏览器)。

安装命令

pip install plotly

示例代码

import plotly.express as px
import pandas as pd

# 构造坐标数据
data = pd.DataFrame({
    '城市': ['北京', '纽约', '东京'],
    '纬度': [39.9042, 40.7128, 35.6762],
    '经度': [116.4074, -74.0060, 139.6503]
})

# 创建交互式散点地图
fig = px.scatter_geo(
    data,
    lat='纬度',
    lon='经度',
    text='城市',
    projection='natural earth'  # 使用自然地球投影
)

# 在Spyder内直接显示交互式地图
fig.show()

注:确保Spyder的IPython控制台启用了Plotly支持,可通过Tools > Preferences > IPython console > Graphics设置绘图后端为"Automatic"。

3. GeoPandas + Matplotlib

GeoPandas擅长处理地理空间数据,结合Matplotlib可快速绘制带基础底图的坐标分布图,适合需要处理复杂地理数据的场景。

安装命令

pip install geopandas matplotlib

示例代码

import geopandas as gpd
import matplotlib.pyplot as plt
from shapely.geometry import Point

# 待绘制的坐标(经度,纬度)及城市名称
coords = [(116.4074, 39.9042), (-74.0060, 40.7128), (139.6503, 35.6762)]
city_names = ['北京', '纽约', '东京']

# 创建地理数据框
geometry = [Point(lon, lat) for lon, lat in coords]
gdf = gpd.GeoDataFrame(
    {'城市': city_names},
    geometry=geometry,
    crs='EPSG:4326'  # WGS84坐标系
)

# 加载世界地图底图数据
world_map = gpd.read_file(gpd.datasets.get_path('naturalearth_lowres'))

# 绘制地图
fig, ax = plt.subplots(figsize=(10, 6))
world_map.plot(ax=ax, color='lightgray', edgecolor='black')
gdf.plot(ax=ax, marker='o', color='red', markersize=80)

# 添加城市名称标注
for x, y, label in zip(gdf.geometry.x, gdf.geometry.y, gdf['城市']):
    ax.text(x + 1, y + 0.5, label, fontsize=10)

ax.set_title('世界城市坐标分布')

# 在Spyder窗口显示结果
plt.show()

内容的提问来源于stack exchange,提问作者Fish1996

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 05:32:36