减小Matplotlib Basemap大小

2 投票
1 回答
1806 浏览
提问于 2025-04-18 12:30

在一些运行中的和手动操作的Python脚本里,我每天使用matplotlib的Basemap生成成千上万的加州地图:

mp = Basemap(width=1284000,height=1164000,projection='lcc',lat_1=30.,lat_2=60,\
             lat_0=37,lon_0=-120.5,resolution='c',rsphere=6370000.00)
# fill data: lats, lons, grid
cs = orb.pcolor(lons,lats,grid,cmap=cm.jet,norm=colors.LogNorm(),latlon=True)
mp.drawcounties()

不过,我每天都要浪费好几十个小时在加载这些覆盖整个世界的大地图上。我其实只需要加州的县,但我却把全世界的县都加载到内存里。我很喜欢这个库的灵活性,但它的速度实在太慢了。

  • 我该如何更快地生成这些地图呢?
  • 有没有办法只创建一个包含加州的matplotlib Basemap的裁剪版本?
  • 有没有更快的、不是matplotlib的方法来创建地理参考的图表?

example California plot

1 个回答

3

我怎么才能更快地生成这些地图呢?

你现在已经在使用最低的分辨率(“c”)。你可以调整“area_thresh”这个参数,但我觉得这帮助不大。你可能需要改进一下你绘制数据的方式。

我能不能只创建一个包含加利福尼亚的裁剪版matplotlib Basemap?

你可以下载一个加利福尼亚的自定义地图,只绘制那部分。Basemap自带一些基本的世界地图,但你也可以使用其他来源的地图。你可以通过搜索“california shapefile”来轻松找到。使用mpl_toolkits.basemap中的“readshapefile”方法来加载它。

这个笔记本展示了如何使用readshapefile和另一种方法(pyshp模块)。

有没有更快的、不是matplotlib的方式来创建地理参考的图?

我听说过Vincent,评价不错,但我自己还没试过。

撰写回答