diff --git a/_toc.yml b/_toc.yml index 160d0c1e4..1ff21a61a 100644 --- a/_toc.yml +++ b/_toc.yml @@ -44,6 +44,7 @@ parts: sections: - file: core/matplotlib/matplotlib - file: core/matplotlib/matplotlib-additional-topics-1 + - file: core/matplotlib/additional-topics2 - file: core/cartopy sections: - file: core/cartopy/cartopy diff --git a/core/matplotlib/additional-topics2.ipynb b/core/matplotlib/additional-topics2.ipynb new file mode 100644 index 000000000..1d96649c8 --- /dev/null +++ b/core/matplotlib/additional-topics2.ipynb @@ -0,0 +1,767 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "id": "a2d0abc7-ffd8-483e-87ae-bb169c5bcecf", + "metadata": {}, + "source": [ + "![Matplotlib logo](https://matplotlib.org/stable/_images/sphx_glr_logos2_003.png)" + ] + }, + { + "cell_type": "markdown", + "id": "2583ef82-33dc-4df5-9f6d-f357d72f0b81", + "metadata": {}, + "source": [ + "# Annotations, Colorbars, and Advanced Layouts\n", + "\n", + "---\n", + "## Overview\n", + "- Adding annotations\n", + "- Rendering equations\n", + "- Colormap overview \n", + "- Basic colorbars \n", + "- Shared colorbars\n", + "- Custom colorbars\n", + "- Mosaic subplots" + ] + }, + { + "cell_type": "markdown", + "id": "94250818-a557-4717-ae71-6aa45b9f212b", + "metadata": {}, + "source": [ + "## Prerequisites\n", + "\n", + "\n", + "| Concepts | Importance |\n", + "| --- | --- |\n", + "| Basic familiarity with [NumPy](../numpy/numpy-basics) | Necessary |\n", + "| Basic familiarity with [Matplotlib](matplotlib) | Necessary |\n", + "\n", + "- **Time to learn**: *30-40 minutes*" + ] + }, + { + "cell_type": "markdown", + "id": "9deb8579-2995-46b4-a82f-1ab79a67155c", + "metadata": {}, + "source": [ + "## Imports\n", + "Here, we import `matplotlib`, `numpy`, and `scipy` (to generate some sample data)" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "id": "00b72a52-d8e5-48e1-ac4c-35c2e3217de5", + "metadata": {}, + "outputs": [], + "source": [ + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "import scipy.stats as stats\n", + "from matplotlib.colors import LinearSegmentedColormap, ListedColormap, Normalize" + ] + }, + { + "cell_type": "markdown", + "id": "a4a423a8-5692-448f-aa78-3d16d3ace19d", + "metadata": {}, + "source": [ + "## Create Some Sample Data\n", + "Using `scipy.stats`, we can create a normal distribution! Notice how nicely centered and normal our distribution is!" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "id": "cd97b1e4-0b10-4099-b288-0c9cb7624a11", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "mu = 0\n", + "variance = 1\n", + "sigma = np.sqrt(variance)\n", + "\n", + "x = np.linspace(mu - 3 * sigma, mu + 3 * sigma, 200)\n", + "pdf = stats.norm.pdf(x, mu, sigma)\n", + "\n", + "plt.plot(x, pdf);" + ] + }, + { + "cell_type": "markdown", + "id": "fbe53c79-98d1-4cda-bea9-4cf532ce835e", + "metadata": {}, + "source": [ + "## Adding Annotations\n", + "A common part of many people's workflows is adding annotations, or \"a note of explanation or comment added to a text or diagram.\"\n", + "\n", + "We can do this using `plt.text` which takes the inputs of the `(x, y)` float text position in data coordinates and the text string." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "id": "1b5598da-caf6-4bc6-aa59-e74954b77bce", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(x, pdf)\n", + "plt.text(0, 0.05, 'here is some text!');" + ] + }, + { + "cell_type": "markdown", + "id": "1ab0a677-90c8-43f9-9d0d-c2f9de698edb", + "metadata": {}, + "source": [ + "## Rendering Equations" + ] + }, + { + "cell_type": "markdown", + "id": "9e2bc873-0592-4813-81ab-79e3ea7f5855", + "metadata": {}, + "source": [ + "We can even add **math text**, using Latex syntax. The key is use strings with following format:\n", + "\n", + "```python\n", + "r'$some_equation$'\n", + "```\n", + "\n", + "Here is the example equation we use!\n", + "\n", + "$$f(x) = \\frac{1}{\\mu\\sqrt{2\\pi}} e^{-\\frac{1}{2}\\left(\\frac{x-\\mu}{\\sigma}\\right)^2}$$\n", + "\n", + "If you are interested in learning more about Latex syntax, check out [their official documentation](https://latex-tutorial.com/tutorials/amsmath/).\n", + "\n", + "Further, if you’re running the notebook interactively (e.g. on Binder) you can double click on the cell to see the latex source for the rendered equation." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "id": "9ae9caab-af46-42f5-ac36-47cafbcdaf68", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "plt.plot(x, pdf)\n", + "\n", + "plt.text(\n", + " -1,\n", + " 0.05,\n", + " r'$f(x) = \\frac{1}{\\mu\\sqrt{2\\pi}} e^{-\\frac{1}{2}\\left(\\frac{x-\\mu}{\\sigma}\\right)^2}$',\n", + ");" + ] + }, + { + "cell_type": "markdown", + "id": "aad54e23-b488-4437-89ad-55e14e410f90", + "metadata": {}, + "source": [ + "We plotted our equation! But it looks pretty small; we can increase the size of the text, and center the equation by using `fontsize` and `ha` (horizontal alignment).\n", + "\n", + "This next example also uses latex notation in the legend text." + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "id": "f915a43f-dd59-462a-a52f-f2d39e53f6cd", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fstr = r'$f(x) = \\frac{1}{\\mu\\sqrt{2\\pi}} e^{-\\frac{1}{2}\\left(\\frac{x-\\mu}{\\sigma}\\right)^2}$'\n", + "\n", + "plt.plot(x, pdf, label=r'$\\mu=0, \\,\\, \\sigma^2 = 1$')\n", + "plt.text(0, 0.05, fstr, fontsize=15, ha='center')\n", + "plt.legend();" + ] + }, + { + "cell_type": "markdown", + "id": "79bc5d01-186c-41df-b645-73d49cfc85d1", + "metadata": {}, + "source": [ + "### Add a Box Around the Text" + ] + }, + { + "cell_type": "markdown", + "id": "210d8d70-e14c-47fa-a710-1d04e84496f4", + "metadata": {}, + "source": [ + "One other thing we can add here, for readability, is a box around the text, using `bbox`.\n", + "\n", + "The `bbox` argument in `plt.text` uses a dictionary to create the box! We pass in:\n", + "* a rounded box sytle (`boxstyle = 'round'`)\n", + "* a light grey facecolor (`fc = 'lightgrey'`)\n", + "* a black edgecolor (`ec = 'k'`)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "3be0cb9a-8058-4357-97e4-089d556b3194", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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efKrdX7HEZ+oMJOQ5pzj7neWEmFw3zkDNP2DNCr5+flMmTKFMWPG8Omnn1a6bl5eHl988QVFRUVccsklZGZmsnr1aq655hpycnKqddxLL7304M+33noraWlph9z+8ccfH/L7+vXrufzyy7niiiu45ppr2Lp1a7WOJz86pV97zhzYkUdnrNVFzhspFWYS0t6ev5WvVmdw+4TemnxRGp2oqCgefvhhpkyZUuW6zz33HEcffTSRkZFcc801/PWvf+XBBx/kL3/5C02bNg36mJmZmbRr1+7g72lpaSQlJR2yTrdu3Q4pzlq2bMljjz3Gc889x1VXXcVTTz0V9PHkcPdM7EdsVAR3vLWEomJduaOx0TxmErK27j7Ave8uY2RKKy47JsXvONIAvPLKK7z77rusXr2aQYMG8cwzz/gdqVIRERGHFEkVWb9+PWZGkybeh5cBAwbw61//mieeeILWrVsfXK+oqKjcKVUmT57MeeedB8CqVavo06cPAHv37qV58+aHrd+7d29eeOEFxo0bR3R09CHH0JnBRy6xeRy/P6sft7+5mP99s0FzNjYyKswkJBUXO257fRHFzvH3C4YQGaEuTDly7dq14+qrr2bp0qUsWrTI7zi15oUXXjjYqpadnc1dd93FnXfeydSpUxk5cuTB9SIjI3nppZcq3deqVasOFlqff/45vXv3Lne9AQMGMH36dE477bSDyw4cOMBjjz3GH//4xyO9S43e+cM789nyHfz1k1WccFQ7enc4vECWhkldmRKSnv12I9+t38nvzupHlzbBd8OIVOaUU07hlFNOoU2bhjUP3ty5c+nWrRv5+fn8+te/5uabb+b8888nKyuL1aurNy/WypUr+f7777n55puZO3cuixcvLne9vn378sUXXxz8vbCwkDvuuIOrrrqK7t3VwnOkzIwHJg8koUkUt7y2UGdpNiJqMZOQszY9mz9/vJJxfRK5aGSy33EanO+//57HH3+ctWvXsnfvXq6//nomTJjABRdcwOOPP86YMWOqvc/p06dz22238c4779C1a9c6SC0V2bZtG7GxsURERBATE8O///3vg7c98cQTNdrfCy+8UOV6KSkpLFy4EPBO0rnnnnsYM2aMLlJei9rEx/LA5EFc+/xcHvl8Nb8+rY/fkaQeqDCTkFJQVMytry2iaUwkD5yni3DXtg0bNnDDDTfQt29f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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure(figsize=(10, 8))\n", + "plt.plot(x, pdf)\n", + "\n", + "fstr = r'$f(x) = \\frac{1}{\\mu\\sqrt{2\\pi}} e^{-\\frac{1}{2}\\left(\\frac{x-\\mu}{\\sigma}\\right)^2}$'\n", + "plt.text(\n", + " 0,\n", + " 0.05,\n", + " fstr,\n", + " fontsize=18,\n", + " ha='center',\n", + " bbox=dict(boxstyle='round', fc='lightgrey', ec='k'),\n", + ")\n", + "\n", + "plt.xticks(fontsize=16)\n", + "plt.yticks(fontsize=16)\n", + "\n", + "plt.title(\"Normal Distribution with SciPy\", fontsize=24);" + ] + }, + { + "cell_type": "markdown", + "id": "91f4b661-131f-4d29-925f-0028f987be14", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "60564465-4b40-467b-a1a5-d10c4378329c", + "metadata": {}, + "source": [ + "## Colormap Overview" + ] + }, + { + "cell_type": "markdown", + "id": "b0179902-36d5-4b51-894c-f8aad2d92ad8", + "metadata": {}, + "source": [ + "### Classes of colormaps\n", + "\n", + "Click the dropdown arrow to see examples of colormaps within their respective classes.\n", + "\n", + "
\n", + " 1. Sequential: change in lightness and/or saturation of color incrementally. Good for data that has ordering. \n", + "\n", + "![Perceptually Sequential](images/perceptually-sequential.png)\n", + "\n", + "![Sequential](images/sequential.png)\n", + "\n", + "![Sequential2](images/sequential2.png)\n", + "\n", + "![Perceptually Sequential](images/ps.png)\n", + "\n", + "![Sequential](images/s1.png)\n", + "\n", + "![Sequential2](images/s2.png)\n", + "
\n", + "\n", + "
\n", + " 2. Diverging: change in lightness and/or saturation of two different colors that meet in the middle at an unsaturated color. Should be used when the data has a natural zero point, such as sea level. \n", + "\n", + "![Diverging](images/diverging.png)\n", + "\n", + "![Diverging](images/d.png)\n", + "
\n", + "\n", + "
\n", + " 3. Cyclic: change in lightness of two different colors that meet in the middle and begin and end at an unsaturated color. Should be used for values that naturally wrap around. \n", + "\n", + "![Cyclic](images/cyclic.png)\n", + "\n", + "![Cyclic](images/c.png)\n", + "
\n", + "\n", + "
\n", + " 4. Qualitative: miscellaneous color. Should not be used for data that has ordering or relationships. \n", + "\n", + "![Qualitative](images/qualitative.png)\n", + "\n", + "![Miscellanous](images/misc.png)\n", + "\n", + "![Miscellanous](images/m.png)\n", + "
" + ] + }, + { + "cell_type": "markdown", + "id": "5ce3b4c7-1186-4067-9b34-552382bf614e", + "metadata": {}, + "source": [ + "### Other considerations\n", + "\n", + "There is a lot of info about choosing colormaps that could be its own tutorial. Two important considerations:\n", + "1. Color blind friendly patterns: avoiding colormaps with both red and green can account for the most common form of color blindness. The GeoCAT-examples gallery has a section devoted to [picking better colormaps](https://geocat-examples.readthedocs.io/en/latest/gallery/index.html#colors) that covers this.\n", + "\n", + "1. Grayscale conversion: It is not uncommon for plots rendered in color to be printed in black and white, obscuring the usefulness of a chosen colormap\n", + "\n", + "![hsv colormap in grayscale](images/hsv2gray.png)\n", + "\n", + "- See [Choosing Colormaps in Matplotlib](https://matplotlib.org/stable/tutorials/colors/colormaps.html) for a more in depth version of this section" + ] + }, + { + "cell_type": "markdown", + "id": "66f8b410-ce74-47ad-99be-0b7c670c6c05", + "metadata": {}, + "source": [ + "## Basic Colorbars" + ] + }, + { + "cell_type": "markdown", + "id": "cb557718-d4ee-41c9-834c-ceddf2e3329a", + "metadata": {}, + "source": [ + "Before we look at a colorbar, let's generate some fake data using `numpy.random`" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "id": "49665676-e0db-425d-9ac2-9a0cab084297", + "metadata": {}, + "outputs": [], + "source": [ + "npts = 1000\n", + "nbins = 15\n", + "\n", + "x = np.random.normal(size=npts)\n", + "y = np.random.normal(size=npts)" + ] + }, + { + "cell_type": "markdown", + "id": "614c5189-a563-4856-a900-26bf3dcc849a", + "metadata": {}, + "source": [ + "Here, we plot a 2D histogram using our fake data, using the default colorbar \"viridis\"" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "id": "bf3694f1-e8ed-40de-a50a-7e85b179868c", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "ax = plt.gca()\n", + "\n", + "plt.hist2d(x, y, bins=nbins, density=True)\n", + "plt.colorbar();" + ] + }, + { + "cell_type": "markdown", + "id": "dc8e6e2b-3850-4379-bf18-d78ee01739dc", + "metadata": {}, + "source": [ + "We can change which colorbar to use by passing in `cmap = 'colorbar_name'`. We can use the `magma` colorbar instead!" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "id": "16c61ae2-14f6-4b14-8360-c832a46a42b1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig = plt.figure()\n", + "ax = plt.gca()\n", + "\n", + "plt.hist2d(x, y, bins=nbins, density=True, cmap='magma')\n", + "plt.colorbar();" + ] + }, + { + "cell_type": "markdown", + "id": "7c80a5af-364b-4eda-87c0-10a709b1f32b", + "metadata": {}, + "source": [ + "### Shared Colorbars\n", + "Often times, you are not plotting a single axis. You may wish to share colorbars between different plots! We can share colorbars between two plots using the following:" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "id": "affb4b48-1656-4f70-a9d5-e7bfb0002e7b", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "fig, ax = plt.subplots(nrows=1, ncols=2, constrained_layout=True)\n", + "\n", + "hist1 = ax[0].hist2d(x, y, bins=15, density=True, vmax=0.18)\n", + "hist2 = ax[1].hist2d(x, y, bins=30, density=True, vmax=0.18)\n", + "\n", + "fig.colorbar(hist1[3], ax=ax, location='bottom')" + ] + }, + { + "cell_type": "markdown", + "id": "1662bf3c", + "metadata": {}, + "source": [ + "You may have noticed the input argument `hist1[3]` to `fig.colorbar`. This is subplot syntax, as you have seen in the previous Matplotlib content." + ] + }, + { + "cell_type": "markdown", + "id": "92d072f8-7370-4ea5-92e0-4407cb5905bb", + "metadata": {}, + "source": [ + "## Custom Colorbars\n", + "\n", + "Even with the large collection of prepackaged colorbars, you may find it useful to create your own colorbar.\n", + "\n", + "Below are 2 similar examples of using custom colorbars: \n", + "\n", + "The first has very discrete list of colors called `colors`, an creates a colormap from this list with the call `ListedColormap`. \n", + "\n", + "The second used the call `LinearSegmentedColormap` to create a colormap from interpolating the same list `colors`." + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "id": "308cb21e-7d82-42b9-a02a-0b452d58d4ed", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "colors = [\n", + " 'white',\n", + " 'pink',\n", + " 'red',\n", + " 'orange',\n", + " 'yellow',\n", + " 'green',\n", + " 'blue',\n", + " 'purple',\n", + " 'black',\n", + "]\n", + "ccmap = ListedColormap(colors)\n", + "norm = Normalize(vmin=0, vmax=0.18)\n", + "\n", + "fig, ax = plt.subplots(nrows=1, ncols=2, constrained_layout=True)\n", + "\n", + "hist1 = ax[0].hist2d(x, y, bins=15, density=True, cmap=ccmap, norm=norm)\n", + "hist2 = ax[1].hist2d(x, y, bins=30, density=True, cmap=ccmap, norm=norm)\n", + "\n", + "cbar = fig.colorbar(hist1[3], ax=ax, location='bottom')" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "id": "5c72b622-ba9b-4fdb-be25-27366eca3872", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "cbcmap = LinearSegmentedColormap.from_list(\"cbcmap\", colors)\n", + "\n", + "fig, ax = plt.subplots(nrows=1, ncols=2, constrained_layout=True)\n", + "\n", + "hist1 = ax[0].hist2d(x, y, bins=15, density=True, cmap=cbcmap, norm=norm)\n", + "hist2 = ax[1].hist2d(x, y, bins=30, density=True, cmap=cbcmap, norm=norm)\n", + "\n", + "cbar = fig.colorbar(hist1[3], ax=ax, location='bottom')" + ] + }, + { + "cell_type": "markdown", + "id": "e41f44e0-2c4f-4ce2-abe6-35d20b8c142e", + "metadata": {}, + "source": [ + "## Mosaic Subplots\n", + "One of the recent features added to matplotlib is `subplot_mosaic` where you can pass the structure of your figure, and it will generate your subplots automatically!\n", + "\n", + "For example, if we wanted two plots on top, and one of the bottom, we can construct it using the following block of text:\n", + "\n", + "```python\n", + "\"\"\n", + "AB\n", + "CC\n", + "\"\"\n", + "```\n", + "\n", + "This corresponds to three axes: `A`, `B`, and `C` with `A` and `B` on top of `C`.\n", + "\n", + "Once we create the subplots, we can access them using the resultant axes dictionary, with the syntax `axes_dict['your_axis']`. An example of this is given below!" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "id": "7e080054-ce5c-451d-81f6-c4791a4b2537", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "axdict = plt.figure(constrained_layout=True).subplot_mosaic(\n", + " \"\"\"\n", + " AB\n", + " CC\n", + " \"\"\"\n", + ")\n", + "\n", + "histA = axdict['A'].hist2d(x, y, bins=15, density=True, cmap=cbcmap, norm=norm)\n", + "histB = axdict['B'].hist2d(x, y, bins=10, density=True, cmap=cbcmap, norm=norm)\n", + "histC = axdict['C'].hist2d(x, y, bins=30, density=True, cmap=cbcmap, norm=norm)" + ] + }, + { + "cell_type": "markdown", + "id": "7569067a-7c59-46b0-b283-b108094010f1", + "metadata": {}, + "source": [ + "You'll notice there is not a colorbar plotted by default. When constructing the colorbar, we need to specify:\n", + "* Which plot to use for the colormapping (ex. `histA`)\n", + "* Which axes to merge colorbars across (ex. [`histA`, `histB`])\n", + "* Where to place the colorbar (ex. `bottom`)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "id": "3077f1b6-adba-411d-a5a5-430600f0e2fa", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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", + "text/plain": [ + "
" + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "axdict = plt.figure(constrained_layout=True).subplot_mosaic(\n", + " \"\"\"\n", + " AB\n", + " CC\n", + " \"\"\"\n", + ")\n", + "\n", + "histA = axdict['A'].hist2d(x, y, bins=15, density=True, cmap=cbcmap, norm=norm)\n", + "histB = axdict['B'].hist2d(x, y, bins=10, density=True, cmap=cbcmap, norm=norm)\n", + "histC = axdict['C'].hist2d(x, y, bins=30, density=True, cmap=cbcmap, norm=norm)\n", + "\n", + "fig.colorbar(histA[3], ax=[axdict['A'], axdict['B']], location='bottom')\n", + "fig.colorbar(histC[3], ax=[axdict['C']], location='right');" + ] + }, + { + "cell_type": "markdown", + "id": "85b884b1-4db7-4d9d-9563-79750dbcfc67", + "metadata": {}, + "source": [ + "---" + ] + }, + { + "cell_type": "markdown", + "id": "2f505b91-cb9a-4175-a1b7-91f501c1e2cc", + "metadata": {}, + "source": [ + "## Summary\n", + "* You can use features in `matplotlib` to add annotations, even math, to your plots\n", + "* There are a number of considerations to take into account when choosing your colormap\n", + "* You can create your own colormaps with `matplotlib`\n", + "* Various axes in figures can share colorbars\n", + " \n", + "## Additional Resources\n", + "- [Matplotlib text documentation](https://matplotlib.org/stable/api/text_api.html#matplotlib.text.Text.set_math_fontfamily)\n", + "- [Matplotlib annotation documentation](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.annotate.html)\n", + "- [Matplotlib's annotation examples](https://matplotlib.org/stable/tutorials/text/annotations.html#sphx-glr-tutorials-text-annotations-py)\n", + "- [Writing mathmatical expressions in matplotlib](https://matplotlib.org/stable/tutorials/text/mathtext.html)\n", + "- [Mathtext Examples](https://matplotlib.org/stable/gallery/text_labels_and_annotations/mathtext_examples.html#sphx-glr-gallery-text-labels-and-annotations-mathtext-examples-py)\n", + "- [Drawing fancy boxeas with matplotlib](https://matplotlib.org/stable/gallery/shapes_and_collections/fancybox_demo.html)\n", + "- [Plot Types Cheat Sheet](https://lnkd.in/dD5fE8V)\n", + "- [Choosing Colormaps in Matplotlib](https://matplotlib.org/stable/tutorials/colors/colormaps.html)\n", + "- [Making custom colormaps](https://matplotlib.org/stable/tutorials/colors/colormap-manipulation.html)\n", + "- [Complex figure and subplot composition](https://matplotlib.org/stable/tutorials/provisional/mosaic.html#)" + ] + } + ], + "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.8.12" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +} diff --git a/core/matplotlib/images/c.png b/core/matplotlib/images/c.png new file mode 100644 index 000000000..913d56f11 Binary files /dev/null and b/core/matplotlib/images/c.png differ diff --git a/core/matplotlib/images/cyclic.png b/core/matplotlib/images/cyclic.png new file mode 100644 index 000000000..4d2704e5d Binary files /dev/null and b/core/matplotlib/images/cyclic.png differ diff --git a/core/matplotlib/images/d.png b/core/matplotlib/images/d.png new file mode 100644 index 000000000..8045141f2 Binary files /dev/null and b/core/matplotlib/images/d.png differ diff --git a/core/matplotlib/images/diverging.png b/core/matplotlib/images/diverging.png new file mode 100644 index 000000000..887c69121 Binary files /dev/null and b/core/matplotlib/images/diverging.png differ diff --git a/core/matplotlib/images/hsv2gray.png b/core/matplotlib/images/hsv2gray.png new file mode 100644 index 000000000..12287ac17 Binary files /dev/null and b/core/matplotlib/images/hsv2gray.png differ diff --git a/core/matplotlib/images/m.png b/core/matplotlib/images/m.png new file mode 100644 index 000000000..bd636a62d Binary files /dev/null and b/core/matplotlib/images/m.png differ diff --git a/core/matplotlib/images/misc.png b/core/matplotlib/images/misc.png new file mode 100644 index 000000000..33814e727 Binary files /dev/null and b/core/matplotlib/images/misc.png differ diff --git a/core/matplotlib/images/perceptually-sequential.png b/core/matplotlib/images/perceptually-sequential.png new file mode 100644 index 000000000..fadd85c28 Binary files /dev/null and b/core/matplotlib/images/perceptually-sequential.png differ diff --git a/core/matplotlib/images/ps.png b/core/matplotlib/images/ps.png new file mode 100644 index 000000000..381a1a976 Binary files /dev/null and b/core/matplotlib/images/ps.png differ diff --git a/core/matplotlib/images/qualitative.png b/core/matplotlib/images/qualitative.png new file mode 100644 index 000000000..2e0c25793 Binary files /dev/null and b/core/matplotlib/images/qualitative.png differ diff --git a/core/matplotlib/images/s1.png b/core/matplotlib/images/s1.png new file mode 100644 index 000000000..738f6a059 Binary files /dev/null and b/core/matplotlib/images/s1.png differ diff --git a/core/matplotlib/images/s2.png b/core/matplotlib/images/s2.png new file mode 100644 index 000000000..c47fc1361 Binary files /dev/null and b/core/matplotlib/images/s2.png differ diff --git a/core/matplotlib/images/sequential.png b/core/matplotlib/images/sequential.png new file mode 100644 index 000000000..5730a3e82 Binary files /dev/null and b/core/matplotlib/images/sequential.png differ diff --git a/core/matplotlib/images/sequential2.png b/core/matplotlib/images/sequential2.png new file mode 100644 index 000000000..162545b58 Binary files /dev/null and b/core/matplotlib/images/sequential2.png differ diff --git a/core/matplotlib/matplotlib.ipynb b/core/matplotlib/matplotlib.ipynb index d88212b7a..9fc8b6d38 100644 --- a/core/matplotlib/matplotlib.ipynb +++ b/core/matplotlib/matplotlib.ipynb @@ -22,10 +22,14 @@ "## Overview\n", "We will cover the basics of plotting within Python, using the Matplotlib library, including a few different plots available within the library.\n", "\n", - "1. Create a basic line plot.\n", - "1. Add labels and grid lines to the plot.\n", - "1. Plot multiple series of data.\n", - "1. Plot image, contour, and filled contour plots." + "1. Figure and axes\n", + "1. Basic line plots\n", + "1. Labels and grid lines\n", + "1. Customizing colors\n", + "1. Subplots\n", + "1. Scatterplots\n", + "1. Displaying Images\n", + "1. Contour and filled contour plots." ] }, { @@ -182,7 +186,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## Line plots\n", + "## Basic Line Plots\n", "\n", "Let's create a `Figure` whose dimensions, if printed out on hardcopy, would be 10 inches wide and 6 inches long (assuming a landscape orientation). We then create an `Axes`, consisting of a single subplot, on the `Figure`. After that, we call `plot`, with `times` as the data along the x-axis (independent values) and `temps` as the data along the y-axis (the dependent values).\n", "\n", @@ -206,7 +210,14 @@ "ax = fig.add_subplot(1, 1, 1)\n", "\n", "# Plot times as x-variable and temperatures as y-variable\n", - "ax.plot(times, temps)" + "ax.plot(times, temps);" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Labels and Grid Lines" ] }, { @@ -337,14 +348,14 @@ "ax.grid(True)\n", "\n", "# Add a legend to the upper left corner of the plot\n", - "ax.legend(loc='upper left')" + "ax.legend(loc='upper left');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "### Customizing colors" + "## Customizing colors" ] }, { @@ -382,14 +393,16 @@ "ax.grid(True)\n", "\n", "# Add a legend to the upper left corner of the plot\n", - "ax.legend(loc='upper left')" + "ax.legend(loc='upper left');" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## Working with multiple panels in a figure" + "## Subplots\n", + "\n", + "Working with multiple panels in a figure" ] }, { @@ -421,7 +434,7 @@ "metadata": {}, "source": [ "### Using add_subplot to create two different subplots within the figure\n", - "We can use the `.add_subplot()` method to add subplots to our figure! The subplot arguements are formatted as follows:\n", + "We can use the `.add_subplot()` method to add subplots to our figure! The subplot arguments are formatted as follows:\n", "`(rows, columns, subplot_number)`\n", "\n", "For example, if we want a single row, with two columns, we use the following code block" @@ -441,7 +454,28 @@ "\n", "# Create a plot for dewpoint\n", "ax2 = fig.add_subplot(1, 2, 2)\n", - "ax2.plot(times, dewpoint, color='tab:green')" + "ax2.plot(times, dewpoint, color='tab:green');" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "You can also use `plot.subplots()` with inputs `nrows` and `ncolumns` to initialize your subplot axes, `ax`. \n", + "\n", + "Index your axes, as in `ax[0].plot()` to decide which subplot you're plotting to." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "fig, ax = plt.subplots(nrows=1, ncols=2, figsize=(10, 6))\n", + "\n", + "ax[0].plot(times, temps, color='tab:red')\n", + "ax[1].plot(times, dewpoint, color='tab:green');" ] }, { @@ -468,7 +502,7 @@ "# Create a plot for dewpoint\n", "ax2 = fig.add_subplot(1, 2, 2)\n", "ax2.plot(times, dewpoint, color='tab:green')\n", - "ax2.set_title('Dewpoint')" + "ax2.set_title('Dewpoint');" ] }, { @@ -499,7 +533,7 @@ "ax2 = fig.add_subplot(1, 2, 2)\n", "ax2.plot(times, dewpoint, color='tab:green')\n", "ax2.set_title('Dewpoint')\n", - "ax2.set_xlim(110, 130)" + "ax2.set_xlim(110, 130);" ] }, { @@ -530,7 +564,7 @@ "# Create a plot for dewpoint\n", "ax2 = fig.add_subplot(1, 2, 2, sharex=ax, sharey=ax)\n", "ax2.plot(times, dewpoint, color='tab:green')\n", - "ax2.set_title('Dewpoint')" + "ax2.set_title('Dewpoint');" ] }, { @@ -621,7 +655,7 @@ "ax.set_xlabel('Temperature (surface)')\n", "ax.set_ylabel('Temperature (1000 hPa)')\n", "ax.set_title('Temperature Cross Plot')\n", - "ax.grid(True)" + "ax.grid(True);" ] }, { @@ -649,7 +683,7 @@ "ax.set_xlabel('Temperature (surface)')\n", "ax.set_ylabel('Temperature (1000 hPa)')\n", "ax.set_title('Temperature Cross Plot')\n", - "ax.grid(True)" + "ax.grid(True);" ] }, { @@ -679,14 +713,15 @@ "ax.set_xlabel('Temperature (surface)')\n", "ax.set_ylabel('Temperature (1000 hPa)')\n", "ax.set_title('Temperature Cross Plot')\n", - "ax.grid(True)" + "ax.grid(True);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ - "## imshow\n", + "## Displaying Images\n", + "\n", "`imshow` displays the values in an array as colored pixels, similar to a heat map.\n", "\n", "Here is some fake data to work with - let's use a bivariate normal distribution." @@ -728,7 +763,8 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "## contour/contourf\n", + "## Contour and Filled Contour Plots\n", + "\n", "- `contour` creates contours around data.\n", "- `contourf` creates filled contours around data." ] @@ -747,7 +783,7 @@ "outputs": [], "source": [ "fig, ax = plt.subplots()\n", - "ax.contour(X, Y, Z)" + "ax.contour(X, Y, Z);" ] }, { @@ -765,7 +801,7 @@ "source": [ "fig, ax = plt.subplots()\n", "c = ax.contour(X, Y, Z, levels=np.arange(-2, 2, 0.25))\n", - "ax.clabel(c)" + "ax.clabel(c);" ] }, { @@ -782,7 +818,7 @@ "outputs": [], "source": [ "fig, ax = plt.subplots()\n", - "c = ax.contourf(X, Y, Z)" + "c = ax.contourf(X, Y, Z);" ] }, {