Numpy阵列到天气图

时间:2018-09-09 14:50:52

标签: python arrays numpy matplotlib

我下面有一些numpy数组数据。

 Layer 1     Layer 2    LATITUDE     LONGITUDE
1.7964935   3.592987    24.813797   -88.901495
1.6611315   3.322263    24.6915     -87.84013
1.4888205   2.977641    24.694245   -87.868856
4.7826225   9.565245    29.965457   -87.565512
2.303408    4.606816    26.119643   -88.410623
3.7254165   7.450833    29.968328   -87.596143

我想将此numpy数组转换成天气图。我已经通过matplotlib准备了底图。

import matplotlib.pyplot as plt
plt.switch_backend('agg')
from mpl_toolkits.basemap import Basemap
import numpy as np


#Lambert Conformal map of USA lower 48 states
plt.figure(figsize=(125,100))
m=Basemap ( llcrnrlon = -119 ,
llcrnrlat =22 ,
urcrnrlon = -64 ,
urcrnrlat =49 ,
projection = 'lcc' ,
lat_1 =33 ,
lat_2 =45 ,
lon_0 = -95 ,
resolution = 'h' ,
area_thresh =10000)
m.drawcoastlines(linewidth = 3, color = 'white')
m.drawcountries(linewidth =3, color = 'white')
m.drawstates(linewidth = 2, color = 'white')
m.drawmapboundary(fill_color='black')
plt.title('MAP', fontsize=200)
plt.suptitle('TEMPERATURES', fontsize=50) # Add the text/suptitle to figure

plt.show()
plt.savefig('pic')

“我想将numpy数据作为像这样的栅格化地图导入到此底图中”

Example Weather map From Numpy array to Matplotlib

他们在下面使用的代码。请注意,我的数据不是NetCDFFile。我有一个numpy数组。

from mpl_toolkits.basemap import Basemap, cm
#requires netcdf4-python (netcdf4-python.googlecode.com)
from netCDF4 import Dataset as NetCDFFile
import numpy as np
import matplotlib.pyplot as plt

#plot rainfall from NWS using special precipitation
#colormap used by the NWS, and included in basemap.

nc = NetCDFFile('../../../examples/nws_precip_conus_20061222.nc')
#data from http://water.weather.gov/precip/
prcpvar = nc.variables['amountofprecip']
data = 0.01*prcpvar[:]
latcorners = nc.variables['lat'][:]
loncorners = -nc.variables['lon'][:]
lon_0 = -nc.variables['true_lon'].getValue()
lat_0 = nc.variables['true_lat'].getValue()
#create figure and axes instances
fig = plt.figure(figsize=(8,8))
ax = fig.add_axes([0.1,0.1,0.8,0.8])
#create polar stereographic Basemap instance.
m =Basemap(projection='stere',lon_0=lon_0,lat_0=90.,lat_ts=lat_0,\
            llcrnrlat=latcorners[0],urcrnrlat=latcorners[2],\
            llcrnrlon=loncorners[0],urcrnrlon=loncorners[2],\
             rsphere=6371200.,resolution='l',area_thresh=10000)
#draw coastlines, state and country boundaries, edge of map.
m.drawcoastlines()
m.drawstates()
m.drawcountries()
#draw parallels.
parallels = np.arange(0.,90,10.)
m.drawparallels(parallels,labels=[1,0,0,0],fontsize=10)
#draw meridians
meridians = np.arange(180.,360.,10.)
m.drawmeridians(meridians,labels=[0,0,0,1],fontsize=10)
ny = data.shape[0]; nx = data.shape[1]
lons, lats = m.makegrid(nx, ny) # get lat/lons of ny by nx evenly space grid.
x, y = m(lons, lats) # compute map proj coordinates.
#draw filled contours.
clevs = [0,1,2.5,5,7.5,10,15,20,30,40,50,70,100,150,200,250,300,400,500,600,750]
cs = m.contourf(x,y,data,clevs,cmap=cm.s3pcpn)
#add colorbar.
cbar = m.colorbar(cs,location='bottom',pad="5%")
cbar.set_label('mm')
#add title
plt.title(prcpvar.long_name+' for period ending '+prcpvar.dateofdata)
plt.show()

有什么想法吗?

0 个答案:

没有答案