{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "dda2ce31-2259-4dd0-9388-22c27573e3a7",
   "metadata": {},
   "source": [
    "# w02 section: NumPy and Matplotlib Notebook\n",
    "\n",
    "Liana Merk (2026)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6cb24c5-bfc7-4740-8128-f0c5ba915a55",
   "metadata": {},
   "source": [
    "## our imports"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "949fb258-0048-4f60-9f7b-f0bd28a10d66",
   "metadata": {},
   "source": [
    "Here's the same way we imported them in pset0."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "9146a832-d097-4897-a5e1-30eabda3280b",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np                    \n",
    "import matplotlib.pyplot as plt\n",
    "rng = np.random.default_rng()\n",
    "\n",
    "%matplotlib inline                     "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7349be22-041e-446c-ab3c-815cb73a3b77",
   "metadata": {},
   "source": [
    "## 1. Numpy"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7a0cbd3-78af-4469-95aa-bd97ca7d9df7",
   "metadata": {},
   "source": [
    "A Numpy array is like a list, but optimized for numerical data and able to naturally represent multi-dimensional tables. Numpy makes it easy to slice, reshape, and compute statistics on arrays. Let’s practice indexing and manipulating arrays."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "78589ee7-31c8-404a-a520-cbf5fa3abf2a",
   "metadata": {},
   "source": [
    "### Initialize and reshape"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "3558c24b-d4b6-47a7-b35e-79a064283cd3",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([1, 2, 3])"
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# You can make a numpy array with a list\n",
    "my_list = [1, 2, 3]\n",
    "\n",
    "my_array = np.array(my_list)\n",
    "\n",
    "# Note this is identical to doing:\n",
    "# my_array = np.array([1, 2, 3])\n",
    "# Sometimes you already have a list and want it to become a np array\n",
    "my_array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "71f34e5a-47ca-4abd-a017-469b81fa2bfa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [4, 5, 6]])"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# or with a multi-dimensional list of lists\n",
    "my_md_list = [[1, 2, 3], [4, 5, 6]]\n",
    "my_md_array = np.array(my_md_list)\n",
    "my_md_array"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a8ca0dc2-4a04-4fbf-a337-6821e734b35a",
   "metadata": {},
   "source": [
    "Other ways to initialize arrays without specifying data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "69e03159-a784-4d80-aa30-41636b28a32c",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Range:\n",
      " [ 0  1  2  3  4  5  6  7  8  9 10 11]\n",
      "Zeros the same shape we made above:\n",
      " [0 0 0 0 0 0 0 0 0 0 0 0]\n",
      "Evenly spaced values:\n",
      " [ 2.  4.  6.  8. 10.]\n",
      "Zeros 1d:\n",
      " [0. 0.]\n",
      "Zeros 2d:\n",
      " [[0. 0.]\n",
      " [0. 0.]\n",
      " [0. 0.]]\n",
      "Zeros as integer:\n",
      " [0 0 0]\n"
     ]
    }
   ],
   "source": [
    "# If you ever forget what any of these do, you can\n",
    "# run np.arange? in a code cell, as if asking python\n",
    "# a question :)\n",
    "number_line = np.arange(12)\n",
    "\n",
    "print('Range:\\n', number_line)\n",
    "print('Zeros the same shape we made above:\\n', np.zeros_like(number_line))\n",
    "print('Evenly spaced values:\\n', np.linspace(2, 10, 5))\n",
    "print('Zeros 1d:\\n', np.zeros((2)))\n",
    "print('Zeros 2d:\\n', np.zeros((3, 2)))\n",
    "print('Zeros as integer:\\n', np.zeros(3).astype(int))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c0835e56-fbb7-4e6b-81be-785665c59d7d",
   "metadata": {},
   "source": [
    "Now, if we start with a 1D array, how can we make it into a matrix of a specific shape?"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "a7fe2945-bce3-4fff-8ac8-5ab721de7515",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2,  3],\n",
       "       [ 4,  5,  6,  7],\n",
       "       [ 8,  9, 10, 11]])"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "number_line.reshape(3,4)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "78ba11ef-4338-44f0-a0b1-efcf290d9832",
   "metadata": {},
   "source": [
    "Note that most numpy functions you perform on an array do not function in place, so if we reshape, then call number line again, it is unchanged."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "a7c8f282-7c9f-4307-9f41-d2155ad0d795",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11])"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "number_line"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7315b946-62fa-4fff-966e-d299e6bd26d9",
   "metadata": {},
   "source": [
    "This is notably *not* true for `rng.shuffe`, which functions on a column. Let's try it out:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "cc926f63-49f0-4aac-bba9-0a8ea043578b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  1,  2,  3],\n",
       "       [ 4,  5,  6,  7],\n",
       "       [ 8,  9, 10, 11]])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_number_line = number_line.reshape(3,4).copy()\n",
    "new_number_line"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "70598950-d2f4-45db-8e0a-4edde90a3a89",
   "metadata": {},
   "outputs": [],
   "source": [
    "rng.shuffle(new_number_line)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "648d6538-9629-441e-90b9-3c7c416fcb8c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 4,  5,  6,  7],\n",
       "       [ 8,  9, 10, 11],\n",
       "       [ 0,  1,  2,  3]])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "new_number_line"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "377b3946-5f13-492c-91b6-e4bef11f0630",
   "metadata": {},
   "source": [
    "Hmm, it looks like it only shuffled the order of the rows, not each *column*. To shuffle columns we need to iterate through them:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "20bda1a6-d8e4-4885-8f64-fb5fe45ea617",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 0,  9,  6,  7],\n",
       "       [ 8,  5, 10,  3],\n",
       "       [ 4,  1,  2, 11]])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "real_shuffled_number_line = number_line.reshape(3,4).copy()\n",
    "\n",
    "# For each column:\n",
    "for col in range(real_shuffled_number_line.shape[1]):\n",
    "    rng.shuffle(real_shuffled_number_line[:,col])\n",
    "\n",
    "real_shuffled_number_line"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c7ab1057-6cfd-468c-9fba-4e54a857f4f3",
   "metadata": {},
   "source": [
    "### Indexing"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "85e9ffbf-acd3-400b-b4ac-b7b79162337e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2, 3],\n",
       "       [4, 5, 6]])"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Remind ourselves of our starting position\n",
    "my_md_array"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "81587619-31f0-41a0-b8b6-b461d75394dd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "np.int64(6)"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Pull out the i=1, j=2 element\n",
    "# Note this is equivalent to my_md_array[1][2]\n",
    "my_md_array[1,2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "a034c723-5a1a-4dcc-9381-f52b17ed43f9",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1],\n",
       "       [4]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# pull the first column\n",
    "my_md_array[:, [0]]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "8ffefbfb-a66e-46c6-a5db-a367f8a3bb0b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[1, 2],\n",
       "       [4, 5]])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# pull the columns from [0, 2)\n",
    "# Putting the : first tells numpy\n",
    "# to pull out all the rows in those columns\n",
    "my_md_array[:, 0:2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "c49487e6-8aed-4810-878b-8d1e6afa6358",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[4, 5, 6],\n",
       "       [1, 2, 3]])"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Reversed array, check out what this does when we have a 2d array\n",
    "my_md_array[::-1]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "406e96f5-8a18-4b4b-8c75-5ad8ef72048c",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([3, 2, 1])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Reversed array, here's one slice\n",
    "my_md_array[0][::-1]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2f9336bc-ceb7-4e54-ae9e-c601af9c171e",
   "metadata": {},
   "source": [
    "### Summary Stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "ad4a6a37-bb58-41e0-ad7b-4cd2392b2a3e",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "6\n",
      "1\n",
      "21\n",
      "3.5\n",
      "1.707825127659933\n"
     ]
    }
   ],
   "source": [
    "# You can call numpy functions directly on the array\n",
    "# Note this is the same as np.max(my_md_array)\n",
    "print(my_md_array.max())\n",
    "print(my_md_array.min())\n",
    "print(my_md_array.sum())\n",
    "print(my_md_array.mean())\n",
    "print(my_md_array.std())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "ebf70bb5-1a57-4ed0-9705-18545175fc81",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[False, False,  True],\n",
       "       [ True,  True,  True]])"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# what if we are interested in where certain values\n",
    "# are above a threshold, like some MI threshold for example?\n",
    "my_md_array > 2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "8c9ef8c2-2fbc-444c-9e80-0e5e158ed0e4",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([3, 4, 5, 6])"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# And now what if we wanted to slice those out?\n",
    "my_md_array[my_md_array > 2]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "966a0270-74a9-4ca2-8dfd-cd08a3b4e86e",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "0998917d-227d-474a-b87f-40db9c9ec0f5",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "12634b72-7d0f-4e13-b6f2-63d78d5c7603",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "cebef37b-802d-483a-9b33-b0fc3cb0c4e8",
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "markdown",
   "id": "6ac44283-1105-4f8a-bf35-ce752137a036",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-info\">\n",
    "    <b>Numpy exercises</b> \n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "e7716890-6fa1-408a-96bd-f2b30548292c",
   "metadata": {},
   "outputs": [],
   "source": [
    "# TODO\n",
    "# Make a numpy array of random values from 0 to 1 in the size 5 by 6\n",
    "\n",
    "# Print just the third column\n",
    "\n",
    "# Count how many entries are more than 0.5 in column 4\n",
    "\n",
    "# Shuffle each column of your array, save this as another array.\n",
    "\n",
    "# Pull out the i=2, j=3 element of your array\n",
    "\n",
    "# Find the mean and standard deviation of your array"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "52cb018c-43f3-45ad-ba5c-68364bb7ab35",
   "metadata": {},
   "source": [
    "## 2. Matplotlib"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1447c51d-9bcf-45e9-a1ae-19c56b035b92",
   "metadata": {},
   "source": [
    "Let's practice building and populating plots! Matplotlib lets you create a figure (the canvas), axes (the actual plotting area), and then populate with markers like lines, dots, histograms, or heatmaps. You have a lot of control over title, labels, legend, and layout."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "b6bf1d96-ece8-427d-9b53-f49ea0f1a567",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAkIAAAHFCAYAAAAe+pb9AAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAIUZJREFUeJzt3Q+QVdV9B/DfAsL6J5AKCiiIaFAxVAlQUCxNNYoFq6WTRhI7IlY7UrUKVBIJrQpxwiQZaaIRTKJozKil4J/admugM1FAjAqitcqMVoigggScAP4JCLzOuTO7w7KLAu7u233n85m5ce/Ze/edtyfwvpx/t6pUKpUCACBD7cpdAQCAchGEAIBsCUIAQLYEIQAgW4IQAJAtQQgAyJYgBABkSxACALIlCAEA2RKEgBZz3333RVVV1T6PJ598skVb48MPP4xbbrmlxV8XaD06lLsCQH7uvffeOOWUUxqUn3rqqS0ehKZPn158/ad/+qct+tpA6yAIAS1uwIABMWTIEL95oOwMjQGtThomu/baa4ueo5NPPjkOPfTQIjj9+te/jvSc6B/84AfRt2/fOOKII+Kcc86J//u//6t3f+rdSWFryZIlccYZZxT3H3vssfFP//RPsWvXruKa3/zmN3HUUUcVX6deodrhufHjxxf3pa8feuihBnW7//77i+89//zzLfTbAJpTlafPAy05R+jyyy8vAs3gwYPr/2VUVRXt27ev+7pPnz5FeLnhhhuK829961uxadOmuOyyy2L16tXxt3/7t7Fly5aYPHlydO/ePV588cXiutog9L//+7/RqVOnuPHGG4sw9Z//+Z9x++23xzXXXBM//vGPY/v27cXcoD/7sz+LK664Iq688sri3hSOTjzxxBg0aFAcdthhsXTp0nr1HDp0aPHf5557roV+a0BzMjQGtLjUS7O3FIJ27txZd56CysKFC+Pwww8vzlPIGTNmTPzqV7+KF154oS70/Pa3v42JEycWwecP//AP6+7fvHlz/Nu//VtcdNFFxfnIkSPjo48+ijlz5sQ3v/nNOO644+rCWK9evRrU6brrritCWwpYAwcOLMpSL1A6fv7znzfL7wVoeYbGgBaXhpdqQ0Xt8eyzz9a75uyzz64LQUn//v2L/44aNaouBO1Z/uabb9a7/3Of+1xdCKp1ySWXxO7du2Px4sWfWsdvfOMbcfTRR8edd95ZV3bHHXcUPUZjx4494PcMtE56hIAWl8LLp02WPvLII+udd+zY8RPLf//739crT8Nle+vRo0ddb9GnScNqV111Vdx2223FnKSPP/44/vVf/7UYikvfAyqDHiGgIr377rsNyjZs2FD8t2vXrvv1M/7u7/6uCEBz586Nn/3sZ8XQ3YQJE5q8rkD56BECKtK2bdvi8ccfrzc89uCDD0a7du3iT/7kT4rz2p6dNHeoMT179oyvfe1rMXv27NixY0dceOGFxdwioHIIQkCLSxOb95wYXSut1qpd0v5ZpV6f1KOzdu3aOOmkk6Kmpqbo1UlltWEmzSNKq9PSpOqvfOUrxbBbt27d4vjjj6/7Oddff30MGzas+Dot5wcqiyAEtLi0GqsxKajULmP/rNJ8oDTROS2/f/nll4uQ8+1vf7tuJ+la99xzT0yZMqXoOUor1dLy/LTMf8/l8ikYpb2IUlgCKot9hICKk/YRSnsOpZ6nz+p//ud/4vTTTy9C1dVXX90k9QNaDz1CAI144403iiX5qRcpzRVKO04DlceqMYBGfOc734nzzjsv3n///Zg/f36xyzRQeQyNAQDZKmuPUNrdNS1HPeaYY4qdYh977LFPveepp54qtsWvrq6OE044Ie66664WqSsAUHnKGoQ++OCDYhJiegDi/lizZk2MHj06RowYEStXrizG7tPzgB5++OFmrysAUHlazdBY6hF69NFHi4cq7kt6+nTaIG3VqlV1ZWmX15deeimeeeaZFqopAFAp2tSqsRR20hOk93T++ecX+4CkbfAPOeSQBvekfUHSUSs9cPG9994rNlvb88GNAEDrlfpt0o7xaTpN2iE+yyCUnhO094MU03naoTbtGZKWuO5t5syZDTZQAwDapnXr1kWvXr3yDELJ3r04tSN7++rdmTp1avG06FpbtmwpttdPv8jOnTs3c20BgKawdevW6N27d/FonKbUpoJQ2jK/9unRtTZu3BgdOnTY59Ok00MVax+suKcUggQhAGhbmnpaS5vaUPHMM8+MRYsW1StbuHBhDBkypNH5QQAArTYIpR1bX3zxxeKoXR6fvk5Pi64d1ho3bly9FWJpy/s01JVWjs2dO7eYKJ0eqggA0KaGxpYvXx5nn3123XntXJ7apz+vX7++LhQlffv2jZqampg0aVLxAMQ0c/z222+Pr371q2WpPwDQ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0DbUfm439UBW2YJQraqqqnrn6Q3uXfZp1zdWXisNsU2fPr1Bee/evQ+yxgBAuWzevLkYImvzQahbt27Rvn37Br0/GzdubNDrU6tHjx6NXt+hQ4fo2rVro/dMnTo1Jk+eXHf+u9/9Lvr06VNMyG7KXyQHn/BTKF23bp05W2WmLVoPbdF6aIvWI43oHHfccXHkkUc26c8tWxDq2LFjsQx+0aJF8Zd/+Zd15en8L/7iLxq958wzz4x///d/r1e2cOHCGDJkSBxyyCGN3tOpU6fi2FsKQSZLtx6pLbRH66AtWg9t0Xpoi9ajXbt2lbN8PvXU3H333TF37txiJdikSZOKnpq0Eqy2N2fcuHF116fyN998s7gvXZ/uu+eee+KGG24o47sAANqqss4RGjt2bDHWN2PGjFi/fn0MGDAgampqiqGrJJXtuadQ2ngxfT8FpjvvvDOOOeaYuP322+OrX/1qGd8FANBWlX2y9NVXX10cjbnvvvsalH35y1+OF1544aBfLw2T3XzzzY0Ol9HytEfroS1aD23RemiLym+Lsm6oCACQ9bPGAADKRRACALIlCAEA2RKEAIBsVWQQmj17drHUvrq6uti0ccmSJZ94/VNPPVVcl64/4YQT4q677mqxula6A2mLRx55JM4777w46qijis3L0gaav/zlL1u0vpXuQP9s1Hr66aeLHdwHDhzY7HXMxYG2RXpm4rRp04rtRdKqmRNPPLHYS42Wb4sHHnggTj/99DjssMOKZ1xefvnlxVYwfDaLFy+OCy+8sNgaJz0267HHHvvUe5rk87tUYf7lX/6ldMghh5R+9rOflV599dXS9ddfXzr88MNLb775ZqPXr169unTYYYcV16Xr033p/gULFrR43XNvi/T9733ve6Xnnnuu9Nprr5WmTp1a3P/CCy+0eN0r0YG2R63f/e53pRNOOKE0cuTI0umnn95i9a1kB9MWF110UWnYsGGlRYsWldasWVN69tlnS08//XSL1rsSHWhbLFmypNSuXbvSj370o+LzI51/8YtfLI0ZM6bF615pampqStOmTSs9/PDDaTV76dFHH/3E65vq87vigtDQoUNLEyZMqFd2yimnlG688cZGr//mN79ZfH9PV111VemMM85o1nrm4EDbojGnnnpqafr06c1Qu/wcbHuMHTu29I//+I+lm2++WRAqU1v813/9V6lLly6lzZs3N1UVOMi2+MEPflD8w2BPt99+e6lXr15+p01of4JQU31+V9TQ2I4dO2LFihUxcuTIeuXpfNmyZY3e88wzzzS4/vzzz4/ly5fHxx9/3Kz1rWQH0xZ72717d2zbtq3JH7CXo4Ntj3vvvTfeeOONYhMzytcWjz/+ePFMxe9///tx7LHHxkknnVQ8Wuijjz7SLC3cFsOHD4+33nqreMpB+rx+9913Y8GCBXHBBRdoixbWVJ/fZd9Zuilt2rQpdu3a1eDp9el876fW10rljV2/c+fO4uel8V9api32dtttt8UHH3wQF198sSYoQ3u8/vrrceONNxbzJdL8IMrXFqtXr46lS5cW8yAeffTR4mekHfnfe+8984RauC1SEEpzhNIjon7/+98XnxUXXXRR3HHHHZ+lKhyEpvr8rqgeoVppktWeUmrfu+zTrm+snOZvi1oPPfRQ3HLLLTFv3rw4+uij/epbuD3Sh8Mll1wS06dPL3ofKO+fjdQ7mr6XPoCHDh0ao0ePjlmzZhWPIdIr1LJt8eqrr8Z1110XN910U9Gb9MQTT8SaNWvqHhZOy2qKz++K+mdet27don379g2S/MaNGxukxlo9evRo9Pr0L+CuXbs2a30r2cG0Ra0Ufq644oqYP39+nHvuuc1c0zwcaHukIcnUvbxy5cq49tpr6z6M018y6c/GwoUL45xzzmmx+uf+ZyP9yzYNiXXp0qWurH///kV7pGGafv36NXu9K9HBtMXMmTPjrLPOiilTphTnp512Whx++OExYsSIuPXWW40itKCm+vyuqB6hjh07FsvoFi1aVK88nafuzMakJdp7X5/+kk/j8Yccckiz1reSHUxb1PYEjR8/Ph588EFj7mVsj7R9wcsvvxwvvvhi3ZH+xXvyyScXXw8bNqwpq5eVg/mzkT5433nnnXj//ffryl577bVo165d9OrVq9nrXKkOpi0+/PDD4ve+pxSmEo/ubFlN9vldqtClkPfcc0+xnG7ixInFUsjf/OY3xffTSoBLL720wfK7SZMmFden+yyfL09bPPjgg6UOHTqU7rzzztL69evrjrR8m5Zvj71ZNVa+tti2bVuxKumv/uqvSq+88krpqaeeKvXr16905ZVXNmGt8nSgbXHvvfcWf0/Nnj279MYbb5SWLl1aGjJkSLH6jM8m/f985cqVxZHiyaxZs4qva7cyaK7P74oLQkn6IO3Tp0+pY8eOpUGDBhV/adS67LLLSl/+8pfrXf/kk0+WvvSlLxXXH3/88aU5c+aUodaV6UDaIn2d/s+/95Guo+XbY2+CUHnbYtWqVaVzzz23dOihhxahaPLkyaUPP/ywiWuVpwNti7RcPm3tkdqiZ8+epb/+678uvfXWW2WoeWX51a9+9YmfAc31+V2V/qfpO6wAAFq/ipojBABwIAQhACBbghAAkC1BCADIliAEAGRLEAIAsiUIAQDZEoQAgGwJQgBAtgQhACBbghDQ5v32t7+NHj16xHe/+926smeffbZ4unh6GjXAvnjWGFARampqYsyYMbFs2bI45ZRT4ktf+lJccMEF8cMf/rDcVQNaMUEIqBjXXHNN/Pd//3f80R/9Ubz00kvx/PPPR3V1dbmrBbRighBQMT766KMYMGBArFu3LpYvXx6nnXZauasEtHLmCAEVY/Xq1fHOO+/E7t2748033yx3dYA2QI8QUBF27NgRQ4cOjYEDBxZzhGbNmhUvv/xydO/evdxVA1oxQQioCFOmTIkFCxYUc4OOOOKIOPvss+Nzn/tc/Md//Ee5qwa0YobGgDbvySefLFaH/eIXv4jOnTtHu3btiq+XLl0ac+bMKXf1gFZMjxAAkC09QgBAtgQhACBbghAAkC1BCADIliAEAGRLEAIAsiUIAQDZEoQAgGwJQgBAtgQhACBbghAAkC1BCACIXP0/INpev5C7bxQAAAAASUVORK5CYII=",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# This is us making the figure and axes. Right now, subplots() is empty\n",
    "# But we will use this shortly to make subplots\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "# Label the axes and add a title\n",
    "ax.set(xlabel=\"x\", ylabel=\"y\", title=\"Empty\")\n",
    "\n",
    "# Show!\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c5e68e75-6bce-4639-98af-8bf154a51f7e",
   "metadata": {},
   "source": [
    "Now we can populate it with points."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "84a1ca13-64af-424b-a770-9cc7b8ff7194",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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//aXC82fP1/dunVThQoV7EXrJk2adNnvmTdvnho2bKiQkBBFRkZqzJgx+dJWAK5hAszoexpq+jOt7FmFTZnKBJ3OIxfo0a+W2xGec735y2YbbMoWDdY/u9VySbsBuI5Lw01SUpLq1aun999/P1fb79ixQ126dFGrVq20cuVKDR06VP3799f48ePzvK0AXMuUoszlEn55prW6RmeGnF/WH9TNoxbq4S+X27k6xtLtR/T5oh32/vCe0QorGOjilgPIb34Oh6lIu54ZuZk4caJ69Ohx0W0GDx6sKVOmaOPGjdmP9evXT6tXr9bixYtz9XMoSwHeIeZgor2y909r9tt5NcaN15bVloOJ2n30pG5vFK43elGOAryFx5SlrpQJMB07dszxWKdOnbR8+XKlpqZe8HuSk5Nth5x9A+D5zPJwc6ZhswrKXMbBnATQLCM3waZ8WIj+ryvlKMBXeVS4OXDggMqWzbniwXyelpamw4czL8p3rmHDhtmkl3WLiIjIp9YCyA/mRH8j72ygmQPb2HPZhBcvqHdur6+iIZSjAF8VIA9jyldny6qqnft4liFDhmjgwIHZn5uRGwIO4H2qlS7CSfoAeF64KVeunB29OVtcXJwCAgJUsmTJC35PcHCwvQEAAN/gUWWpZs2aaebMmTkemzFjhho1aqTAQIagAQCAi8PNiRMntGrVKnvLWupt7u/evTu7pHTvvffmWBm1a9cuW2YyK6Y+++wzffrppxo0aJDL9gEAALgXl5alzCqntm3bZn+eNTemb9+++uKLLxQbG5sddIyqVatq2rRpGjBggD744AN78r9Ro0apZ8+eLmk/AABwP25znpv8wnluAADwPF57nhsAAIDLIdwAAACvQrgBAABehXADAAC8CuEGAAB4FcINAADwKoQbAADgVQg3AADAqxBuAACAV/Goq4I7Q9YJmc2ZDgEAgGfIet/OzYUVfC7cJCYm2o8RERGubgoAALiK93FzGYZL8blrS2VkZGj//v0KDQ2Vn5+f01OlCU179uy57HUvPJG3758v7CP75/l4DT2bt79+ebmPJq6YYGMumu3vf+lZNT43cmM6JDw8PE9/hnkxvfWX1hf2zxf2kf3zfLyGns3bX7+82sfLjdhkYUIxAADwKoQbAADgVQg3ThQcHKwXX3zRfvRG3r5/vrCP7J/n4zX0bN7++rnLPvrchGIAAODdGLkBAABehXADAAC8CuEGAAB4FcINAADwKoSbi5g/f766detmz4RozmQ8adKky3bmvHnz1LBhQ4WEhCgyMlJjxow5b5vx48erVq1adha5+Thx4kR5wv5NmDBBHTp0UOnSpe1JmZo1a6ZffvklxzZffPGFfa5zb6dPn5Yn7OPcuXMv2P5NmzZ5xWt43333XXD/ateu7Zav4bBhw9S4cWN7NvEyZcqoR48e2rx5s9cch1ezf552HF7NPnrScXg1++dJx+Ho0aMVHR2dfTI+8/v2888/e8TxR7i5iKSkJNWrV0/vv/9+rjpyx44d6tKli1q1aqWVK1dq6NCh6t+/v30RsyxevFh33HGH+vTpo9WrV9uPt99+u5YuXSp33z/zRmr+U502bZpWrFihtm3b2jdWs69nMwdAbGxsjpv5JXeFK93HLOY/p7PbX716da94DUeOHJljv8yp0UuUKKHevXu75Wto/pN84okntGTJEs2cOVNpaWnq2LGj3W9vOA6vZv887Ti8mn30pOPwavbPk47D8PBwDR8+XMuXL7e3du3aqXv37lq/fr37H39mKTguzXTTxIkTL7nNc88956hZs2aOxx599FFH06ZNsz+//fbbHTfddFOObTp16uS488473X7/LqRWrVqOf/3rX9mff/75546wsDCHO8rNPs6ZM8dud+zYsYtu402vodnez8/PsXPnTo94DePi4ux+zps3zyuPw9zsn6cfh7nZR08+Dq/mNfS047B48eKOTz75xO2PP0ZunMSkUZPYz9apUyebdlNTUy+5zaJFi+SJFyA1FzAzf3Gc7cSJE6pcubJN/F27dj3vL0pP0KBBA5UvX17t27fXnDlzcnzNm17DTz/9VDfeeKN9vTzhNYyPj7cfz/2d85bjMDf75+nH4ZXsoyceh1fzGnrKcZienq7vvvvOjkqZ8pS7H3+EGyc5cOCAypYtm+Mx87kZpjx8+PAltzGPe5q3337b/pKb4cQsNWvWtLXiKVOm6Ntvv7VDqC1atFBMTIw8gfmPdOzYsXYI1cxtqFGjhv2P1ZQCsnjLa2iGuE3t/KGHHsrxuLu+hmZwauDAgWrZsqXq1KnjdcdhbvfPk4/D3O6jpx6HV/MaesJxuHbtWhUpUsTOj+nXr5+dH2Pmybj78edzVwXPS2bC19myTv589uMX2ubcx9ydOdheeuklTZ482U6iy9K0aVN7y2IOxuuuu07vvfeeRo0aJXdn/hM1tyzmrxNTD3/rrbfUunVrr3oNzX+cxYoVsxMgz+aur+GTTz6pNWvWaOHChV55HF7J/nnqcZjbffTU4/BqXkNPOA5r1KihVatW6fjx4zZw9u3b1841uljAcZfjj5EbJylXrtx5yTMuLk4BAQEqWbLkJbc5N8W6s//973968MEH9f3339uh1Evx9/e3Kwlc/RfjX2H+gzm7/d7wGpr/SD777DM7kS8oKMjtX8OnnnrK/gVrShNmiN7bjsMr2T9PPQ6vZh896Ti8mv3zlOMwKChIUVFRatSokV0dZhYxmEnR7n78EW6cxPx1YWbLn23GjBn2FyIwMPCS2zRv3lyewPylaJYxfvPNN7r55ptzdfCaxG+GmT2VqXOf3X5Pfw0N81fX1q1b7ZujO7+G5mebv4ZNaWL27NmqWrWqVx2HV7N/nnYcXu0+espx+Ff2z1OOwwu1JTk5WW5//Dl1erIXSUxMdKxcudLeTDe988479v6uXbvs159//nlHnz59srffvn27o1ChQo4BAwY4NmzY4Pj0008dgYGBjnHjxmVv89tvvzkKFCjgGD58uGPjxo32Y0BAgGPJkiVuv3/ffPONbesHH3zgiI2Nzb4dP348e5uXXnrJMX36dMe2bdvsc91///32e5YuXZrv+3c1+/juu+/alQtbtmxxrFu3zn7dfN/48eO94jXMcs899ziaNGlywed0p9fwsccesytG5s6dm+N37uTJk9nbePJxeDX752nH4dXsoycdh1ezf550HA4ZMsQxf/58x44dOxxr1qxxDB061OHv7++YMWOG2x9/hJvLLEc899a3b1/7dfOxTZs2Ob7H/II3aNDAERQU5KhSpYpj9OjR5z3vDz/84KhRo4Z9wc2SubMPWHfeP3P/UtsbzzzzjKNSpUp2/0uXLu3o2LGjY9GiRQ5XudJ9fP311x3VqlVzhISE2OWOLVu2dEydOtVrXkPDvAkWLFjQMXbs2As+pzu9hhfaN3Mzy2SzePJxeDX752nH4dXsoycdh1f7O+opx+EDDzzgqFy5cnY72rdvnx1s3P348zP/OHcsCAAAwHWYcwMAALwK4QYAAHgVwg0AAPAqhBsAAOBVCDcAAMCrEG4AAIBXIdwAAACvQrgBAABehXADAAC8CuEGAAB4FcINAI936NAhlStXTq+99lr2Y0uXLlVQUJC94jAA38K1pQB4hWnTpqlHjx5atGiRatasqQYNGujmm2/WiBEjXN00APmMcAPAazzxxBP69ddf1bhxY61evVrLli1TSEiIq5sFIJ8RbgB4jVOnTqlOnTras2ePli9frujoaFc3CYALMOcGgNfYvn279u/fr4yMDO3atcvVzQHgIozcAPAKKSkpuv7661W/fn075+add97R2rVrVbZsWVc3DUA+I9wA8ArPPvusxo0bZ+faFClSRG3btlVoaKh++uknVzcNQD6jLAXA482dO9euivrqq69UtGhR+fv72/sLFy7U6NGjXd08APmMkRsAAOBVGLkBAABehXADAAC8CuEGAAB4FcINAADwKoQbAADgVQg3AADAqxBuAACAVyHcAAAAr0K4AQAAXoVwAwAAvArhBgAAeBXCDQAAkDf5fzxzpHLD1vCbAAAAAElFTkSuQmCC",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig, ax = plt.subplots()\n",
    "# A list of x values, then y values\n",
    "ax.plot([1,2,3], [2,1,4])\n",
    "ax.set(xlabel=\"x\", ylabel=\"y\", title=\"Look, I added a line\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "26b5e6e4-5e72-4974-a8c1-998f0aff6c42",
   "metadata": {},
   "source": [
    "You can also make subplots. Be sure to give each subplot a label! Lots of customizability here."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "id": "5457a0ea-6b7d-4f98-9c0c-37be74cc8bfa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjgAAAHgCAYAAACo8BcpAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAASm1JREFUeJzt3Qd8FGX6wPEnBRJaaBKKVKXDUQQUOKSIgiBYDs9yJyIqJ6KeyHGcoCdiw4Jc5BT4oxQBC4cIerQDgYAUpQsqIJwYAoIB0QBRSpL5f55XZ283ZdMWdvfN7+tnDDs7szvvOzPvPPOW2QjHcRwBAACwSGSwNwAAACDQCHAAAIB1CHAAAIB1CHAAAIB1CHAAAIB1CHAAAIB1CHAAAIB1CHAAAIB1CHAAAIB1CHBwQUVERORrSkxMDNs907VrV2nevHlAP3PGjBkmX7755psCr7t48WJ58skn5XzTfabb+N577+W57F133SV169Yt0Od/++23Jh3bt28vwlYi1Hz55Zdmv+Z0bL/99tuSkJAQlO1C+CPAwQW1YcMGn6l3795SqlSpbPMvu+wy9kyAaIAzZsyYkMrPv//97zJ//vwCBziaDgIc+wIc3a8EOAi06IB/IuBH+/btfV5XqVJFIiMjs82H3S699FIJN/qzfadPnzYBOcLbzz//zH4sBqjBQUj5/e9/L82aNfOZ17dvX9P0MXfuXM+8rVu3mnn//ve/PfM+//xzueGGG6RixYoSGxsrrVq1kjfffDNf36uffcUVV0j58uWldOnScskll8jdd9+dZxOR2yyTU5Paxx9/bAI3vSBefPHFptYiIyPD875+lq774osvyrPPPiu1a9c22922bVtZsWJFvrZ72rRp0rJlS7NepUqV5KabbpJdu3b5NAW99tpr5t/eTYBuOvJKd2GcO3dOHnvsMalRo4bExcXJ1VdfLXv27Mmzicrftmj+tmvXzvx74MCBnnR4N719+OGH0qFDB7NuuXLl5JprrjG1gVl98MEH0qJFC4mJiTHf8corr5jP0c/zpq8ffPBBmTx5sjRp0sQs7x5PWuOg26p5rmnUGsepU6eaIMibprFPnz6ycOFCad26tTkW9LP0tXtc6esyZcrI5ZdfLps3b/abt5999pnZLv2urJYsWWLe03xQR48elT/96U9Sq1Yts+16M/Hb3/5WPvroI7/fkd/1li5dKt27d/fsL03H2LFjPe9rWm677TaTB5pu/Xv77bdLUlKSZxlNv57zqlu3bp79qvO1qXfRokVmee9j13X27Fl55plnpHHjxp7t1GNDtz+nffD++++bfaDnSqjVaOI80V8TB4JlwIABTpkyZTyvJ0+erFcI59tvvzWvz50755QrV84pVaqUM2jQIM9yL7zwghMdHe2cOHHCvN69e7dZ7tJLL3VmzpzpLFq0yLn99tvNZ+my/qxfv96JiIhwbrvtNmfx4sXOypUrnenTpzv9+/f3LKOv9bP279/vs+6qVavMfP3r6tKli1O5cmWnRo0azoQJE5z//Oc/zp///Gez3AMPPOBZTj9L59WqVcvp1KmTM2/ePGfu3LlOu3btnBIlSpjt8vf9zz33nJmn6dT0arovueQSp3z58s5XX31lltm3b59z8803m+U2bNjgmU6fPp2vdLvpyU9R4eZF3bp1nT/+8Y9mm9555x2ndu3aToMGDZz09HSf/V6nTp1874PU1FRPHjz++OOedCQnJ5v333rrLfNejx49nAULFjhz5sxx2rRp45QsWdL5+OOPPd+zZMkSJzIy0unataszf/58k99XXHGF2easadTXF198sdOiRQvn7bffNtv0+eefm/fuuusuZ+rUqc7y5cvN9PTTT5tjdMyYMT6foWmsWbOm07x5c5MXmjb9Pt2/TzzxhPPb3/7Wef/99822NGzY0Klatarz008/+c3n1q1bm/WyuuWWW5z4+HhzzqiePXs6VapUcaZMmeIkJiaafNHvfPfdd/1+fn7We+ONN8z+0nzUvPnoo4+ciRMnOkOGDPEso3mr62naVq9ebdbXY0k/++jRo2aZlJQUz3H82muvefarzv/iiy9MOqtVq+Zz7KqMjAzn2muvNWWH5rnuA90m3V9Nmzb1yUPdB9WrVzfnxrRp08xxunHjRr95ADsQ4CCkAhy9IGthpxdrtXbtWvN6xIgRTr169TzLXXPNNU7Hjh09r/XCGBMT4xw4cMDn83v16uWULl3a+fHHH3PdhnHjxpnv8LdMQQMcnffBBx/4LKsBml5ck5KSfAIcDYR+/vlnz3IatFWqVMm5+uqrc/3+H374wVxQe/fu7fMdmn7Nhz/84Q+eeRpU5RSg5Cfd6qqrrnKioqL8LuOdF1m36V//+pcnwMotwMnPtmzatMkso3nhTS92moe/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9/BipUOvdRiyjiDRoa4PPfSQGQqd0yiqZs2amSG2bdu2NaNbdMTMqFGjPEN4vUdR6TB2Heqqw4n1+3UYsA4tz88oLh0aq8OYdT1N9w033GCG13rTEUP33nuv2WYd2ut+Tn7TXdBh4joqxpubTu99kXUUVX63RUfPNG7c2Ayz1s8cPXq0zygkHYIdGxtrjqnu3bs769aty7adOmxZR1zp9+gQ9ueff94M469YsaLPclmH9XvT4caNGjUy+1aHH48dO9YMG8+6jzSNOhIoq5w+282nl156yckPPR51eZ10mLQ3fQzA4MGDzbGhx6uO5NLt1fzyHrmVVUHW0yHvemxoXutIRR2e7f1IBh051q9fP5Ov+ggHHdatw+w1T3T/e0tISDCjJHW0k/exoqPD9DEHFSpU8By7Lj2XdPSdnue6z3X0lx4b9913n7N379489wHsF6H/C3aQBRRH2sdB71T1LldrhhAcOkrIHemktYYA7EATFYBi5Z577jFNgjqyRjsXa18SHbasTWIA7EGAA6BY0U7cWmOmw52134b+zIL2kfJ+7ACA8EcTFQAAsA7DxAEAgHUIcAAAgHUIcAAAgHUIcAAAgHUIcAAAgHUIcAAAgHUIcAAAgHUIcAAAgHUIcAAAgHUIcAAAgHUIcAAAgHUIcAAAgHUIcJDNk08+KREREXLs2DG/uVO3bl256667CpSD69evN5//448/kvMA8uXLL7805cY333yT7b23335bEhISQjYntSzVbS+ob7/91qy3ffv287JdxQEBDgpt/vz58ve//73AAc6YMWMIcAAUKMDRciMcA5zC0gBH00yAU3jRRVgXxVzr1q0l3Jw7d87cUUVHc+gDyN3PP/8spUqVIovCGDU4yNV3330nt99+u5QvX16qVq0qd999t6SmpubaRJWZmSnPPPOMNGrUyBQMFSpUkBYtWsgrr7xi3tfq1r/+9a/m3/Xq1TOBhk6JiYme9V988UVp3LixxMTESHx8vNx5551y8OBBn+1yHEeee+45qVOnjsTGxkrbtm1l+fLl0rVrVzO59HP182fNmiV/+ctf5OKLLzafu2/fPjl69KgMGTJEmjZtKmXLljXfddVVV8nHH3/s8116x6if8dJLL8kLL7xg0qxp0+/56quvTMD06KOPSo0aNUw+3XTTTZKSksJRBavp+fOnP/1JatWqZc6pKlWq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PVnk/AiVtATKwbMZsm/fPomNjTVNybnR90NdYcsOyo3Qxb4J7/1S0HIjrAKcnLRv315mz56d6/sxMTFmykozMT8Xes30/C4b6oqaFl3fHIiaf0G+GJu0/DoFUyDyI1TSEgiaAr0Lc4+13ITD+VSUsoNyI3Sxb8J3vxS03Aj9UiYP+nMR2nQFAAAQEjU4p06dMtXZLn12zvbt26VSpUpSu3ZtU0WszSIzZ8407yckJJgf92zWrJmcPXvW1NzoU5V1AgAACIkAZ/PmzT4joNz27gEDBsiMGTPMzz8cOHDA874GNcOHDzdBT6lSpUygs2jRIvMbWAAAACER4HTt2tW01+dGgxxvI0aMMBMAAIDVfXAAAACyIsABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAADWIcABAABBczTtqDyz5hk5lnYsoJ9LgAMAAIJmzhdzZOOhjeZvIBHgAACAoJn75Vyfv4FCgAMAAILiu1PfyYbkDebf65PXm9eBQoADAACCYv7u+T6vF+xeELDPjpYgWrNmjbz00kuyZcsWOXz4sMyfP19uvPFGv+usXr1ahg0bJl988YXUqFFDRowYIYMHD75g2wwAAAomOTVZXt34qmQ4GT7zF361UCIiIsy/9W/CJwmy9/hen2WiIqLkoSsekjiJC58AJy0tTVq2bCkDBw6Ufv365bn8/v37pXfv3jJo0CCZPXu2rFu3ToYMGSJVqlTJ1/oAAODCS0pNkvEbxku6ky6REZEmaFGOOJLpZJp/6999P+yTCZ9OMK81GNJ50ZHR0rdRX2lRoUX4BDi9evUyU35NnjxZateuLQkJCeZ1kyZNZPPmzTJu3LhcA5wzZ86YyXXixAnzNzMz00z+6PspKSly8OBBT4QZrhzHkdOnTxcpLbt375bIyEhxzIGo/w8O/W5NTzC3wVXU/AiltASCpkKPL5MmP+dXXudeKChs2aHv5ZX+cGFTWmxLT7ilpWPNjrLu7nVy23u3ycETByUj8381OZESKRESYf56p0eDoLoV6sq7N78rbaq38ZyDYRHgFNSGDRukR48ePvN69uwpU6dOlXPnzkmJEiWyrTN27FgZM2ZMtvlHjx41F3x/NLh5+eWXzYVdD6Rwphed+vXry759+4qUljZt2sjpklGSku4/786nTEckNeOcOHpCBDHujCpfrsj5ESppCRTNCz3O9NzS8yc3J0+elFBX2LJDC+jU1FRznmkAHM5sSott6QnHtNSOri0r+q2QSZsmSWJSome+Bjf1S9f31Oi4utXtJoPbDpZSUaVMeVLQciOsApwjR45I1apVfebp6/T0dDl27JhUr1492zojR440fXZcGgHWqlXLNGvFxflvz9PaDg1u/nxNH2lcp56EM+fXi09s1wwp7HV0yafrZfT0/5PYsxkSHx0rwaK1HRHiSJXoGIkMYs1aRupJ03+sKPkRKmkJlINnM0wQHRsbK/Hx8bkup++HusKWHXrh0RsKXS5cLjzFIS22pSec0/L8xc/L61telyGLh5jXWnOjtp7YKpnySw3OxN4TZVCbQUUqN8IqwFFZm1fc2ojcml1iYmLMlJUeEHkdFG5VuwY3bRo2lnCmF1KtZdALcWEvpLuTvvnlpNL8C/LFWPeNbkOwtyMQ+REqaQkETYGeMyZNfs6vcCiQi1p25Ge5cGBTWmxLTzinpVxsOU8w4+mL8+t/Ki42Llu6CprOsMqVatWqmVocb1ptFR0dLZUrVw7adgEAgPyb+8VcT0dj7XTs/VfnB+Khf2EV4HTo0EGWL1/uM2/ZsmXStm3bHPvfAACA0JJ2Nk2W7FtiRklpMFMxtqIMbDXQ/NXXOn/x3sVmubANcE6dOiXbt283kzsMXP994MABTxv4nXfe6Vlen3eTlJRk2sV37dol06ZNMx2Mhw8fHrQ0AACA/NPg5kzGLyMUu9frLjvv3yk3NblJdgzeYV4rfX/pvqUStgGODvFu3bq1mZQGLvrvJ554wrzWh/+5wY6qV6+eLF68WBITE6VVq1by9NNPy4QJE3gGDgAAYWLl/pXm2Tbje4yXJXcskSplqpj58WXjzeuXe7xs3l+xf0WRvieonYy7du3qd8jyjBkzss3r0qWLbN269TxvGQAAOB9GdhopQ9sPlYaVG5rX7oP+3H44wzoMkz4N+0ip6FJF+p6wG0UFAADCV63ytfJcxg1+ik0nYwAAgPwgwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYhwAEAANYJeoAzceJEqVevnsTGxkqbNm3k448/znXZxMREiYiIyDbt3r37gm4zAAAIbUENcObMmSNDhw6Vxx57TLZt2yZXXnml9OrVSw4cOOB3vT179sjhw4c9U4MGDS7YNgMAgNAX1ABn/Pjxcs8998i9994rTZo0kYSEBKlVq5ZMmjTJ73rx8fFSrVo1zxQVFXXBthkAAIS+6GB98dmzZ2XLli3y6KOP+szv0aOHrF+/3u+6rVu3ltOnT0vTpk3l8ccfl27duuW67JkzZ8zkOnHihPmbmZlpJn8cxzFNYI4u7+j/w5duv6anqOmIjIwMen4EKi2BUNT8CKW0BIKmwpwzmiY/51de514oKGzZoe/llf5wYVNabEtPcUxLZgHTGrQA59ixY5KRkSFVq1b1ma+vjxw5kuM61atXlylTppi+OlrwzJo1S7p372765nTu3DnHdcaOHStjxozJNv/o0aMmSPJH369fv76cLhklKen+lw11mY5IasY5cSRCIiMK9xlR5cuZvA92fgQiLYEQiPwIlbQEiuaFOWdOn5aUlJRclzt58qSEusKWHVoIp6ammgJbA+BwZlNabEtPcUzLyQKWG0ELcFx6t5dTrUlOGjVqZCZXhw4dJDk5WcaNG5drgDNy5EgZNmyYz12YNoNVqVJF4uLi/G7bwYMHZd++fRLbNUPio2MlnGkNgdZFVYmOkchc8jcvGaknTa1b7Nng5kcg0hIIgciPUElLoBw8m/HL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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Subplots can share a y axis, or not\n",
    "fig, axs = plt.subplots(1, 2, sharey=True)\n",
    "\n",
    "# For the subplot, we populate each one individually\n",
    "axs[0].hist([1,2,2,3,3,3], bins=3, edgecolor=\"black\", color = 'pink')\n",
    "axs[1].scatter([1,2,3], [3,2,1], marker = '*', color = 'green', s=120)\n",
    "\n",
    "# Individual titles get populated on the axes\n",
    "axs[0].set(xlabel=\"x\", ylabel=\"y\", title=\"histogram\")\n",
    "axs[1].set(xlabel=\"x\", title=\"scatter plot\")\n",
    "\n",
    "# Figure-wide title gets added to the figure\n",
    "fig.suptitle(\"Two subplots: histogram vs scatter\")\n",
    "\n",
    "# Example legend\n",
    "axs[1].legend(['dots'])\n",
    "\n",
    "# Add a background grid\n",
    "for ax in axs:\n",
    "    ax.grid(alpha=0.3)\n",
    "    \n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "4ed8baa8-a017-43f9-ac69-147423971c1d",
   "metadata": {},
   "source": [
    "Let's explore some other types of plots:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "75a6590f-12fb-414b-b550-31ad49759434",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A shape: (6, 8)\n",
      "A (rounded):\n",
      " [[0.9  0.17 0.11 0.3  0.49 0.22 0.4  0.39]\n",
      " [0.45 0.05 0.71 0.77 0.83 0.4  0.76 0.29]\n",
      " [0.   0.08 0.02 0.58 0.16 0.15 0.08 0.21]\n",
      " [0.78 0.09 0.07 0.4  0.93 0.13 0.51 0.32]\n",
      " [0.17 0.98 0.91 0.38 0.78 0.59 0.18 0.09]\n",
      " [0.94 0.57 0.9  0.75 0.57 0.   0.51 0.98]]\n"
     ]
    },
    {
     "data": {
      "image/png": "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dRU3AABirXxjZ3id7nmnvaSfffaZWZvklVdekW3btpkV3n/zm99YekzLe99ceuml8tZbb0nHjh1NRLd69WpzMYsXL7Z0IQAAwD82bdokL730kvlzhQoV5ODBg1KlShWZOHGi2RfvlltuKftMyeHDh81GfLot8ZVXXik//vijKdlcddVVJn3TtWvXU74IAABice8bO8PrKleuLAUFBebP9erVk6+++ir8tby8vPLJlFSsWNGkanQpWWbZAAAQn7sEX3DBBWbmbYsWLaRPnz6mlPPpp5/Kq6++ar5Wbj0lgwYNMlOCAQBA9A9Xu8PrdHZNhw4dzJ91SZCePXvK/PnzzfLzVmMESz0lOu1HpwQvW7ZM2rdvb1I4JS8UAADEroceekiuv/56M9umUqVKMmPGDNuPaSko0fJNaLrP559/7rtpTAAAlCW7fSEBH3yU7t6925RtatSoIdddd50MHDhQ2rZtW/5ByfLly209KQAAsSxBbPaUiPejEl00TSe7/PWvf5UXX3xRpk6dKmeffbbJnvTv318aNGhwyo/ph7IVAADwoNNPP11uvvlmWbFihXz77bcyZMgQee6556Rx48bllykBAADxXb4puVzI2rVr5f333zerutauXVusIFMCAIDD4mFF11A7x0033WSCkMGDB0vVqlVl0aJFZjFVK8iUAACAU3bWWWeZZtfevXvLk08+KX379jXLzdtBUAIAgMO0/GKn0TXgg0zJgw8+aPa4qVatmmOPSVACAIDD4qGn5Oabb3b8MekpAQAAnkCmBAAAh9ltVk3wQaakLBCUAADgsMB/f9k5Px4RlAAA4DAyJdbQUwIAADzB1aBk5syZ0rp1a0lNTTWjY8eO8s9//tPNSwIAwLZ4WTwtpso3uvDK5MmTw2vkP/vss3L55ZfL+vXrpWXLlm5eGgAAlgUCATPsnB+PXA1KdPW34h5++GGTPVmzZg1BCQAAccYzja5FRUWyYMECOXDggCnjAADgVzS6+jQo+fTTT00QcujQIalSpYq89tpr0qJFi6j3LSgoMCMkPz+/HK8UAICTEw8rusbk7Juzzz5bPv74Y1OyueWWW8wugxs3box63+zsbElLSwuP9PT0cr9eAAAQo0FJUlKSaXRt3769CTratGkj06ZNi3rfrKws2bt3b3hY3RoZAICypJvx2R3xyPWgpKRgMBhRoikuOTk5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",
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Here's something you'll need for the set!\n",
    "# Generate some data and then print so we can see what it is\n",
    "A = rng.random((6, 8))\n",
    "print(\"A shape:\", A.shape)\n",
    "print(\"A (rounded):\\n\", np.round(A, 2))\n",
    "\n",
    "fig, ax = plt.subplots()\n",
    "\n",
    "# imshow makes a nice heatmap\n",
    "# Ground the range so we can see from 0 to 1\n",
    "im = ax.imshow(A, aspect=\"auto\", cmap=\"Blues\", vmin=0, vmax=1)\n",
    "\n",
    "# And show the colorbar\n",
    "fig.colorbar(im, ax=ax, label=\"value\")\n",
    "\n",
    "ax.set(title=\"Single heatmap\", xlabel=\"column\", ylabel=\"row\")\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "7a917fa3-8627-49f1-9542-bbdab9d1b4cb",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAiMAAAGiCAYAAAA1LsZRAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjgsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvwVt1zgAAAAlwSFlzAAAPYQAAD2EBqD+naQAAGxpJREFUeJzt3Q1sVfX9+PFPKRSoCk5RhAkVn1GmTpgMFJ0Pw6AhM3uQxU1QMZFMRWAYhyw+EDemiU6dA2WKzkQ34nxiCRPIL05QNBNEZ4RMNxlUBxJQKYppBe4/5yzt39LCKN72C72vV3K23tNze09Prtx3v+eprFAoFAIAIJEOqV4YACAjRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgH0rRhYtWhQjR46M3r17R1lZWTzzzDP/8zkvvPBCDBw4MLp06RJHHnlk3H///Xu6vgBAqcfIp59+GieffHLcd999u7X8qlWr4oILLohhw4bF8uXL48Ybb4zx48fHk08+uSfrCwC0M2Vf5kZ52cjI008/HRdddNFOl7nhhhti7ty5sXLlyoZ548aNizfeeCNefvnlPX1pAKCd6NjaL5AFx/DhwxvNO//88+Ohhx6Kzz//PDp16tTkObW1tflUb/v27fHhhx/GwQcfnAcQALD3y8Y7Nm/enB/a0aFDh3Qxsm7duujZs2ejednjrVu3xoYNG6JXr15NnjN9+vS49dZbW3vVAIA2UF1dHYcffni6GMnsOJpRv2doZ6McU6ZMiUmTJjU83rRpU/Tt2zf/Zbp169bKawsApWFL3dY47Rf/l3/9t6nnRmVFcbOgpqYm+vTpEwcccMAul2v1GDnssMPy0ZEvWr9+fXTs2DHf7dKczp0759OOshARIwBQHB3rtkaHzpX519nna7FjpN7/OsSi1a8zMmTIkFi4cGGjeQsWLIhBgwY1e7wIAFBaWhwjn3zySbz++uv5VH/qbvb1mjVrGnaxjB49utGZM6tXr853u2Rn1MyePTs/eHXy5MnF/D0AgH1Ui8djli5dGmeffXbD4/pjO8aMGROPPPJIrF27tiFMMv369Yt58+bFxIkT47e//W1+RO29994b3/ve94r1OwAApRQj3/rWtxoOQG1OFiQ7Ouuss+K1115r+doBAO2ee9MAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApDqmfXkAaF6hUIjPPt9m87SiLXV7x/YVIwDslSHy/ftfjmWrP0q9KrQBu2kA2OtkIyJCpO0MqvpKdO1UHqkYGQFgr7b05+dFZUW6D8pS0LVTeZSVlSV7fTECwF4tC5HKCh9X7ZndNABAUmIEAEhKjAAASYkRACApMQIAJCVGAIB9L0ZmzJgR/fr1iy5dusTAgQNj8eLFu1z+sccei5NPPjkqKyujV69ecfnll8fGjRv3dJ0BgFKOkTlz5sSECRNi6tSpsXz58hg2bFiMGDEi1qxZ0+zyL774YowePTrGjh0bb731VjzxxBPx6quvxpVXXlmM9QcASi1G7rrrrjwsspjo379/3H333dGnT5+YOXNms8u/8sorccQRR8T48ePz0ZQzzjgjrrrqqli6dGkx1h8AKKUYqauri2XLlsXw4cMbzc8eL1mypNnnDB06NN57772YN29efuOjDz74IP70pz/FhRdeuNPXqa2tjZqamkYTANA+tShGNmzYENu2bYuePXs2mp89Xrdu3U5jJDtmZNSoUVFRURGHHXZYHHjggfGb3/xmp68zffr06N69e8OUjbwAAO3THh3AuuPNdLIRj53dYGfFihX5LpqbbropH1V57rnnYtWqVTFu3Lid/vwpU6bEpk2bGqbq6uo9WU0AYB/QojsP9ejRI8rLy5uMgqxfv77JaMkXRzlOP/30uP766/PHJ510Uuy33375ga+33XZbfnbNjjp37pxPAED716KRkWw3S3Yq78KFCxvNzx5nu2Oas2XLlujQofHLZEFTP6ICAJS2Fu+mmTRpUjz44IMxe/bsWLlyZUycODE/rbd+t0u2iyU7lbfeyJEj46mnnsrPtnn33XfjpZdeynfbnHbaadG7d+/i/jYAQPveTZPJDkTNLlg2bdq0WLt2bQwYMCA/U6aqqir/fjbvi9ccueyyy2Lz5s1x3333xU9/+tP84NVzzjknbr/99uL+JgDAPqmssA/sK8lO7c3OqskOZu3WrVvq1QGglW2p2xon3DQ//3rFtPOjsqLFfzuzD31+uzcNAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkOqZ9eYB9T6FQiM8+35Z6Ndq1LXW2bykRIwAtDJHv3/9yLFv9ke0GRWI3DUALZCMiQqTtDKr6SnTtVN6Gr0gKRkYA9tDSn58XlRU+KFtTFiJlZWWt+hqkJ0YA9lAWIpUV/hmFL8tuGgAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIA7HsxMmPGjOjXr1906dIlBg4cGIsXL97l8rW1tTF16tSoqqqKzp07x1FHHRWzZ8/e03UGANqRji19wpw5c2LChAl5kJx++unxwAMPxIgRI2LFihXRt2/fZp9z8cUXxwcffBAPPfRQHH300bF+/frYunVrMdYfACi1GLnrrrti7NixceWVV+aP77777pg/f37MnDkzpk+f3mT55557Ll544YV4991346CDDsrnHXHEEcVYdwCg1HbT1NXVxbJly2L48OGN5mePlyxZ0uxz5s6dG4MGDYo77rgjvvrVr8axxx4bkydPjs8++2yXu3VqamoaTQBA+9SikZENGzbEtm3bomfPno3mZ4/XrVvX7HOyEZEXX3wxP77k6aefzn/GT37yk/jwww93etxINsJy6623tmTVAIBSOoC1rKys0eNCodBkXr3t27fn33vsscfitNNOiwsuuCDf1fPII4/sdHRkypQpsWnTpoapurp6T1YTAGhvIyM9evSI8vLyJqMg2QGpO46W1OvVq1e+e6Z79+4N8/r3758HzHvvvRfHHHNMk+dkZ9xkEwDQ/rVoZKSioiI/lXfhwoWN5mePhw4d2uxzsjNu/vOf/8Qnn3zSMO/tt9+ODh06xOGHH76n6w0AlOpumkmTJsWDDz6YH++xcuXKmDhxYqxZsybGjRvXsItl9OjRDctfcsklcfDBB8fll1+en/67aNGiuP766+OKK66Irl27Fve3AQDa/6m9o0aNio0bN8a0adNi7dq1MWDAgJg3b15+QbNMNi+Lk3r7779/PnJy7bXX5mfVZGGSXXfktttuK+5vAgDsk8oK2cEbe7ns1N7smJPsYNZu3bqlXh2ghG2p2xon3DQ//3rFtPOjsqLFf9NByajZzc9v96YBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEiqY9qXB4qpUCjEZ59vs1Fb0ZY62xeKTYxAOwqR79//cixb/VHqVQFoEbtpoJ3IRkSESNsZVPWV6NqpvA1fEdovIyPQDi39+XlRWeGDsjVlIVJWVtaqrwGlQoxAO5SFSGWF/7yBfYPdNABAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAsO/FyIwZM6Jfv37RpUuXGDhwYCxevHi3nvfSSy9Fx44d45RTTtmTlwUA2qEWx8icOXNiwoQJMXXq1Fi+fHkMGzYsRowYEWvWrNnl8zZt2hSjR4+Oc88998usLwBQ6jFy1113xdixY+PKK6+M/v37x9133x19+vSJmTNn7vJ5V111VVxyySUxZMiQ//katbW1UVNT02gCANqnFsVIXV1dLFu2LIYPH95ofvZ4yZIlO33eww8/HP/617/i5ptv3q3XmT59enTv3r1hymIHAGifWhQjGzZsiG3btkXPnj0bzc8er1u3rtnnvPPOO/Gzn/0sHnvssfx4kd0xZcqUfLdO/VRdXd2S1QQA9iG7Vwc7KCsra/S4UCg0mZfJwiXbNXPrrbfGscceu9s/v3PnzvkEALR/LYqRHj16RHl5eZNRkPXr1zcZLcls3rw5li5dmh/oes011+Tztm/fnsdLNkqyYMGCOOecc77s7wAAlMpumoqKivxU3oULFzaanz0eOnRok+W7desWb775Zrz++usN07hx4+K4447Lvx48ePCX/w0AgNLaTTNp0qS49NJLY9CgQfmZMbNmzcpP680io/54j/fffz8effTR6NChQwwYMKDR8w899ND8+iQ7zgcASlOLY2TUqFGxcePGmDZtWqxduzaPinnz5kVVVVX+/Wze/7rmCABAvbJCdgDHXi67zkh2im92Zk226wdoakvd1jjhpvn51yumnR+VFXt0fDpAm39+uzcNAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJNUx7ctTKgqFQnz2+bbUq9GubamzfYF9kxihTULk+/e/HMtWf2RrA9CE3TS0umxERIi0nUFVX4muncrb8BUBvhwjI7SppT8/LyorfFC2pixEysrKWvU1AIpJjNCmshCprPC2A+D/s5sGAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAYN+LkRkzZkS/fv2iS5cuMXDgwFi8ePFOl33qqafi29/+dhxyyCHRrVu3GDJkSMyfP//LrDMAUMoxMmfOnJgwYUJMnTo1li9fHsOGDYsRI0bEmjVrml1+0aJFeYzMmzcvli1bFmeffXaMHDkyfy4AQFmhUCi0ZDMMHjw4Tj311Jg5c2bDvP79+8dFF10U06dP362fceKJJ8aoUaPipptuavb7tbW1+VSvpqYm+vTpE5s2bcpHV9i3bKnbGifc9N/RsBXTzo/Kio6pVwmANpB9fnfv3v1/fn63aGSkrq4uH90YPnx4o/nZ4yVLluzWz9i+fXts3rw5DjrooJ0uk0VNtvL1UxYiAED71KIY2bBhQ2zbti169uzZaH72eN26dbv1M+6888749NNP4+KLL97pMlOmTMkrqn6qrq5uyWoCAPuQPRovLysra/Q429Oz47zm/OEPf4hbbrklnn322Tj00EN3ulznzp3zCQBo/1oUIz169Ijy8vImoyDr169vMlrS3IGvY8eOjSeeeCLOO++8PVtbAKC0d9NUVFTkp/IuXLiw0fzs8dChQ3c5InLZZZfF448/HhdeeOGery0A0O60eDfNpEmT4tJLL41Bgwbl1wyZNWtWflrvuHHjGo73eP/99+PRRx9tCJHRo0fHPffcE9/85jcbRlW6du2aH5wKAJS2FsdIdkruxo0bY9q0abF27doYMGBAfg2Rqqqq/PvZvC9ec+SBBx6IrVu3xtVXX51P9caMGROPPPJIsX4PAKBUrjOyN5+nzN7JdUYASlNNa1xnBACg2MQIAJCUGAEAkirpm4Rkh8t89vm21KvR7m2ps40B2LmOpRwi37//5Vi2+qPUqwIAJa1kd9NkIyJCpG0NqvpKdO1U3savCsDermRHRr5o6c/Pi8oKH5KtLQuR3bmHEQClRYxE5CFSWWFTAEAKJbubBgDYO4gRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAQFJiBABISowAAEmJEQAgKTECACQlRgCApMQIAJCUGAEAkhIjAEBSYgQASEqMAABJiREAICkxAgAkJUYAgKTECACQlBgBAJISIwBAUmIEAEhKjAAASYkRACApMQIAJCVGAICkxAgAkJQYAQCSEiMAwL4XIzNmzIh+/fpFly5dYuDAgbF48eJdLv/CCy/ky2XLH3nkkXH//ffv6foCAKUeI3PmzIkJEybE1KlTY/ny5TFs2LAYMWJErFmzptnlV61aFRdccEG+XLb8jTfeGOPHj48nn3yyGOsPAOzjygqFQqElTxg8eHCceuqpMXPmzIZ5/fv3j4suuiimT5/eZPkbbrgh5s6dGytXrmyYN27cuHjjjTfi5ZdfbvY1amtr86nepk2bom/fvlFdXR3dunWLYthStzVO+8X/5V//beq5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",
      "text/plain": [
       "<Figure size 640x480 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Another thing you'll need for the set!!\n",
    "fig, ax = plt.subplots()\n",
    "# The ECDF function needs a 1d array, so we use np.flatten()\n",
    "ax.ecdf(my_md_array.flatten())\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6a72e7d3-6c61-4ba9-b81a-f58260dbeee5",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-info\">\n",
    "    <b>Matplotlib exercise:</b> Make a figure with 2 subplots:\n",
    "    a) a normal heatmap\n",
    "    b) a shuffled heatmap\n",
    "</div>"
   ]
  }
 ],
 "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.13.1"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
