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-1385875187,https://api.github.com/repos/pydata/xarray/issues/7401,1385875187,IC_kwDOAMm_X85Smsbz,2448579,2023-01-17T18:46:37Z,2023-01-17T18:47:08Z,MEMBER,"Seems like a good addition to me. I'm not sure about passing Axes handles. IIRC FacetGrid does call a bunch of Figure methods, so there may be unintended consequences","{""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-1366550470,https://api.github.com/repos/pydata/xarray/issues/7401,1366550470,IC_kwDOAMm_X85Rc-fG,10194086,2022-12-28T10:36:03Z,2022-12-28T10:36:03Z,MEMBER,"Good point. Combining two `FacetGrids` is a good use case. My intuition would be to allow passing _exactly_ the correct number of axes and not the figure. But then I have not heard from subfigure before now and this may also be a valid option. ```python f, axs = plt.subplots(2, 4) da1.plot(col='season', ax=axs[0, :]) da2.plot(col='season', ax=axs[1, :]) ``` ","{""total_count"": 1, ""+1"": 1, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1510151748 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) ) ``` ![image](https://user-images.githubusercontent.com/15239248/209475744-e210de9d-a336-4ef2-969b-5130c9811505.png) ","{""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) ) ``` ![image](https://user-images.githubusercontent.com/15239248/209473217-49b5f198-4bca-41dc-b955-3ad1c3992626.png) 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 https://github.com/pydata/xarray/issues/7401#issuecomment-1364669991,https://api.github.com/repos/pydata/xarray/issues/7401,1364669991,IC_kwDOAMm_X85RVzYn,10194086,2022-12-25T12:01:27Z,2022-12-25T12:01:27Z,MEMBER,I think the usual workflow is to create the figure with gridspec and then update the created subplots and figure. Is there something that is not possible if done this way around? ,"{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,1510151748