html_url,issue_url,id,node_id,user,created_at,updated_at,author_association,body,reactions,performed_via_github_app,issue
https://github.com/pydata/xarray/issues/7401#issuecomment-1364707378,https://api.github.com/repos/pydata/xarray/issues/7401,1364707378,IC_kwDOAMm_X85RV8gy,15239248,2022-12-25T16:38:03Z,2022-12-25T16:38:03Z,NONE,"I have actually manage to make it work with minimal modification of the source xarray code:
```python
import xarray as xr
import matplotlib.pyplot as plt
import matplotlib as mpl
def _pass(*_,**__):
pass
mpl.figure.SubFigure.tight_layout = _pass
da = xr.tutorial.open_dataset(""air_temperature"")['air']
fig:plt.Figure = plt.figure(
constrained_layout=True,
figsize = (2*4,2*2)
)
(fig_top,fig_bot) = fig.subfigures(2,1)
(
da.groupby(da['time'].dt.season)
.mean()
.plot(col='season',fig=fig_top)
)
(
da.groupby(da['time'].dt.hour)
.mean()
.plot(col='hour', fig=fig_bot)
)
```

","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1510151748
https://github.com/pydata/xarray/issues/7401#issuecomment-1364696481,https://api.github.com/repos/pydata/xarray/issues/7401,1364696481,IC_kwDOAMm_X85RV52h,15239248,2022-12-25T15:12:15Z,2022-12-25T15:12:15Z,NONE,"thanks for the reply. Somehow i don't find an elegant way that does not involve many loops and hoops. Lets consider the following short example:
I want to produce a figure that takes the xr.tutorial.open_dataset(""air_temperature"") and produces a mean grouped by season and hour in the same figure:
Creating the top and bottom rows independently is super efficient with xarray:
```python
import xarray as xr
import matplotlib.pyplot as plt
da = xr.tutorial.open_dataset(""air_temperature"")['air']
(
da.groupby(da['time'].dt.season)
.mean()
.plot(col='season')
)
(
da.groupby(da['time'].dt.hour)
.mean()
.plot(col='hour')
)
```
but combining both seems quite complicated to me. I wish I could pass a subfigure to the plot function in the following way
```python
fig:plt.Figure = plt.figure()
(fig_top,fig_bot) = fig.subfigures(2,1)
(
da.groupby(da['time'].dt.season)
.mean()
.plot(col='season',fig=fig_top)
)
(
da.groupby(da['time'].dt.hour)
.mean()
.plot(col='hour', fig=fig_bot)
)
```

maybe I am missing a smart way of doing this?
cheers
","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1510151748