Как упрощается график с использованием данных netcdf в PythonPython

Программы на Python
Ответить
Anonymous
 Как упрощается график с использованием данных netcdf в Python

Сообщение Anonymous »

Я хотел построить линии тока с помощью NOAA из композита (2,5*2,5 долготы/широты).
Я пытался нарисовать их с помощью базовой карты (коды прилагаются), но столкнулся с этой ошибкой: 'y' должно быть строго увеличивается.
После этого я решил нарисовать его с помощью cartopy (коды прилагаются) с (crs=ccrs.PlateCarree(central_longitude=180)), что линии тока в диапазоне от 160 восточных до 160 западных не были нарисованы .
Конечно, используя эти данные о ветре, я нарисовал вектор ветра на базовой карте с помощью этого кода:
( plt.quiver(lon[::5],lat[::5],U4[ 0,::5,::5],V4[0,::5,::5],scale_units='xy',scale=0.25), но я получил ошибку при рисовании линии тока.
Я бы буду очень признателен, если кто-нибудь поможет мне решить эту проблему (с помощью базовой карты или картопии).
(с базовой картой:)
из netCDF4 импортировать набор данных как NetCDFFile
импортировать matplotlib .pyplot как plt
из matplotlib.ticker import MultipleLocator
импортировать pandas как pd
импортировать numpy как np
из mpl_toolkits.basemap import Basemap
fig = plt.figure( figsize=(12,9))
ax = fig.add_subplot(111)
nc2 = NetCDFFile('E:/cycle-of-Mjo/NOAA/nc/u850b1.nc')
nc4 = NetCDFFile('E:/cycle-of-Mjo/NOAA/nc/v850b1.nc')
lat = nc2.variables['lat'][:]
lon = nc2.variables ['lon'][:]
U4 = nc2.variables['uwnd'][:]
V4 = nc4.variables['vwnd'][:]
map = Basemap( проекция='cyl', lon_0 =0 , lat_0 =-20 ,
llcrnrlon=0.,llcrnrlat=-20.,urcrnrlon=360.,urcrnrlat=61.,разрешение='i'
, suppress_ticks=False)
plt.tick_params(labelleft=False, labelbottom=False , axis='both',который='major')
map.drawcoastlines()
parallels = np.arange (-20.,61.,20.)
меридианы = np.arange(0,360.,50.)
map.drawparallels(lat_ticks,labels=[0,0,0,0],fontsize =10, тире=(0,1), fontweight='bold')
map.drawmeridians(lon_ticks,labels=[0,0,0,0],fontsize=10 , тире=(0,1) , fontweight='bold')
lons,lats= np.meshgrid(lon,lat)
x,y = map(lons,lats)
map.streamplot(x,y,U1) [0, :, :],V1[0, :, :],density = 2)
Ошибка: 'y' должно строго возрастать
с cartopy:
из netCDF4 импортировать набор данных как NetCDFFile
импортировать numpy как np

импортировать cartopy.crs как ccrs
импортировать matplotlib .pyplot как plt
из mpl_toolkits.basemap импортировать базовую карту
импортировать cartopy.mpl.ticker как cticker
из cartopy.mpl.ticker импортировать LatitudeFormatter, LongitudeFormatter
из cartopy.mpl.gridliner import LongitudeFormatter
nc2 = NetCDFFile('E:/cycle-of-Mjo/NOAA/nc/u850b1.nc')
nc4 = NetCDFFile('E:/cycle-of-Mjo/NOAA/nc')
nc4 = NetCDFFile('E:/cycle-of-Mjo/NOAA/nc /v850b1.nc')
lat = nc2.variables['lat'][:]
lon = nc2.variables['lon'][:]
U4 = nc2.variables[ 'uwnd'][:]
V4 = nc4.variables['vwnd'][:]
ax = plt.axes(projection=ccrs.PlateCarree(central_longitude=180.0))
ax .coastlines()
ax.set_extent([0, 360, -20, 60], crs=ccrs.PlateCarree())

ax.set_xticks(np.arange(0,360,50) ), crs=ccrs.PlateCarree())
strm = plt.streamplot(lon[::5], lat[::5], U1[0,::5,::5], V1[0 ,::5,::5], color='blue',
density=1,arrowstyle='->',arrowsize=1, Transform=ccrs.PlateCarree() )

plt.show()

Код: Выделить всё

enter image description here


Подробнее здесь: https://stackoverflow.com/questions/791 ... -in-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»