Skip to content

Instantly share code, notes, and snippets.

@darothen
Last active April 25, 2023 11:55
Show Gist options
  • Star 9 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save darothen/c7560d8d19ffca90024c1f2df4927599 to your computer and use it in GitHub Desktop.
Save darothen/c7560d8d19ffca90024c1f2df4927599 to your computer and use it in GitHub Desktop.
Example of adding cyclic points to DataArrays for plotting with Cartopy
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"metadata": {},
"cell_type": "markdown",
"source": "Illustrating how to add a wrap-around longitude to a Dataset in xarray.\n\nRE: https://groups.google.com/forum/#!msg/xarray/IqEhYrFXSkU/2wiaZvfVAwAJ\n\n---\n\nFirst, we can open the dataset as normal, and plot using xarray's built-in tools."
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "%matplotlib inline\nimport xarray as xr\n\nds = xr.open_dataset(\"example.nc\")\nds['depth'].plot()",
"execution_count": 3,
"outputs": [
{
"metadata": {},
"data": {
"text/plain": "<matplotlib.collections.QuadMesh at 0x1193e3a20>"
},
"execution_count": 3,
"output_type": "execute_result"
},
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x118d76278>",
"image/png": "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\nAElFTkSuQmCC\n"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "That's fine - but can we plot this data in a geo-spatial projection using cartopy?"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "import matplotlib\nimport matplotlib.pyplot as plt\n\nimport cartopy\nimport cartopy.crs as ccrs\nfrom cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter\n\nproj = ccrs.PlateCarree()\n\nfig = plt.figure(figsize=(8,3))\nax = fig.add_subplot(111, projection=proj, aspect='auto')\n\npc = ax.pcolormesh(ds.lon, ds.lat, ds.depth, vmin=0, vmax=50)\ncb = plt.colorbar(pc, ax=ax, orientation='vertical')\ncb.set_label(ds.depth.name)\n\nax.set_global()\nax.set_xticks([-150, -90, -30, 0, 30, 90, 150], crs=proj)\nax.set_yticks([-90, -60, -30, 0, 30, 60, 90], crs=proj)\nax.xaxis.set_major_formatter(LongitudeFormatter())\nax.yaxis.set_major_formatter(LatitudeFormatter())",
"execution_count": 50,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x11c5fa390>",
"image/png": "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\ncZwC+X8yQEstFyqxAQAAAABJRU5ErkJggg==\n"
},
"metadata": {},
"output_type": "display_data"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "This reproduces the issue; for reference, here are the library versions I'm working with:"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "print(\"matplotlib\", matplotlib.__version__)\nprint(\"xarray\", xr.__version__)\nprint(\"cartopy\", cartopy.__version__)",
"execution_count": 37,
"outputs": [
{
"text": "matplotlib 1.5.1\nxarray 0.7.2\ncartopy 0.13.1\n",
"name": "stdout",
"output_type": "stream"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "---\n\n### Adding a wrap-around\n\nIt turns out that adding a wrap-around longitude band is easy. Cartopy has a special utility, [add_cyclic_point](http://scitools.org.uk/cartopy/docs/latest/cartopy/util/util.html?highlight=add_cyclic#cartopy.util.add_cyclic_point) to do just this. It's very straightforward to do in the xarray workflow from above:"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "from cartopy.util import add_cyclic_point\n\ndata = ds['depth']\nlon = ds.coords['lon']\n\nprint(\"Original shape -\", data.shape)\nlon_idx = data.dims.index('lon')\nwrap_data, wrap_lon = add_cyclic_point(data.values, coord=lon, axis=lon_idx)\nprint(\"New shape -\", wrap_data.shape)",
"execution_count": 48,
"outputs": [
{
"text": "Original shape - (64, 128)\nNew shape - (64, 129)\n",
"name": "stdout",
"output_type": "stream"
}
]
},
{
"metadata": {},
"cell_type": "markdown",
"source": "From here, you can construct a new DataArray with the modified data/coordinate dimension, or you can plot directly"
},
{
"metadata": {
"collapsed": false,
"trusted": true
},
"cell_type": "code",
"source": "fig = plt.figure(figsize=(8,3))\nax = fig.add_subplot(111, projection=proj, aspect='auto')\n\npc = ax.pcolormesh(wrap_lon, ds.lat, wrap_data, vmin=0, vmax=50)\ncb = plt.colorbar(pc, ax=ax, orientation='vertical')\ncb.set_label(ds.depth.name)\n\nax.set_global()\nax.set_xticks([-150, -90, -30, 0, 30, 90, 150], crs=proj)\nax.set_yticks([-90, -60, -30, 0, 30, 60, 90], crs=proj)\nax.xaxis.set_major_formatter(LongitudeFormatter())\nax.yaxis.set_major_formatter(LatitudeFormatter())",
"execution_count": 51,
"outputs": [
{
"data": {
"text/plain": "<matplotlib.figure.Figure at 0x11d096390>",
"image/png": "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\n"
},
"metadata": {},
"output_type": "display_data"
}
]
}
],
"metadata": {
"kernelspec": {
"name": "python3",
"display_name": "Python 3",
"language": "python"
},
"language_info": {
"name": "python",
"nbconvert_exporter": "python",
"mimetype": "text/x-python",
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"pygments_lexer": "ipython3",
"file_extension": ".py",
"version": "3.4.4"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
@spencerahill
Copy link

Thanks Dan! Just came across this problem myself and Google led me here. Worked like a charm.

@JOJO-IAP
Copy link

Thanks!

@Sumit-Mukherjee
Copy link

Hi, Dan. I was plotting some model data where longitudes are at varying intervals [-279.515801, -278.547384, -277.578912, . . . , -100.484199, -99.515801, -98.547384, . . . , 77.578912, 78.547384, 79.515801]. Applying 'add_cyclic_point' I am getting "ValueError: The coordinate must be equally spaced". Can you please help me out?

@darothen
Copy link
Author

@Sumit-Mukherjee, you can see in the underlying implementation of add_cyclic_point() that there is an explicit check that the values are equally spaced. It's not obvious to me that the rest of the code wouldn't work if the values weren't equally spaced, so you could try copy/pasting that function into your code, removing the exception, and see if that works.

@Sumit-Mukherjee
Copy link

It worked! One more way I found is to set the tolerance (rtol) in numpy.allclose used in the function add_cyclic_point() according to my coordinate values. Thank you for the suggestion.

@sevfour
Copy link

sevfour commented Jan 25, 2022

Hello!
I am having a similar issue but my lat and lon are 2 dimensional and not equally spaced (it's in a polar projection). add_cyclic_point() seem to only work with 1 dimensional longitudes. Is there an equivalent way to make it work in this case?
Thank you!

@Wamashudu
Copy link

@Sumit-Mukherjee Please share the code

@Sumit-Mukherjee
Copy link

@Wamashudu Inside the function add_cyclic_point, modify the following snippet setting atol (default value 1e-5) according to your data values (for my case it is 0.1).
if not np.allclose(delta_coord, delta_coord[0], atol=0.1):
raise ValueError('The coordinate must be equally spaced.')

Commenting out these two lines will also work.

@xiuyongwu
Copy link

@sevfour I also encounter the same problem, have you found out a way to solve this? Thanks in advance if you can share your experience.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment