Skip to main content
 首页 » 编程设计

python之如何在 python 中使用 matplotlib/basemap 在正交投影上标记平行线/子午线

2024年10月25日30dyllove98

我正在尝试使用 python 中的 matplotlib/basemap 在正交投影上标记平行线/子午线。根据 basemap 文件,通过 drawparalles(parallels,labeles=[left,right,top,bottom]) 命令标记不适用于正交投影和其他一些投影,必须手动完成。谁能建议我手动标记平行线/经线的任何方法。

lon2,lat2=m1(lon,lat) 
lon3,lat3=m1(lon1,lat1) 
cax1=m1.pcolor(lon2,lat2,data1,cmap='jet') 
colob=plt.colorbar(fraction=0.05) 
colob.set_label(r"Diff. Flux $[cm^{-2}Sr^{-1}s^{-1}]$") 
parallels = np.arange(-90,90,15.) 
cax4=m1.drawparallels(parallels,labels=[1,0,0,0]) 
meridian = np.arange(0,360,15.) 
cax5=m1.drawmeridians(meridian,labels=[0,0,0,1]) 

请您参考如下方法:

我找到了一个使用 matplotlib.annotate 命令的解决方案。

lon2,lat2=m1(lon,lat) 
lon3,lat3=m1(lon1,lat1) 
cax1=m1.pcolor(lon2,lat2,data1,cmap='jet') 
colob=plt.colorbar(fraction=0.05) 
colob.set_label(r"Diff. Flux $[cm^{-2}Sr^{-1}s^{-1}]$") 
parallels = np.arange(-90,90,15.) 
cax4=m1.drawparallels(parallels,labels=[1,0,0,0]) 
meridian = np.arange(0,360,15.) 
cax5=m1.drawmeridians(meridian,labels=[0,0,0,1]) 
for i in np.arange(len(meridian)): 
    plt.annotate(np.str(meridian[i]),xy=m1(meridian[i],0),xycoords='data') 
for i in np.arange(len(parallels)): 
    plt.annotate(np.str(parallels[i]),xy=m1(180,parallels[i]),xycoords='data')