Я хотел построить линии тока с помощью NOAA из композита (2,5*2,5 долготы/широты).
Я пытался нарисовать их с помощью базовой карты (коды прилагаются), но столкнулся с этой ошибкой: 'y' должно быть строго увеличивается.
После этого я решил нарисовать его с помощью cartopy (Коды прилагаются) с помощью (crs=ccrs.PlateCarree(central_longitude=180). Линии тока в диапазоне От 160 градусов востока до 160 градусов запада не были нарисованы.
Конечно, используя эти данные о ветре, я нарисовал вектор ветра на базовой карте, используя этот код:
, но я получил ошибку при рисовании линии тока.
Я был бы очень признателен, если бы кто-нибудь помог мне решить эту проблему (с помощью базовой карты или картопии).
Мои коды пытаются решить проблему:
Я хотел построить линии тока с помощью NOAA из композита (2,5*2,5 долготы/широты). Я пытался нарисовать их с помощью базовой карты (коды прилагаются), но столкнулся с этой ошибкой: 'y' должно быть строго увеличивается. После этого я решил нарисовать его с помощью cartopy (Коды прилагаются) с помощью (crs=ccrs.PlateCarree(central_longitude=180). Линии тока в диапазоне От 160 градусов востока до 160 градусов запада не были нарисованы. Конечно, используя эти данные о ветре, я нарисовал вектор ветра на базовой карте, используя этот код: [code]plt.quiver(lon[::5],lat[::5],U4[0,::5,::5],V4[0,::5,::5],scale_units='xy',scale=0.25)[/code], но я получил ошибку при рисовании линии тока. Я был бы очень признателен, если бы кто-нибудь помог мне решить эту проблему (с помощью базовой карты или картопии). Мои коды пытаются решить проблему: [code] from netCDF4 import Dataset as NetCDFFile import matplotlib.pyplot as plt from matplotlib.ticker import MultipleLocator import pandas as pd import numpy as np from 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(projection='cyl', lon_0 =0 , lat_0 =-20 , llcrnrlon=0.,llcrnrlat=-20.,urcrnrlon=360.,urcrnrlat=61.,resolution='i' ,suppress_ticks=False) plt.tick_params(labelleft=False, labelbottom=False , axis='both',which='major') map.drawcoastlines() parallels = np.arange(-20.,61.,20.) meridians = np.arange(0,360.,50.) map.drawparallels(lat_ticks,labels=[0,0,0,0],fontsize=10 , dashes=(0,1), fontweight='bold') map.drawmeridians(lon_ticks,labels=[0,0,0,0],fontsize=10 , dashes=(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) **Error:'y' must be strictly increasing**
from netCDF4 import Dataset as NetCDFFile import numpy as np import cartopy.crs as ccrs import matplotlib.pyplot as plt from mpl_toolkits.basemap import Basemap import cartopy.mpl.ticker as cticker from cartopy.mpl.ticker import LatitudeFormatter, LongitudeFormatter from cartopy.mpl.gridliner import LongitudeFormatter 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'][:] 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() [/code] [code]result[/code]