Skip to content

FacetGrid plot overlaying multiple variables from same dataset?  #7957

Open
@guidocioni

Description

@guidocioni

What is your issue?

I'm trying to produce a facet plot which contains maps with different overlaid layers (e.g. a pcolormesh and streamplot).
At the moment I'm creating the plot and then iterating over the axes to add the plots manuallay

p = dss['LH'].plot.pcolormesh(
    x='lon',
    y='lat',
    col="exp",
)

for i, ax in enumerate(p.axes.flat):
    ax.coastlines()
    ax.streamplot(
        dss.isel(exp=i).lon.values,
        dss.isel(exp=i).lat.values,
        dss.isel(exp=i)['u_10m_gr'].values,
        dss.isel(exp=i)['v_10m_gr'].values,
    )

This is far from optimal and doesn't really look clean to me. Also, I'm not entirely sure the order of p.axes.flat correspond to the one of the exp dimension I'm using to facet.

All examples in the doc (https://docs.xarray.dev/en/stable/user-guide/plotting.html) refer to the plot method of DataArray, so it seems that, once created the p object, no other variable from the dataset can be accessed.

However, on the doc it is mentioned

TODO: add an example of using the map method to plot dataset variables (e.g., with plt.quiver).

It is not clear to me whether the xarray.plot.FacetGrid.map method can indeed be used to plot another dataset variable or not. If that's not the case, is there any way to achieve what I'm doing without manually looping through the axes?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions