使用matplotlib和底图的极坐标投影的奇怪等高线图

时间:2013-07-26 15:52:38

标签: python matplotlib matplotlib-basemap

我正在制作一些气候模型输出的Polar Stereographic Projection地图。对于其中一些数据,情节看起来很奇怪。例如,在此图中:

enter image description here

只显示两种颜色的轮廓,而实际数据应该跨越更宽的范围。此外,该区域的大部分应该是空白的,因为netcdf模块已经掩盖了数据(它们是未定义的)。

from netCDF4 import Dataset
import matplotlib
matplotlib.use('agg')
import matplotlib.pyplot as plt
import numpy as np    
from mpl_toolkits.basemap import Basemap    
from pylab import *
fig_index=1
fig = plt.figure(num=fig_index, figsize=(12,7), facecolor='w')
fbot_levels = arange(0.05,1.0,0.05)
fname='alb.nc4'
ncfile = Dataset(fname, 'r', format='NETCDF4')
TS2=ncfile.variables['SIALB'][0]
LON=ncfile.variables['lon'][:]
LAT=ncfile.variables['lat'][:]
ncfile.close()
lon,lat=np.meshgrid(LON,LAT)
ax2 = plt.axes([0.2, 0.225, 0.6, 0.6])
meridians=[0,1,1,1]
m = Basemap(projection='spstere',lon_0=0,boundinglat=-45)
m.drawcoastlines()
x, y =m(lon,lat)
plt.contourf(x,y,TS2, fbot_levels, origin='lower')
m.drawparallels(np.arange(-90.,120.,15.),labels=[1,0,0,0]) # draw parallels
m.drawmeridians(np.arange(0.,420.,30.),labels=meridians) # draw meridians
coloraxis = [0.1, 0.1, 0.8, 0.035]
cx = fig.add_axes(coloraxis, label='m', title='K')
cbar=plt.colorbar(cax=cx,orientation='horizontal',ticks=list(fbot_levels))
plt.show()

您可以在netcdf格式中找到用于生成此图的数据集

https://dl.dropboxusercontent.com/u/45427012/alb.nc4

我在py2.7上使用带有matplotlib-1.2.1的basemap-1.0.6。

1 个答案:

答案 0 :(得分:3)

您的Basemap对象(m)也可用作mpl轴。在绘图时,您应该使用它而不是使用plt.。所以:

m.contourf(x,y,TS2, fbot_levels, origin='lower')

拉伸0.5到0.9之间的等级可以进一步突出不同的轮廓。

enter image description here