我正在创建一个显示世界地图的图形,上面有一些数据(这里不相关)。现在我希望能够使用平移/缩放按钮或缩放到矩形按钮放大它,然后在我完成放大后将图形保存到图片文件中。问题在于轴注释(以及lng- / lat-lines)在图片中是“硬嵌入”的,这使得它们在放大时会消失。
有人知道如何获得适应缩放的轴注释吗?
这是一个最小的工作示例(没有任何数据):
import matplotlib as mpl
import matplotlib.pyplot as plt
from mpl_toolkits.basemap import Basemap
import numpy as np
fig = plt.figure(1, figsize=(12, 7))
m = Basemap(projection='merc',llcrnrlat=-80,urcrnrlat=80,\
llcrnrlon=-180,urcrnrlon=180,resolution='l') #,lat_ts=20
m.drawcoastlines(); m.fillcontinents(); m.drawcountries()
# draw parallels and meridians.
m.drawparallels(np.arange(-90.,91.,30.),labels=[True, False, False, False], color='White')
m.drawmeridians(np.arange(-180.,181.,60.), labels=[False, False, False, True], color='White')
plt.show()
答案 0 :(得分:2)
万一有人偶然发现我的问题,这就是我想出的一个相当快速的解决方法。 : - )
我想要的应用是放大然后保存图形。现在我不是以交互方式做到这一点,而是通过进入"缩放的边界框"在代码中并使用以下函数动态创建lng / lat-ticks(事先需要import numpy as np
):
def calculateBasemapTicks(minMaxList, nrOfParalles = 3, nrOfMeridians = 3):
"""
Attempts to calculate meaningful ranges for .basemap.drawparallels
and .drawmeridians. Enter a <minMaxList> in the form
[lng_min, lng_max, lat_min, lat_max].
Note that you might get rather ugly floats. I suggest using formatting
as in ".drawparallels(..., fmt='%.4f')" or similar.
"""
pAdjust = (minMaxList[3]-minMaxList[2])*0.1
mAdjust = (minMaxList[1]-minMaxList[0])*0.1
parallels = np.linspace(minMaxList[2]+pAdjust,minMaxList[3]-pAdjust,
nrOfParalles)
meridians = np.linspace(minMaxList[0]+mAdjust,minMaxList[1]-mAdjust,
nrOfMeridians)
return parallels, meridians