{ "cells": [ { "cell_type": "markdown", "id": "thousand-analysis", "metadata": {}, "source": [ "# Plotting 2D Data - Contour Plots\n", "\n", "We might sometimes want to represent higher dimension data. We will be creating something called a [contour plot](https://www.khanacademy.org/math/multivariable-calculus/thinking-about-multivariable-function/ways-to-represent-multivariable-functions/a/contour-maps). A contour plot can be used when you have data which has three dimensions (`x`, `y` and `z`). A type of contour plot you may be familar with depicts land elevation. Each spot on a map will have an `x` value, a `y` value, and a `z` value (the elevation). You can represent this on a two dimensional plot where the z-value is indicated by a contour line or different colors.\n", "\n", "This section will discuss creating contour plots using `matplotlib`. We will use the hydrogen atom orbitals again. Instead of considering the `s` orbitals with respect to `r` (distance from the nucleus), we are going to use the values of the `p` wavefunctions on the `xy` plane. \n", "\n", "The data file we will use is called `px_2D.csv`" ] }, { "cell_type": "markdown", "id": "bottom-accounting", "metadata": {}, "source": [ "Reading in the data\n", "-----------------------\n", "\n", "This file is also a csv, so we will use pandas to read it in." ] }, { "cell_type": "code", "execution_count": 1, "id": "expired-amsterdam", "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "\n", "px_orbital = pd.read_csv(\"px_2D.csv\")" ] }, { "cell_type": "code", "execution_count": 2, "id": "antique-galaxy", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0.000000000000000000e+00-2.000000000000000000e+01-1.900000000000000000e+01-1.800000000000000000e+01-1.700000000000000000e+01-1.600000000000000000e+01-1.500000000000000000e+01-1.400000000000000000e+01-1.300000000000000000e+01-1.200000000000000000e+01...1.100000000000000000e+011.200000000000000000e+011.300000000000000000e+011.400000000000000000e+011.500000000000000000e+011.600000000000000000e+011.700000000000000000e+011.800000000000000000e+011.900000000000000000e+012.000000000000000000e+01
0-20.00.0003530.0004100.0004720.0005380.0006060.0006750.0007420.0008050.000861...-0.000905-0.000861-0.000805-0.000742-0.000675-0.000606-0.000538-0.000472-0.000410-0.000353
1-19.00.0004320.0005030.0005820.0006650.0007530.0008420.0009300.0010130.001087...-0.001147-0.001087-0.001013-0.000930-0.000842-0.000753-0.000665-0.000582-0.000503-0.000432
2-18.00.0005240.0006140.0007120.0008180.0009300.0010450.0011580.0012670.001364...-0.001445-0.001364-0.001267-0.001158-0.001045-0.000930-0.000818-0.000712-0.000614-0.000524
3-17.00.0006320.0007440.0008660.0010000.0011410.0012870.0014330.0015730.001701...-0.001809-0.001701-0.001573-0.001433-0.001287-0.001141-0.001000-0.000866-0.000744-0.000632
4-16.00.0007570.0008940.0010460.0012120.0013890.0015740.0017600.0019400.002106...-0.002247-0.002106-0.001940-0.001760-0.001574-0.001389-0.001212-0.001046-0.000894-0.000757
\n", "

5 rows × 42 columns

\n", "
" ], "text/plain": [ " 0.000000000000000000e+00 -2.000000000000000000e+01 \\\n", "0 -20.0 0.000353 \n", "1 -19.0 0.000432 \n", "2 -18.0 0.000524 \n", "3 -17.0 0.000632 \n", "4 -16.0 0.000757 \n", "\n", " -1.900000000000000000e+01 -1.800000000000000000e+01 \\\n", "0 0.000410 0.000472 \n", "1 0.000503 0.000582 \n", "2 0.000614 0.000712 \n", "3 0.000744 0.000866 \n", "4 0.000894 0.001046 \n", "\n", " -1.700000000000000000e+01 -1.600000000000000000e+01 \\\n", "0 0.000538 0.000606 \n", "1 0.000665 0.000753 \n", "2 0.000818 0.000930 \n", "3 0.001000 0.001141 \n", "4 0.001212 0.001389 \n", "\n", " -1.500000000000000000e+01 -1.400000000000000000e+01 \\\n", "0 0.000675 0.000742 \n", "1 0.000842 0.000930 \n", "2 0.001045 0.001158 \n", "3 0.001287 0.001433 \n", "4 0.001574 0.001760 \n", "\n", " -1.300000000000000000e+01 -1.200000000000000000e+01 ... \\\n", "0 0.000805 0.000861 ... \n", "1 0.001013 0.001087 ... \n", "2 0.001267 0.001364 ... \n", "3 0.001573 0.001701 ... \n", "4 0.001940 0.002106 ... \n", "\n", " 1.100000000000000000e+01 1.200000000000000000e+01 \\\n", "0 -0.000905 -0.000861 \n", "1 -0.001147 -0.001087 \n", "2 -0.001445 -0.001364 \n", "3 -0.001809 -0.001701 \n", "4 -0.002247 -0.002106 \n", "\n", " 1.300000000000000000e+01 1.400000000000000000e+01 \\\n", "0 -0.000805 -0.000742 \n", "1 -0.001013 -0.000930 \n", "2 -0.001267 -0.001158 \n", "3 -0.001573 -0.001433 \n", "4 -0.001940 -0.001760 \n", "\n", " 1.500000000000000000e+01 1.600000000000000000e+01 \\\n", "0 -0.000675 -0.000606 \n", "1 -0.000842 -0.000753 \n", "2 -0.001045 -0.000930 \n", "3 -0.001287 -0.001141 \n", "4 -0.001574 -0.001389 \n", "\n", " 1.700000000000000000e+01 1.800000000000000000e+01 \\\n", "0 -0.000538 -0.000472 \n", "1 -0.000665 -0.000582 \n", "2 -0.000818 -0.000712 \n", "3 -0.001000 -0.000866 \n", "4 -0.001212 -0.001046 \n", "\n", " 1.900000000000000000e+01 2.000000000000000000e+01 \n", "0 -0.000410 -0.000353 \n", "1 -0.000503 -0.000432 \n", "2 -0.000614 -0.000524 \n", "3 -0.000744 -0.000632 \n", "4 -0.000894 -0.000757 \n", "\n", "[5 rows x 42 columns]" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "px_orbital.head()" ] }, { "cell_type": "markdown", "id": "sought-communications", "metadata": {}, "source": [ "Notice that this time, our function `read_csv` has not behaved exactly as we would want. We have numbers on the headers. The file we are reading in this time does not have headers, so we must tell `pandas` that there are no headers when we read the data file in." ] }, { "cell_type": "code", "execution_count": 3, "id": "toxic-disclosure", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
0123456789...32333435363738394041
00.0-20.000000-19.000000-18.000000-17.000000-16.000000-15.000000-14.000000-13.000000-12.000000...11.00000012.00000013.00000014.00000015.00000016.00000017.00000018.00000019.00000020.000000
1-20.00.0003530.0004100.0004720.0005380.0006060.0006750.0007420.0008050.000861...-0.000905-0.000861-0.000805-0.000742-0.000675-0.000606-0.000538-0.000472-0.000410-0.000353
2-19.00.0004320.0005030.0005820.0006650.0007530.0008420.0009300.0010130.001087...-0.001147-0.001087-0.001013-0.000930-0.000842-0.000753-0.000665-0.000582-0.000503-0.000432
3-18.00.0005240.0006140.0007120.0008180.0009300.0010450.0011580.0012670.001364...-0.001445-0.001364-0.001267-0.001158-0.001045-0.000930-0.000818-0.000712-0.000614-0.000524
4-17.00.0006320.0007440.0008660.0010000.0011410.0012870.0014330.0015730.001701...-0.001809-0.001701-0.001573-0.001433-0.001287-0.001141-0.001000-0.000866-0.000744-0.000632
\n", "

5 rows × 42 columns

\n", "
" ], "text/plain": [ " 0 1 2 3 4 5 6 \\\n", "0 0.0 -20.000000 -19.000000 -18.000000 -17.000000 -16.000000 -15.000000 \n", "1 -20.0 0.000353 0.000410 0.000472 0.000538 0.000606 0.000675 \n", "2 -19.0 0.000432 0.000503 0.000582 0.000665 0.000753 0.000842 \n", "3 -18.0 0.000524 0.000614 0.000712 0.000818 0.000930 0.001045 \n", "4 -17.0 0.000632 0.000744 0.000866 0.001000 0.001141 0.001287 \n", "\n", " 7 8 9 ... 32 33 34 \\\n", "0 -14.000000 -13.000000 -12.000000 ... 11.000000 12.000000 13.000000 \n", "1 0.000742 0.000805 0.000861 ... -0.000905 -0.000861 -0.000805 \n", "2 0.000930 0.001013 0.001087 ... -0.001147 -0.001087 -0.001013 \n", "3 0.001158 0.001267 0.001364 ... -0.001445 -0.001364 -0.001267 \n", "4 0.001433 0.001573 0.001701 ... -0.001809 -0.001701 -0.001573 \n", "\n", " 35 36 37 38 39 40 41 \n", "0 14.000000 15.000000 16.000000 17.000000 18.000000 19.000000 20.000000 \n", "1 -0.000742 -0.000675 -0.000606 -0.000538 -0.000472 -0.000410 -0.000353 \n", "2 -0.000930 -0.000842 -0.000753 -0.000665 -0.000582 -0.000503 -0.000432 \n", "3 -0.001158 -0.001045 -0.000930 -0.000818 -0.000712 -0.000614 -0.000524 \n", "4 -0.001433 -0.001287 -0.001141 -0.001000 -0.000866 -0.000744 -0.000632 \n", "\n", "[5 rows x 42 columns]" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "import pandas as pd\n", "\n", "px_orbital = pd.read_csv(\"px_2D.csv\", header=None)\n", "px_orbital.head()" ] }, { "cell_type": "markdown", "id": "cubic-hopkins", "metadata": {}, "source": [ "We are going to do some additional slicing on this data in order to plot it. You would not automatically know this from looking at the data file, but it is structured in a specific way. The first row represents `x` values, and the first column represents `y` values. For example, at the point `(-20, -20)`, the wavefunction has the value `0.000353`. We will pull out the `x` values, the `y` values and the data (or the `z values` as separate variables.\n", "\n", "We will have to use the slicing syntax with the `iloc` function which was discussed in the first section on pandas dataframes." ] }, { "cell_type": "code", "execution_count": 4, "id": "governmental-montreal", "metadata": {}, "outputs": [], "source": [ "x = px_orbital.iloc[0, 1:]\n", "y = px_orbital.iloc[1:, 0]\n", "px_values = px_orbital.iloc[1:, 1:]" ] }, { "cell_type": "code", "execution_count": 5, "id": "fourth-archives", "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
12345678910...32333435363738394041
10.0003530.0004100.0004720.0005380.0006060.0006750.0007420.0008050.0008610.000905...-0.000905-0.000861-0.000805-0.000742-0.000675-0.000606-0.000538-0.000472-0.000410-0.000353
20.0004320.0005030.0005820.0006650.0007530.0008420.0009300.0010130.0010870.001147...-0.001147-0.001087-0.001013-0.000930-0.000842-0.000753-0.000665-0.000582-0.000503-0.000432
30.0005240.0006140.0007120.0008180.0009300.0010450.0011580.0012670.0013640.001445...-0.001445-0.001364-0.001267-0.001158-0.001045-0.000930-0.000818-0.000712-0.000614-0.000524
40.0006320.0007440.0008660.0010000.0011410.0012870.0014330.0015730.0017010.001809...-0.001809-0.001701-0.001573-0.001433-0.001287-0.001141-0.001000-0.000866-0.000744-0.000632
50.0007570.0008940.0010460.0012120.0013890.0015740.0017600.0019400.0021060.002247...-0.002247-0.002106-0.001940-0.001760-0.001574-0.001389-0.001212-0.001046-0.000894-0.000757
\n", "

5 rows × 41 columns

\n", "
" ], "text/plain": [ " 1 2 3 4 5 6 7 \\\n", "1 0.000353 0.000410 0.000472 0.000538 0.000606 0.000675 0.000742 \n", "2 0.000432 0.000503 0.000582 0.000665 0.000753 0.000842 0.000930 \n", "3 0.000524 0.000614 0.000712 0.000818 0.000930 0.001045 0.001158 \n", "4 0.000632 0.000744 0.000866 0.001000 0.001141 0.001287 0.001433 \n", "5 0.000757 0.000894 0.001046 0.001212 0.001389 0.001574 0.001760 \n", "\n", " 8 9 10 ... 32 33 34 35 \\\n", "1 0.000805 0.000861 0.000905 ... -0.000905 -0.000861 -0.000805 -0.000742 \n", "2 0.001013 0.001087 0.001147 ... -0.001147 -0.001087 -0.001013 -0.000930 \n", "3 0.001267 0.001364 0.001445 ... -0.001445 -0.001364 -0.001267 -0.001158 \n", "4 0.001573 0.001701 0.001809 ... -0.001809 -0.001701 -0.001573 -0.001433 \n", "5 0.001940 0.002106 0.002247 ... -0.002247 -0.002106 -0.001940 -0.001760 \n", "\n", " 36 37 38 39 40 41 \n", "1 -0.000675 -0.000606 -0.000538 -0.000472 -0.000410 -0.000353 \n", "2 -0.000842 -0.000753 -0.000665 -0.000582 -0.000503 -0.000432 \n", "3 -0.001045 -0.000930 -0.000818 -0.000712 -0.000614 -0.000524 \n", "4 -0.001287 -0.001141 -0.001000 -0.000866 -0.000744 -0.000632 \n", "5 -0.001574 -0.001389 -0.001212 -0.001046 -0.000894 -0.000757 \n", "\n", "[5 rows x 41 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "px_values.head()" ] }, { "cell_type": "markdown", "id": "union-queen", "metadata": {}, "source": [ "Creating a contour plot\n", "----------------------------\n", "\n", "Now that we have our data sliced, we will use the [contour](https://matplotlib.org/stable/api/_as_gen/matplotlib.pyplot.contour.html) function to create a contour plot. For the contour function, you must give a list of x values, a list of y values, and an array containing z values. Fortunately, our data is already in this format.\n", "\n", "We also add the `ax.set_aspect('equal')` command to keep the size of the x-axis and the y-axis the same." ] }, { "cell_type": "code", "execution_count": 6, "id": "labeled-prayer", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import matplotlib as mpl\n", "\n", "mpl.rcParams['font.size'] = 14\n", "mpl.rcParams['legend.fontsize'] = 'large'\n", "mpl.rcParams['figure.titlesize'] = 'medium'\n" ] }, { "cell_type": "code", "execution_count": 7, "id": "economic-proposition", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "ax.contour(x, y, px_values)\n", "ax.set_aspect('equal')" ] }, { "cell_type": "markdown", "id": "particular-tennis", "metadata": {}, "source": [ "The `contour` command in matplotlib produces a plot where the contour levels are not filled. We might want a filled contour plot instead, so we can use the `contourf` (`f` for `filled`) function instead.\n", "\n", "We might also want a color bar to tell us the scale of the colors. The `contour` and `contourf` functions return a variable we can use for a colorbar. You should capture the output of the `contour` or `contourf` command and add a color bar to the figure using `fig.colorbar`." ] }, { "cell_type": "code", "execution_count": 8, "id": "bibliographic-worth", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "CS = ax.contourf(x, y, px_values)\n", "ax.set_aspect('equal')\n", "\n", "fig.colorbar(CS)" ] }, { "cell_type": "markdown", "id": "electoral-israel", "metadata": {}, "source": [ "Picking a Color Map\n", "------------------------\n", "\n", "When creating a contour plot, you can also specify the color map you would like to use. You can see a list of built-in color maps for matplotlib [here](https://matplotlib.org/stable/tutorials/colors/colormaps.html). \n", "\n", "There are different classes of colormaps you might want to choose depending on the type of data you are looking at. Matplotlib gives the following guidance (see, e.g., [Moreland](http://www.kennethmoreland.com/color-maps/ColorMapsExpanded.pdf)):\n", "\n", "1. **Sequential**: change in lightness and often saturation of color incrementally, often using a single hue; should be used for representing information that has ordering.\n", "1. **Diverging**: change in lightness and possibly saturation of two different colors that meet in the middle at an unsaturated color; should be used when the information being plotted has a critical middle value, such as topography or when the data deviates around zero.\n", "1. **Cyclic**: change in lightness of two different colors that meet in the middle and beginning/end at an unsaturated color; should be used for values that wrap around at the endpoints, such as phase angle, wind direction, or time of day.\n", "1. **Qualitative**: often are miscellaneous colors; should be used to represent information which does not have ordering or relationships.\n", "\n", "\n", "This data has both positive and negative values, which zero representing a node for the wavefunction. Take a moment and think of which class of color maps would be best for this type of data.\n", "\n", "After some consideration, you should arrive at the conclusion that we should use a **diverging** colormap to best represent this data. We will use the colormap \"RdBu\"." ] }, { "cell_type": "code", "execution_count": 9, "id": "modern-anxiety", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "CS = ax.contourf(x, y, px_values, cmap=\"RdBu\")\n", "ax.set_aspect('equal')\n", "\n", "fig.colorbar(CS)" ] }, { "cell_type": "markdown", "id": "nearby-heater", "metadata": {}, "source": [ "Number of Contour Colors - Levels\n", "-----------------------------------------\n", "\n", "Our plot is only showing six different colors by default, but we might be interested in finger-grain detail of our plot. We will want to specify how many colors, or how many \"levels\" we want to use in our colormap.\n", "\n", "Unfortunately, we can't just say how many levels we want. We have to give numeric values where we would like levels to occur. For example, if our data ranges from -10 to 10 and we want 20 evenly spaced levels (or, a color for every integer), we would need to give matplotlib a list of all the integers to use as levels.\n", "\n", "For our data, we would likely want to start at the minimum value and end at the maximum value. We can use a function in numpy called `linspace` to generate evenly spaced numbers between the minimum and maximum.\n", "\n", "First, we import numpy and calculate the minimum and maximum of our z values." ] }, { "cell_type": "code", "execution_count": 10, "id": "virgin-payday", "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "\n", "pmin = px_values.min().min()\n", "pmax = px_values.max().max()" ] }, { "cell_type": "markdown", "id": "prescription-partition", "metadata": {}, "source": [ "Next, we use the `linspace` function in numpy to generate a list of evenly spaced numbers between the minimum and maximum. The following command will create 30 evenly spaced numbers." ] }, { "cell_type": "code", "execution_count": 11, "id": "comparable-penny", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "array([-0.04045902, -0.03766874, -0.03487847, -0.03208819, -0.02929791,\n", " -0.02650763, -0.02371736, -0.02092708, -0.0181368 , -0.01534653,\n", " -0.01255625, -0.00976597, -0.00697569, -0.00418542, -0.00139514,\n", " 0.00139514, 0.00418542, 0.00697569, 0.00976597, 0.01255625,\n", " 0.01534653, 0.0181368 , 0.02092708, 0.02371736, 0.02650763,\n", " 0.02929791, 0.03208819, 0.03487847, 0.03766874, 0.04045902])" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "levels = np.linspace(pmin, pmax, 30)\n", "\n", "levels" ] }, { "cell_type": "markdown", "id": "actual-slope", "metadata": {}, "source": [ "We pass this list of numbers to the `levels` argument in the `contourf` function. Now, we will use 30 colors on our plot. \n", "\n", "The last consideration for this plot is the numbers in our color bar. We might want fewer labels and fewer decimal places. To specify our number of decimal places, we will use a `format` argument in the `colorbar` command. We can tell `matplotlib` where to label the color bar by giving a list of values. We will generate 6 evenly spaced values again using `linspace` and use those as tick marks." ] }, { "cell_type": "code", "execution_count": 12, "id": "close-reason", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots()\n", "\n", "ticks = np.linspace(pmin, pmax, 6)\n", "\n", "CS = ax.contourf(x, y, px_values, cmap=\"RdBu\", levels=levels)\n", "ax.set_aspect('equal')\n", "ax.set_xlabel('x')\n", "ax.set_ylabel('y')\n", "\n", "fig.colorbar(CS, format=\"%.3f\", ticks=ticks)" ] }, { "cell_type": "code", "execution_count": null, "id": "stone-ethics", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "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.6" } }, "nbformat": 4, "nbformat_minor": 5 }