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/4137#issuecomment-642534445,https://api.github.com/repos/pydata/xarray/issues/4137,642534445,MDEyOklzc3VlQ29tbWVudDY0MjUzNDQ0NQ==,3332539,2020-06-11T09:38:06Z,2020-06-11T09:52:34Z,NONE,"Hey @kmuehlbauer, alles klar? :-)
Ah, yes, there's even the hint on the bottom. Didn't see this. Thanks!
I updated my previous comments.","{""total_count"": 2, ""+1"": 1, ""-1"": 0, ""laugh"": 1, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,636200235
https://github.com/pydata/xarray/issues/4137#issuecomment-642086321,https://api.github.com/repos/pydata/xarray/issues/4137,642086321,MDEyOklzc3VlQ29tbWVudDY0MjA4NjMyMQ==,3332539,2020-06-10T15:30:44Z,2020-06-11T09:51:48Z,NONE,"With pure matplotlib (avoiding the `xarray.plot` function) both versions show the data. However, calling `set_boundary` at the end would leave the data unrestricted.

```python
import xarray as xr
import matplotlib.pyplot as plt
import matplotlib.path as mpath
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import numpy as np

ds = xr.tutorial.load_dataset('air_temperature')

ax = plt.subplot(projection=ccrs.NorthPolarStereo())
# ax.set_boundary(circle, transform=ax.transAxes)  # works and ""cuts"" also the data as in the example above

data = ds.air.isel(time=0)

ax.pcolor(data.lon, data.lat, data, transform=ccrs.PlateCarree())

theta = np.linspace(0, 2*np.pi, 100)
center, radius = [0.5, 0.5], 0.5
verts = np.vstack([np.sin(theta), np.cos(theta)]).T
circle = mpath.Path(verts * radius + center)

ax.coastlines()
ax.gridlines()
ax.set_extent([-180,180, 50,90], crs=ccrs.PlateCarree())
ax.set_boundary(circle, transform=ax.transAxes)   # works for the axis border but not for the data
```
<p align=""center"">
<img src=""https://user-images.githubusercontent.com/3332539/84371411-e7986a80-abd9-11ea-942d-aa8deeb7945e.png"">

</p>
PS.: can I somehow append images of the plots?","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,636200235
https://github.com/pydata/xarray/issues/4137#issuecomment-642075928,https://api.github.com/repos/pydata/xarray/issues/4137,642075928,MDEyOklzc3VlQ29tbWVudDY0MjA3NTkyOA==,3332539,2020-06-10T15:14:11Z,2020-06-11T09:49:56Z,NONE,"Yes, sorry. I should've mentioned that. On a single plot this works, but only iff you apply the `set_boundary` command before the data plotting, i.e.:

```python
import xarray as xr
import matplotlib.pyplot as plt
import matplotlib.path as mpath
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import numpy as np

ds = xr.tutorial.load_dataset('air_temperature')

ax = plt.subplot(projection=ccrs.NorthPolarStereo())
ax.set_boundary(circle, transform=ax.transAxes)  # works

data = ds.air.isel(time=0)
p = data.plot(transform=ccrs.PlateCarree(),
            y=""lat"", x=""lon"",
            ax=ax
)

theta = np.linspace(0, 2*np.pi, 100)
center, radius = [0.5, 0.5], 0.5
verts = np.vstack([np.sin(theta), np.cos(theta)]).T
circle = mpath.Path(verts * radius + center)

ax.coastlines()
ax.gridlines()
ax.set_extent([-180,180, 50,90], crs=ccrs.PlateCarree())
# ax.set_boundary(circle, transform=ax.transAxes)   # wouldn't work
```
<p align=""center"">
<img src=""https://user-images.githubusercontent.com/3332539/84371227-9b4d2a80-abd9-11ea-832b-d535ecbcb0f6.png"">
<p/>","{""total_count"": 0, ""+1"": 0, ""-1"": 0, ""laugh"": 0, ""hooray"": 0, ""confused"": 0, ""heart"": 0, ""rocket"": 0, ""eyes"": 0}",,636200235