Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

开始使用

本节介绍如何使用 cedar-graph 工具绘制图形。

Notebook Cell
# 隐藏日志 DEBUG 输出,不影响最终结果
import sys
from loguru import logger
logger.remove()
logger.add(sys.stderr, level="INFO")
# 数据环境配置:使用本地数据目录(可用环境变量 CEDARKIT_NOTEBOOK_DATA_ROOT 覆盖)
from cedarkit_notebook.data import get_data_root, get_dataset_query

DATA_CLASS = "cmadaas"
STORAGE_BASE = str(get_data_root())
Notebook Cell
# 自动识别 CEMC 地图包
from importlib.metadata import metadata, PackageNotFoundError
from cedarkit.plots.map import set_default_map_loader_package

try:
    meda_metadata = metadata("cemc_meda_data")
    set_default_map_loader_package("cedarkit.plots.map.cemc")
except PackageNotFoundError:
    # package is not installed
    pass

快速绘图

quick_plot 可以使用 CMA 气象超算中的 CEMC 数值天气预报业务系统数据绘制并显示图形。

下面代码使用 CMA-GFS 全球预报系统的 GRIB2 数据绘制东亚区域 2 米温度填充图。

import pandas as pd

# 起报时次与预报时效固定为本地已下载数据(见 data/metadata/ 下的元信息文件)
gfs_query = get_dataset_query("cma-gfs")
meso_query = get_dataset_query("cma-meso-3km")

start_time = gfs_query["start_time"]
start_time
'2026072500'
from cedar_graph.quickplot import quick_plot

plot_type = "cn.t_2m.default"
plot_settings = dict(
    system_name="CMA-GFS",
    start_time=start_time,
    forecast_time=gfs_query["forecast_time"],
    data_class=DATA_CLASS,
    storage_base=STORAGE_BASE,
)

quick_plot(
    plot_type=plot_type,
    **plot_settings,
)
/home/wangdp/project/cedarkit/notebook-project/notebook-devel/repo/cedarkit-notebook-project/cedarkit-notebook/.venv/lib/python3.14/site-packages/gribapi/__init__.py:23: UserWarning: ecCodes 2.42.0 or higher is recommended. You are running version 2.34.1
  warnings.warn(
<Figure size 3200x3200 with 2 Axes>

使用 CMA-MESO 区域预报系统的 GRIB2 数据绘制东北区域 10 米风速填充图。

from cedar_graph.quickplot import quick_plot
from cedarkit.plots.types import AreaRange

plot_type = "cn.wind_10m.default"
plot_settings = dict(
    system_name="CMA-MESO-3KM",
    start_time=meso_query["start_time"],
    forecast_time=meso_query["forecast_time"],
    area_name="NorthEast",
    area_range=AreaRange.from_tuple((108, 137, 37, 55)),
    data_class=DATA_CLASS,
    storage_base=STORAGE_BASE,
)

quick_plot(
    plot_type=plot_type,
    **plot_settings,
)
<Figure size 3200x3200 with 1 Axes>

手动绘图

可以使用绘图模块中的函数和类绘制图形。

下面的示例使用 CMA-MESO 数据绘制 2 米相对湿度填充图,包括以下步骤:

  • 创建 LocalDataSource 对象获取 CMA 气象超算中的 CMA-MESO 数据文件路径

  • 使用 cedar_graph.plots.t_2m.default 模块中的 load_data 加载数据,生成 plot_data 对象

  • 使用 cedar_graph.plots.t_2m.default 模块中的 plot 函数绘制图形,生成 panel 对象

  • 调用 panel.show() 方法显示结果

import pandas as pd

from cedar_graph.plots.cn.rh_2m.default import PlotMetadata, plot, load_data
from cedar_graph.data import LocalDataSource, DataLoader

system_name = "CMA-MESO-3KM"
start_time = pd.to_datetime(meso_query["start_time"], format="%Y%m%d%H")
forecast_time = pd.to_timedelta(meso_query["forecast_time"])

metadata = PlotMetadata(
    start_time=start_time,
    forecast_time=forecast_time,
    system_name=system_name
)

# system -> field
data_source = LocalDataSource(
    system_name=system_name,
    data_class=DATA_CLASS,
    storage_base=STORAGE_BASE,
)
data_loader = DataLoader(data_source=data_source)
plot_data = load_data(
    data_loader=data_loader, 
    start_time=start_time, 
    forecast_time=forecast_time,
)
    
# field -> plot
panel = plot(
    plot_data=plot_data,
    plot_metadata=metadata,
)

# plot -> output
panel.show()
<Figure size 3200x3200 with 2 Axes>