如何控制 xarray 中面网格行和/或列的顺序?

Sey*_*avi 1 python matplotlib seaborn python-xarray

我正在尝试更改用于在 xarray 中制作构面网格的变量的顺序。例如,我将[a,b,c,d ] 作为列名称。我想将其重新排序为[c,d,a,b]。不幸的是,与seaborn不同,我无法在 xarray 绘图函数中找到 col_order 或 row_order 等参数(

\n
\n

https://xarray.pydata.org/en/stable/ generated/xarray.plot.FacetGrid.html

\n
\n

更新: \n为了帮助自己更好地解释我需要什么,我从 xarray 的用户指南中获取了下面的示例:\n在下面的示例中,我需要更改月份的位置。我的意思是,例如,我想将第 7 个月作为第一列,将第 2 个月作为第 5 列,依此类推。在此输入图像描述

\n
import matplotlib as mpl\nimport matplotlib.pyplot as plt\nimport numpy as np\nimport xarray as xr\nds = xr.tutorial.open_dataset("air_temperature.nc").rename({"air": "Tair"})\n\n# we will add a gradient field with appropriate attributes\nds["dTdx"] = ds.Tair.differentiate("lon") / 110e3 / np.cos(ds.lat * np.pi / 180)\nds["dTdy"] = ds.Tair.differentiate("lat") / 105e3\nds.dTdx.attrs = {"long_name": "$\xe2\x88\x82T/\xe2\x88\x82x$", "units": "\xc2\xb0C/m"}\nds.dTdy.attrs = {"long_name": "$\xe2\x88\x82T/\xe2\x88\x82y$", "units": "\xc2\xb0C/m"}\nmonthly_means = ds.groupby("time.month").mean()\n# xarray\'s groupby reductions drop attributes. Let\'s assign them back so we get nice labels.\nmonthly_means.Tair.attrs = ds.Tair.attrs\nfg = monthly_means.Tair.plot(\n    col="month",\n    col_wrap=4,  # each row has a maximum of 4 columns\n)\nplt.show()\n
Run Code Online (Sandbox Code Playgroud)\n

非常感谢任何帮助。

\n

Mic*_*ado 5

xarray 将尊重数据的形状,因此您可以在绘图之前重新排列数据:

In [2]: ds = xr.tutorial.open_dataset("air_temperature.nc")

In [3]: ds_mon = ds.groupby("time.month").mean()

In [4]: # order the data by month, descending
   ...: ds_mon.air.sel(month=list(range(12, 0, -1))).plot(
   ...:     col="month", col_wrap=4,
   ...: )

Out[4]: <xarray.plot.facetgrid.FacetGrid at 0x16b9a7700>
Run Code Online (Sandbox Code Playgroud)

月平均气温按降序排列的图