1

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

在此处输入图像描述

只显示了两个颜色轮廓,而实际数据应该跨越更广泛的范围。此外,该区域的大部分应该是空白的,因为数据已经被 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 上使用 basemap-1.0.6 和 matplotlib-1.2.1。

4

1 回答 1

3

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

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

拉伸 0.5 到 0.9 之间的水平会进一步突出不同的轮廓。

在此处输入图像描述

于 2013-07-27T12:59:58.630 回答