我试图找到一种方法来可视化MJO的各个区域/阶段。我相信这样做的一种方法是绘制分隔每个相位区域的经线(大约为60E、80E、100E、120E、140E、160E、180),但我不确定是否可以添加到现有的图中
我正在使用来自NCEI的网格Sat B1数据。以下是我当前的代码:
import matplotlib.pyplot as plt
from metpy.plots import declarative, colortables
import cartopy.crs as ccrs
import xarray as xr
file = "GRIDSAT-B1.2003.11.23.00.v02r01.nc"
dataset = xr.open_dataset(file)
vtime = dataset.time.values.astype('datetime64[s]').astype('O')
date_long = vtime[0]
date = date_long.strftime("%d-%b-%Y-%HZ")
# Create water vapor image
img = declarative.ImagePlot()
img.data = dataset
img.field = 'irwvp'
img.colormap = 'WVCIMSS_r'
img.image_range = (180, 280)
panel = declarative.MapPanel()
panel.layers = ['coastline', 'borders']
panel.title = f'GridSat-B1 (Water Vapor Imagery): {date}'
panel.projection = (ccrs.Mollweide(central_longitude=-240))
panel.area = ([-370, -140, -30, 30])
panel.layout = (2, 1, 2)
panel.plots = [img]
# Create the IR image
img2 = declarative.ImagePlot()
img2.data = dataset
img2.field = 'irwin_cdr'
img2.colormap = 'turbo_r' #maybe use cubehelix instead?
img2.image_range = (180, 300)
panel2 = declarative.MapPanel()
panel2.layers = ['coastline', 'borders']
panel2.title = f'GridSat-B1 (Infrared Imagery): {date}'
panel2.projection = (ccrs.Mollweide(central_longitude=-240))
panel2.area = ([-370, -140, -30, 30])
panel2.layout = (2, 1, 1)
panel2.plots = [img2]
# Plot both panels in one figure
pc = declarative.PanelContainer()
pc.size = (20, 14)
pc.panels = [panel, panel2]
pc.show()
以下是运行脚本时创建的当前输出: Nov03.png
欢迎提供任何帮助/建议-提前感谢
MetPy的声明性接口中没有内置任何内容,但幸运的是
MapPanel
对象公开了一个.ax
属性,该属性为您提供了MatplotlibAxes
对象及其所有打印方法:(注意:不建议直接从metpy的声明性模块导入,因为这是一个需要更改的实现细节,只需从}
metpy.plots
获取内容即可)。因此,这是使用Matplotlib对plot
的标准调用来画线。另一种选择是使用CartoPy的^{相关问题 更多 >
编程相关推荐