- 积分
- 271
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2017-1-4
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 羊羊羊yyj 于 2023-11-27 19:38 编辑
求解答。请教各位有没有遇到过用python画温度相关的变量,插值到某个高度的结果(左图)会出现图片里面显示的断层问题,垂直剖面图(右图)也会出现类似的断层问题。
但是如果直接对T2这个变量画图,结果正常。
附上读取温度变量插值到100m并画图的脚本
# read the file
filename1 = "控制实验数据"
filename2 = "敏感性实验数据"
ncfile1 = Dataset(filename1)
ncfile2 = Dataset(filename2)
# select your timestep (index) and pressure level
# j = 0
z_level = 500
# get the variables
height = getvar(ncfile1, "z", timeidx=0)
ter = getvar(ncfile1,"ter")
nheight = np.expand_dims(ter,axis=0) + np.zeros_like(height)
# # print(nheight)
z = height - nheight
# z = height - ter
print(z)
new_t1 = [] # 用于存储数据的列表
for i in range(488, 490):
data1 = getvar(ncfile1, "tc", timeidx=i)
new_t1.append(data1)
# 将列表中的数据合并为一个 xarray DataArray
combined_t1 = xr.concat(new_t1, dim='Time')
# print(combined_t1.coords)
gs_t1_mean =combined_t1.mean(dim="Time")
# print(gs_t1_mean)
new_t2 = [] # 用于存储数据的列表
for i in range(488, 490):
data2 = getvar(ncfile2, "tc", timeidx=i)
new_t2.append(data2)
# 将列表中的数据合并为一个 xarray DataArray
combined_t2 = xr.concat(new_t2, dim='Time')
# print(combined_t2.coords)
gs_t2_mean =combined_t2.mean(dim="Time")
# print(gs_t2_mean)
t = gs_t2_mean-gs_t1_mean
# print(t.coords)
# # # interpolate t1 and t2 to pressure level
t_100 = interplevel(t, z, z_level)
print(t_100)
# specify your map boundaries
lat_min = 35
lat_max = 50
lon_min = 70
lon_max = 95
# get the lat, lon grid
lats, lons = latlon_coords(t_100)
# # specify your colormap and projection
cmap = plt.get_cmap('RdYlBu_r')
crs = ccrs.PlateCarree()
# plot
fig = plt.figure(figsize=(10,6))
ax = fig.add_subplot(111, facecolor='None', projection=crs)
# ax.coastlines(resolution='10m', alpha=0.5)
plot_t100 = ax.pcolormesh(lons, lats, t_100,shading='auto', cmap=cmap)
cbar = fig.colorbar(plot_t100,extend='both')
# Set the maximum and minimum values for the colorbar
# cbar.set_clim(vmin=-0.3, vmax=0.3)
cbar.ax.set_ylabel('Difference of temp 2020')
# some fancy schmancy grid lines
gl = ax.gridlines(crs=crs, draw_labels=True, alpha=0.5)
gl.top_labels = None
gl.right_labels = None
xgrid = np.arange(lon_min, lon_max, 5.)
ygrid = np.arange(lat_min, lat_max, 5.)
gl.xlocator = mticker.FixedLocator(xgrid.tolist())
gl.ylocator = mticker.FixedLocator(ygrid.tolist())
gl.xformatter = LONGITUDE_FORMATTER
gl.yformatter = LATITUDE_FORMATTER
gl.xlabel_style = {'size': 10, 'color': 'black'}
gl.ylabel_style = {'size': 10, 'color': 'black'}
plt.xlim((lon_min,lon_max))
plt.ylim((lat_min, lat_max))
plt.title('Temperature 100m')
plt.show()
plt.savefig("diff_t_100m_3.png", dpi=300)
|
-
wrfout温度 (100m)
-
wrfout温度 (2m)
-
|