【问题标题】:Labeling xarray plot with month names用月份名称标记 xarray 图
【发布时间】:2021-12-28 19:31:05
【问题描述】:

我有一个包含纬度、经度和时间三个维度的 xarray 数据集。时间维度是从 1 到 12 的 12 个值的每月值。我想用月份名称绘制这个数据集的变量(例如“Jan”、“Feb”、“Mar”……)。 如何在绘图中将月数更改为月份名称?

<xarray.Dataset>
Dimensions:              (month: 12, latitude: 501, longitude: 721)
Coordinates:
  * longitude            (longitude) float64 49.8 49.81 49.82 ... 56.99 57.0
  * latitude             (latitude) float64 27.0 27.01 27.02 ... 31.99 32.0
  * month                (month) int64 1 2 3 4 5 6 7 8 9 10 11 12
Data variables:
    Sum_monthly_Rain_mm  (month, latitude, longitude) float32 dask.array<chunksize=(1, 501, 721), meta=np.ndarray>
    Tair_C               (month, latitude, longitude) float32 dask.array<chunksize=(1, 501, 721), meta=np.ndarray>

情节:

temp_rain_mean_months.Tair_C.plot(x='longitude', y='latitude', col='month', col_wrap=4,
                                      levels=[-10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40]);

【问题讨论】:

    标签: matplotlib time label python-xarray


    【解决方案1】:

    两种方式...

    您可以遍历 da.plot 返回的绘图对象上的轴并手动设置标题:

    months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    
    p = da.groupby('time.month').mean(dim='time').plot(col='month', col_wrap=4)
    for i, ax in enumerate(p.axes.flat):
        current_title = ax.get_title()
        assert current_title[:len('month = ')] == 'month = '
        month_ind = int(current_title[len('month = '):]) - 1
        ax.set_title(months[month_ind])
    

    或者,您可以在绘图之前修改数组的暗淡:

    months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    da['month_name'] = ('month', months)
    da.swap_dims({'month': 'month_name'}).Tair_C.plot(
        x='longitude',
        y='latitude',
        col='month_name',
        col_wrap=4,
        levels=[-10, -5, 0, 5, 10, 15, 20, 25, 30, 35, 40],
    )
    

    【讨论】:

    • 两种方法都很好用,谢谢。
    猜你喜欢
    • 2017-02-19
    • 2021-02-01
    • 2011-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多