无法绘制地图上的Matplotlib streamplot

时间:2014-06-01 11:15:05

标签: map matplotlib plot grid grib

当想要在具有不规则分布的模型数据(来自WRF-NMM)的地图上使用matplotlib绘制流线时,我遇到了一个奇怪的问题。

一开始,我正在定义一个新的地图网格:

    # Define grid and create map grid
    lat = ga.expr('lat') #Latitude from GRIB-File (WRF-NMM), irregularly spaced
    lon = ga.expr('lon') #Longitude from GRIB-File (WRF-NMM), irregularly spaced
    U10 = ga.expr('ugrd10m')
    V10 = ga.expr('vgrd10m')

    map = Basemap(projection='cass', lat_0 = 47, lon_0 = 8,
                  resolution = 'c', llcrnrlon=5.8, llcrnrlat=45.6, 
                  urcrnrlon=10.9, urcrnrlat=48.0,)

    longitudes = lon[1,:]
    latitudes = lat[:,1]
    mx,my = np.meshgrid(longitudes,latitudes)
    mapx,mapy = map(mx,my)

    # Plot streamlines
    stream = map.streamplot(mapx,mapy,U10,V10, density=[0.5, 1])

不幸的是,上面的代码失败了,我无法自己找到错误。这个错误是来自奇怪的网格吗?

以下是错误消息:

/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/contour.py:376: RuntimeWarning: invalid value encountered in true_divide
  dist = np.add.reduce(([(abs(s)[i] / L[i]) for i in range(xsize)]), -1)
Traceback (most recent call last):
  File "plot_map_v2.py", line 96, in <module>
    stream = map.streamplot(mapx,mapy,U10,V10, density=[0.5, 1])
  File "/usr/local/lib/python2.7/dist-packages/mpl_toolkits/basemap/__init__.py", line     551, in with_transform
    return plotfunc(self,x,y,u,v,*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/mpl_toolkits/basemap/__init__.py", line 3691, in streamplot
    ret =  ax.streamplot(x,y,u,v,*args,**kwargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/axes.py", line 6861, in streamplot
transform=transform)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/streamplot.py", line 67, in streamplot
grid = Grid(x, y)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/streamplot.py", line 256, in __init__
assert np.allclose(x_row, x)
AssertionError
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/_pylab_helpers.py", line 86, in destroy_all
manager.destroy()
  File "/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/backends/backend_gtk3.py", line 427, in destroy
self.canvas.destroy()
AttributeError: FigureManagerGTK3Agg instance has no attribute 'canvas'
Error in sys.exitfunc:
Traceback (most recent call last):
  File "/usr/lib/python2.7/atexit.py", line 24, in _run_exitfuncs
func(*targs, **kargs)
  File "/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/_pylab_helpers.py", line 86, in destroy_all
manager.destroy()
  File "/usr/local/lib/python2.7/dist-packages/matplotlib-1.3.1-py2.7-linux-x86_64.egg/matplotlib/backends/backend_gtk3.py", line 427, in destroy
self.canvas.destroy()
AttributeError: FigureManagerGTK3Agg instance has no attribute 'canvas'

干杯,

马丁

1 个答案:

答案 0 :(得分:0)

看一下这个页面,以便更好地绘制数据:

http://matplotlib.org/basemap/users/examples.html