ошибка измерения для команды построения в Python - PullRequest
0 голосов
/ 29 марта 2020

Я хочу создать график, представляющий собой вертикальное сечение данных о скорости ветра, чтобы на оси х были широтные координаты, а на оси у - вертикальные уровни.

Я рассчитал скорость ветра, которая имеет широту и вертикаль. Когда я печатаю форму, которая дает (37,81), я знаю, что в этих данных 37 уровней, поэтому я предполагаю, что это означает, что 37 - это вертикальный компонент, а 81 - это широтный компонент. Однако проблема, с которой я столкнулся, заключается в том, что я хочу, чтобы эта переменная имела 81 и 37 наоборот, так что 37 - это ось y. Есть ли способ поменять местами два компонента этой переменной?

Это код, который я сделал до сих пор:

    # read tos
f = Dataset('data/era5_u_wind_vertical_levels_1979_2018_DJF.nc', mode='r')
lons = f.variables['longitude'][0]
lats = f.variables['latitude'][:]
levs = f.variables['level'][:]
field_u = f.variables['u'][0,:,:,0]
field_uu = f.variables['u'].units
f.close()

f = Dataset('data/era5_v_wind_vertical_levels_1979_2018_DJF.nc', mode='r')
#lons = f.variables['longitude'][:]
#lats = f.variables['latitude'][:]
field_v = f.variables['v'][0,:,:,0]
field_vv = f.variables['v'].units
f.close()

print np.shape(field_u), np.shape(field_v)
print lons

#steps = 50
#lonsnew = np.linspace(lon0, lon1, steps)
#latsnew = np.linspace(lat0, lat1, steps)

# compute absolute windspeed
wspd = np.sqrt(np.square(field_v) + np.square(field_u))
print wspd.shape

# test
print np.min(wspd), np.max(wspd)
print lats.shape, levs.shape, wspd.shape

#create lat/levs grid
[lats, levs] = np.meshgrid(levs, lats)
print lats.shape, levs.shape, wspd.shape

# define countour levels and plot filled contours
levels = np.arange(0, 21, 1)
cmap = plt.cm.gist_rainbow_r
norm = colors.BoundaryNorm(levels, cmap.N)

# actual plotting command
myplot = m.pcolormesh(lats, levs, wspd, norm=norm, cmap=cmap)

и ошибка, которую я получаю: TypeError: Dimensions of C (37, 81) несовместимы с X (37) и / или Y (81); см. справку (pcolorme sh)

1 Ответ

0 голосов
/ 29 марта 2020

Если ваша переменная является кортежем:

speed = (37,81)
speed_swap = speed[1], speed[0]
speed_swap
# (81, 37)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...