【发布时间】:2018-10-11 13:55:40
【问题描述】:
您好,当我使用具有最大分辨率 (resolution='f') 的底图时,绘制它需要很长时间。
对于我的项目我必须使用这个分辨率,但是因为程序必须被用户使用,我希望它尽可能快。
是不是因为它从某个在线存储库下载了地图?
有没有办法下载我需要的地图并离线绘制?
这是一个 MWE:
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
lon_min = -10.5
lon_max = 2.0
lat_min = 50.0
lat_max = 59.7
coastlinesMap = Basemap(suppress_ticks=False, projection='cyl',
llcrnrlat=lat_min, urcrnrlat=lat_max,
llcrnrlon=lon_min, urcrnrlon=lon_max,
resolution='f')
n = 100
x = np.linspace(lon_min, lon_max, n)
y = np.linspace(lat_min, lat_max, n)
lon, lat = np.meshgrid(x, y)
z = np.zeros((n, n))
for i in range(n):
for j in range(n):
z[i, j] = x[i] + y[j]
fig = plt.figure("test")
ax = fig.add_subplot(111)
cf = ax.contourf(lon, lat, z, cmap="jet")
ax.set_xlabel("lon")
ax.set_ylabel("lat")
ax.add_collection(coastlinesMap.drawcoastlines(linewidth=0.25))
coastlinesMap.fillcontinents(color="green")
fig.colorbar(cf)
plt.show()
编辑
我只是想澄清一下,当显示图时,我可以缩放或平移等,并且变化很快,而在生成 coastlineMap 时很慢。
【问题讨论】:
-
"f" 的意思是“精细”,这是你能得到的最好的分辨率,而且绘制确实需要相当长的时间。另见github.com/matplotlib/basemap/issues/252
-
@ImportanceOfBeingErnest 感谢您的回答!我会检查那个链接。
标签: python matplotlib matplotlib-basemap