Skip to main content
 首页 » 编程设计

python之减小 Matplotlib basemap 的大小

2024年08月27日31jirigala

在各种操作和手动运行的 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() 

但是,我每天都要浪费几十个小时的计算时间来加载这些覆盖整个世界的大型 basemap 。我只需要加利福尼亚州的县,但我最终将世界上所有的县加载到内存中。我喜欢这个库的灵 active ,但它太慢了。

  • 我怎样才能更快地制作这些 map ?
  • 我能否以某种方式创建 matplotlib Basemap 的裁剪版本,仅包含加利福尼亚州?
  • 是否有更快的非 matplotlib 方法来创建地理引用图?

请您参考如下方法:

How could I produce these maps faster?

您已经在使用最低分辨率(“c”)。您可以更改“area_thresh”参数,但我认为这不会有太大帮助。您可能必须按照绘制数据本身的方式进行工作。

Could I somehow create a cropped version of the matplotlib Basemap, with only California?

您可以下载加利福尼亚的自定义 map 并仅绘制该 map 。 Basemap 附带基本的世界地图,但您可以使用其他来源的 map 。谷歌搜索“加州 shapefile”应该很容易。使用 mpl_toolkits.basemap 中的“readshapefile”方法加载它。

This notebook展示了如何使用 readshapefile 和替代方法(pyshp 模块)。

Is there a faster, non-matplotlib way to create geo-referenced plots?

我听说过关于 Vincent 的好消息,但我自己还没有尝试过。