我正在使用 Spyder,并且有几个想要在世界地图上绘制的坐标。目前我使用 Folium,将数据保存为 HTML 文件,然后在网络浏览器中打开它。我的问题是:是否可以在不使用网络浏览器的情况下在地图上绘制坐标?或者有什么外部因素吗?我希望有一个包可以让我绘制所有内容并在 Spyder 本身中看到它。
有人有想法吗?
查看
cartopy
模块,它提供了大量的地图投影以及用大量特征(例如陆地、海洋、海岸线、边界等)注释这些投影的能力,它不太可能出现在你的 Python 发行版中,所以安装它与
pip install cartopy
你还需要
matplotlib.pyplot
,但既然你已经在策划了,我假设你已经有了。
它的工作原理是为您的地图选择一个投影(crs - 坐标参考系)(例如 Mercator、Platte Carre(平板 - 基本上是矩形)等)。然后为您的数据选择适当的 crs。基本过程是
这是一个使用长/纬度对散点图绘制非洲 4 个经度/纬度位置的简单示例
import cartopy
import cartopy.crs as ccrs
import matplotlib.pyplot as plt
map_crs = ccrs.PlateCarree()
data_crs = ccrs.PlateCarree()
def fancify(axes):
"""add features to cartopy axes"""
axes.stock_img()
axes.add_feature(cartopy.feature.LAND)
axes.add_feature(cartopy.feature.OCEAN)
axes.add_feature(cartopy.feature.COASTLINE)
axes.add_feature(cartopy.feature.BORDERS, linestyle='-', alpha=.5)
axes.add_feature(cartopy.feature.LAKES, alpha=0.95)
axes.add_feature(cartopy.feature.RIVERS)
ax1 = plt.subplot(1, 1, 1, projection=map_crs) # create map axes
fancify(ax1) # add some features to map
ax1.set_extent([0, 60, 0, 60], map_crs) # min/max long and lat
ax1.scatter([22, 11, 31, 30,], [8, 22, 13, 9]) # longitutes , latitudes
plt.show()