- 积分
- 5917
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-3-7
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
看了Masterpiece的帖子http://bbs.06climate.com/forum.php?mod=viewthread&tid=95503,利用Python画高程图,之前我利用GMT画了一个南极高程地图(左图),所以想要利用python画南极地图,但是想要使用自己喜欢的任意,利用的是http://bbs.06climate.com/forum.php?mod=viewthread&tid=43521的colormap,我基本是在Masterpiece的帖子上进行修改,具体请看代码.但是有一个问题是m.drawmeridians设置为什么不能显示出-90和90,目前表示不会设置(右图),gmt这点就非常灵活.
- import numpy as np
- import matplotlib.pyplot as plt
- from mpl_toolkits.basemap import Basemap
- import netCDF4 as nc
- import matplotlib as mpl
- import cmaps
- topo_file='ETOPO2v2g_f4.nc'
- data=nc.Dataset(topo_file)
- topo=data.variables['z'][:,:]
- lat=data.variables['y'][:]
- lon=data.variables['x'][:]
- fig,ax = plt.subplots(figsize=(14,9)) #建立绘图平台
- m = Basemap(projection='spstere',boundinglat=-60,lon_0=180,resolution='l')
- m.drawcoastlines(linewidth=0.2, color='gray',zorder=3)
- parallels = np.arange(-90,-50,10) #纬线
- m.drawparallels(parallels,labels=[True,True,False,True])#第三个不能改,第一个,第二个和第四个无所谓
- meridians = np.arange(0,360,45) #经线
- m.drawmeridians(meridians,labels=[False,False,True,True])
- lons, lats = np.meshgrid(lon,lat) #经纬度2维化
- x, y = m(lons, lats) #投影映射
- cmap=cmaps.WhiteBlueGreenYellowRed
- cmap.set_under([255/255,255/255,255/255]) #低于0的填色为白色
- lev=np.arange(0,4500,200)
- cf=m.contourf(x,y,topo,levels=lev,cmap=cmap,extend='both')
- cb=plt.colorbar(cf, ax=ax,shrink=0.52,aspect=30,pad=0.05,orientation='horizontal') #色标
- cb.ax.tick_params(labelsize=10,pad=2,direction='in') #色标tick
- plt.savefig('global_etopo.png',dpi=600,bbox_inches='tight') #存图
- plt.show()
复制代码 同时也欢迎大神指教,怎么添加-90和90的坐标.如何去掉外面的方框呢?
|
-
-
|