{ "cells": [ { "cell_type": "markdown", "id": "0661eec2-5a1d-41c4-9f7c-0b4955bb614e", "metadata": {}, "source": [ "# Basins" ] }, { "cell_type": "code", "execution_count": null, "id": "3e6ffbc0-9131-4385-883f-b4b675b4e3b6", "metadata": {}, "outputs": [], "source": [ "from shapely import MultiPolygon\n", "import matplotlib.pyplot as plt\n", "\n", "import huracanpy" ] }, { "cell_type": "code", "execution_count": null, "id": "931dbd40-2c5d-4b67-ad33-01f787c090a7", "metadata": {}, "outputs": [], "source": [ "# Basins defined in huracanpy\n", "huracanpy.basins.keys()" ] }, { "cell_type": "code", "execution_count": null, "id": "c44cdf05-bdc3-4b5f-9ad4-f1d64988d465", "metadata": {}, "outputs": [], "source": [ "# Example of one convention\n", "huracanpy.basins[\"WMO-TC\"]" ] }, { "cell_type": "code", "execution_count": null, "id": "9b1ca331-1183-49da-a16c-40348506bf5c", "metadata": {}, "outputs": [], "source": [ "# Plot WMO convention\n", "# Default defined from 0-360.\n", "for n, (basin, geometry) in enumerate(huracanpy.basins[\"WMO-TC\"].iterrows()):\n", " # South Atlantic (SA) crosses dateline so is defined as two regions\n", " if isinstance(geometry.geometry, MultiPolygon):\n", " for geom in geometry.geometry.geoms:\n", " x, y = geom.exterior.xy\n", " plt.plot(x, y, color=f\"C{n}\")\n", " x, y = geom.centroid.xy\n", " plt.text(x[0], y[0], basin, color=f\"C{n}\", ha=\"center\", va=\"center\")\n", " else:\n", " plt.plot(*geometry.geometry.exterior.xy, color=f\"C{n}\")\n", " x, y = geometry.geometry.centroid.xy\n", " plt.text(x[0], y[0], basin, color=f\"C{n}\", ha=\"center\", va=\"center\")" ] }, { "cell_type": "code", "execution_count": null, "id": "52ee0918-a21d-4dac-bfb9-7162471120a4", "metadata": {}, "outputs": [], "source": [ "# Plot Knutson convention\n", "# Default defined from 0-360.\n", "for n, (basin, geometry) in enumerate(huracanpy.basins[\"Knutson2020\"].iterrows()):\n", " # South Atlantic (SA) crosses dateline so is defined as two regions\n", " if isinstance(geometry.geometry, MultiPolygon):\n", " for geom in geometry.geometry.geoms:\n", " x, y = geom.exterior.xy\n", " plt.plot(x, y, color=f\"C{n}\")\n", " x, y = geom.centroid.xy\n", " plt.text(x[0], y[0], basin, color=f\"C{n}\", ha=\"center\", va=\"center\")\n", " else:\n", " plt.plot(*geometry.geometry.exterior.xy, color=f\"C{n}\")\n", " x, y = geometry.geometry.centroid.xy\n", " plt.text(x[0], y[0], basin, color=f\"C{n}\", ha=\"center\", va=\"center\")" ] }, { "cell_type": "code", "execution_count": null, "id": "e2b60f9c-16e9-4d75-aa9c-a14346c78652", "metadata": { "editable": true, "slideshow": { "slide_type": "" }, "tags": [ "nbsphinx-thumbnail" ] }, "outputs": [], "source": [ "# Plot basins with Cartopy projections\n", "# Essentially the same as the previous panel\n", "\n", "from cartopy.crs import EqualEarth, Geodetic\n", "\n", "transform = Geodetic()\n", "\n", "for central_longitude in [0, 180]:\n", " plt.figure()\n", " ax = plt.axes(projection=EqualEarth(central_longitude=central_longitude))\n", "\n", " for n, (basin, geometry) in enumerate(huracanpy.basins[\"WMO-TC\"].iterrows()):\n", " if isinstance(geometry.geometry, MultiPolygon):\n", " for geom in geometry.geometry.geoms:\n", " plt.plot(*geom.exterior.xy, color=f\"C{n}\", transform=transform)\n", " x, y = geom.centroid.xy\n", " plt.text(\n", " x[0],\n", " y[0],\n", " basin,\n", " color=f\"C{n}\",\n", " ha=\"center\",\n", " va=\"center\",\n", " transform=transform,\n", " )\n", " else:\n", " plt.plot(*geometry.geometry.exterior.xy, color=f\"C{n}\", transform=transform)\n", " x, y = geometry.geometry.centroid.xy\n", " plt.text(\n", " x[0],\n", " y[0],\n", " basin,\n", " color=f\"C{n}\",\n", " ha=\"center\",\n", " va=\"center\",\n", " transform=transform,\n", " )\n", "\n", " ax.coastlines()\n", " ax.gridlines(draw_labels=[\"left\", \"bottom\"])" ] }, { "cell_type": "code", "execution_count": null, "id": "4ab5bbb8-8a81-4368-834c-b8e472050521", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.11.10" } }, "nbformat": 4, "nbformat_minor": 5 }