wuwucat
wuwucat

Reputation: 2621

Plot array content in grid

Now I have a 24*20 array as below:

In [748]: zb_mean
Out[748]: 
array([[          nan,   20.68575654,   14.11937546,           nan,
              nan,           nan,           nan,           nan,
              nan,           nan,           nan,           nan,
              nan,           nan,           nan,           nan,
              nan,           nan,           nan,           nan],
   [          nan,           nan,           nan,           nan,
              nan,           nan,           nan,           nan,
              nan,           nan,           nan,           nan,
... ... ...
... ... ...

In [749]: zb_mean.shape
Out[749]: (24, 20)

then I creat a grid according to the lat/lon as below:

xi = np.arange(-66,-72,-0.25)
yi = np.arange(40.5,45.5,0.25)

In [755]: len(xi),len(yi)
Out[755]: (24, 20)

xxb,yyb = np.meshgrid(xi, yi)

now the grid and the array have same dimension,I want to plot this grid(xxb,yyb) with the correspond value of array(zb_mean) in the center of each small grid, how should I do?thank you very much!

Upvotes: 0

Views: 103

Answers (1)

Trond Kristiansen
Trond Kristiansen

Reputation: 2456

If I understand your question correct you want to plot the cells you have valid values. The trick is to use the method masked_invalid that will hide your nan values using the numpy function masked_invalid. I created a small example on how you can do this:

import numpy as np
test=np.asarray([[10,15,20,50],[30,40,nan,70],[nan,10,nan,25],[100,50,nan,60]])
test=np.ma.masked_invalid(test)

xi = np.arange(-66,-70,-1)
yi = np.arange(40.5,44.5,1)
xxb,yyb = np.meshgrid(xi, yi)

c=pcolor(xxb,yyb,test)
colorbar(c)

Hope this helps. Cheers, Trond

Upvotes: 2

Related Questions