用旧电脑做网站,商洛建设公司网站,建设企业网站企业,广告文案策划效果图#xff1a;
主要步骤#xff1a;
1. 数据准备#xff1a;我用的era5的散度数据#xff08;大家替换为自己的就好啦#xff0c;era5数据下载方法可以看这里【数据下载】ERA5 各高度层月平均数据下载_era5月平均数据-CSDN博客#xff09;
2. 数据处理#xff1a…效果图
主要步骤
1. 数据准备我用的era5的散度数据大家替换为自己的就好啦era5数据下载方法可以看这里【数据下载】ERA5 各高度层月平均数据下载_era5月平均数据-CSDN博客
2. 数据处理
3. 图像绘制
详细代码着急的直接拖到最后有完整代码
步骤一导入库包及图片存储路径并设置中文字体为宋体西文为新罗马没有的库包要先下好奥字体设置部分没有要求的话可以直接删除
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import xarray as xr# 设置西文字体为新罗马字体中文为宋体字号为12
from matplotlib import rcParams
config {font.family: serif,font.size: 12,mathtext.fontset: stix,font.serif: [SimSun],}
rcParams.update(config)
rcParams[axes.unicode_minus]Falsedatapath rH:/00.csdn/01data/
figpath rH:/00.csdn/02fig/
shppath rH:/00.csdn/04shp/cn_shp/Province_9/Province_9.shp步骤二读入数据
# 读入数据
f1 xr.open_dataset(datapath 202306_div.nc)
# print(f1)
div f1[d][0, 14:, :, :].values * 10**6
time f1[time]
lons f1[longitude].values
lats f1[latitude].values
lon, lat np.meshgrid(lons, lats)
lev f1[level][14:].values
log_lev np.log10(lev)
print(log_lev)
print(lev)步骤三计算纬圈平均
##########################################################
# 数据处理
div_mean np.mean(div, 1)步骤四绘制图像剖面图指定位置打点
##########################################################
# 绘制图像
fig plt.figure(figsize(15, 6))
level np.linspace(-4, 4, 9)def plot_cont(location, data, text, textposition): ax fig.add_axes(location) cs ax.contourf(lons, log_lev, data, levelslevel, cmapRdBu_r, extendboth) ax.plot(110, 2.9, r*, markersize10) # r*表示红色星号markersize控制大小# 翻转纵坐标即让高度从下到上递增 ax.invert_yaxis() x [%i°E %lon for lon in lons[::40]] y [200, 300, 500, 700, 850, 1000]ax.set(xtickslons[::40], xticklabelsx,yticksnp.log10(y), yticklabelsy, ylabelhPa)# 设置标题和位置 title ax.set_title(text, fontsize12) title.set_position(textposition) # 调整位置 return cs # 调用上面的函数
c1 plot_cont([0.1, 0.1, 0.3, 0.25], div_mean, (a) ERA5, [0.05, 1.05])
c1 plot_cont([0.45, 0.1, 0.3, 0.25], div_mean, (b) ERA5, [0.05, 1.05])
# 色标设置
rect [0.12, 0.015, 0.6, 0.02]
cbar_ax fig.add_axes(rect) cb fig.colorbar(c1, drawedgesTrue, caxcbar_ax, orientationhorizontal)
cb.set_label(mm, fontsize12)
cb.ax.tick_params(length0)
步骤五保存图像
# 保存图像
plt.savefig(figpath215 剖面图.png, dpi600, bbox_inchestight)
plt.show()
完整代码在这里
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.ticker as mticker
import xarray as xr# 设置西文字体为新罗马字体中文为宋体字号为12
from matplotlib import rcParams
config {font.family: serif,font.size: 12,mathtext.fontset: stix,font.serif: [SimSun],}
rcParams.update(config)
rcParams[axes.unicode_minus]Falsedatapath rH:/00.csdn/01data/
figpath rH:/00.csdn/02fig/
shppath rH:/00.csdn/04shp/cn_shp/Province_9/Province_9.shp
##########################################################
# 读入数据
f1 xr.open_dataset(datapath 202306_div.nc)
# print(f1)
div f1[d][0, 14:, :, :].values * 10**6
time f1[time]
lons f1[longitude].values
lats f1[latitude].values
lon, lat np.meshgrid(lons, lats)
lev f1[level][14:].values
log_lev np.log10(lev)
print(log_lev)
print(lev)
##########################################################
# 数据处理
div_mean np.mean(div, 1)
##########################################################
# 绘制图像
fig plt.figure(figsize(15, 6))
level np.linspace(-4, 4, 9)def plot_cont(location, data, text, textposition): ax fig.add_axes(location) cs ax.contourf(lons, log_lev, data, levelslevel, cmapRdBu_r, extendboth) ax.plot(110, 2.9, r*, markersize10) # r*表示红色星号markersize控制大小# 翻转纵坐标即让高度从下到上递增 ax.invert_yaxis() x [%i°E %lon for lon in lons[::40]] y [200, 300, 500, 700, 850, 1000]ax.set(xtickslons[::40], xticklabelsx,yticksnp.log10(y), yticklabelsy, ylabelhPa)# 设置标题和位置 title ax.set_title(text, fontsize12) title.set_position(textposition) # 调整位置 return cs # 调用上面的函数
c1 plot_cont([0.1, 0.1, 0.3, 0.25], div_mean, (a) ERA5, [0.05, 1.05])
c1 plot_cont([0.45, 0.1, 0.3, 0.25], div_mean, (b) ERA5, [0.05, 1.05]) # 色标设置
rect [0.12, 0.015, 0.6, 0.02]
cbar_ax fig.add_axes(rect) cb fig.colorbar(c1, drawedgesTrue, caxcbar_ax, orientationhorizontal)
cb.set_label(mm, fontsize12)
cb.ax.tick_params(length0) ##########################################################
# 保存图像
plt.savefig(figpath215 剖面图.png, dpi600, bbox_inchestight)
plt.show()