{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Welcome to the Python Plotting Tutorial for Com520!\n", "=============================\n", "\n", "This is intended as a self-guided exercise to help you explore python plotting. Please follow the document, follow the links and read the documentation. I'll be circulating to help you if you have questions." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "# This section imports some important libraries that we'll need.\n", "# the most important is the second line. After you run this, \"plt\" will be\n", "# the plotting library in python.\n", "\n", "import numpy\n", "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "A super simple chart\n", "-----------------------\n", "\n", "The simplest possible plot is a line chart. See the example below. Answer the following questions:\n", "* What variable holds the data?\n", "* We only defined one data series. Is it on the y or x axis?\n", "* What do the functions `ylabel`, `xlabel`, and `title` do? Remove them to test your idea." ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "my_data = [1,2.4,-1.3,4]\n", "\n", "plt.plot(my_data)\n", "plt.ylabel(\"yi\")\n", "plt.xlabel(\"hi\")\n", "plt.title(\"A plot!\")\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "** Try This**\n", "\n", "Using the documentation for `matplotlib.pyplot` found [here](http://matplotlib.org/users/pyplot_tutorial.html) make a plot for the following data set. In this case, you want to plot both x and y values." ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [], "source": [ "height = [68, 66, 75, 71, 67, 65, 67, 75, 72, 74, 72, 75, 69, 70, 65, 64, 68, 73, 70, 76, 64, 64, 66, 63, 68, 62, 72, 74, 76, 69, 65, 65, 64, 66, 64, 72, 74]\n", "shoe_size = [12 ,9 ,12 ,11 ,12 ,8.5 ,9 ,13 ,11 ,12 ,12 ,12 ,10 ,11 ,10 ,8 ,9 ,11 ,8 ,12 ,8 ,9 ,11 ,10 ,9 ,9 ,11 ,11 ,12 ,10 ,8 ,7 ,9 ,10 ,13 ,12 ,11]\n", "\n", "# put your code here\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "*Improving the plot*\n", "\n", "When I made the plot above, it was a very jumbled line chart, which didn't look very good. Using the [tutorial](http://matplotlib.org/users/pyplot_tutorial.html) figure out how to plot the points as dots rather than as a line chart." ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# put your new plot here" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you look carefully at the data, you'll find cases where the same exact point shows up twice or more. One trick is to use *alpha* or the transparency of a dot to handle overlapping data. Using the argument `alpha=0.3` in the plot above to make each particular dot slightly transparent.\n", "\n" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "# put your code here. Make sure you include axis labels and a title!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Challenge**\n", "\n", "Last week, we processed the congressional district data to produce a data set with the percent of the working population in each industry compared to the mean and median salary in that district. You opened that data in Excel to produce a plot.\n", "\n", "Recreate a plot of percent of the district in engineering and the mean salary for that district. Make sure to label your axes.\n", "\n", "(Hint) remember: all of the python you have learned will work in the notebook. You can still use `open` for instance.\n" ] }, { "cell_type": "code", "execution_count": 31, "metadata": { "collapsed": true }, "outputs": [], "source": [ "# put your code here." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Bar charts\n", "----------\n", "\n", "The line charts above are great for cardinal data, but python can do many other kinds of plots. Here, we'll make a bar chart. There are a few differences:\n", "\n", "* First of all, we still need an x and a y variable. I made a fake set of data for the x axis using `range` and `len`. What are the values in fake_x_data?\n", "* Play with the width variable to see what it does to the plot.\n", "* Note that we use `xticks` to label our groupings." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "month = [\"jan\", \"feb\", \"mar\", 'apr', 'may', 'june', 'july', 'aug', 'sept', 'oct', 'nov', 'dec']\n", "high = [45, 48, 52, 58, 64, 69, 72, 73, 67, 59, 51, 47]\n", "low = [36, 37, 39, 43, 47, 52, 54, 55, 52, 47, 41, 38]\n", "fake_x_data = range(len(month))\n", "width = .8\n", "plt.bar(fake_x_data, high, width)\n", "plt.xticks(fake_x_data, month)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Try it**\n", "\n", "Add another bar to the same chart for the monthly low temperature. Make sure you label your axes!" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Styles\n", "-------\n", "\n", "Now that we've created some simple charts in python, let's see how to make them beautiful!\n", "\n", "Matplotlib comes with many pre-built style packages that can be used to make your plots automatically look professional. Try the samples below for a taste. \n", "\n", "The full set can be found by running the command below:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['bmh',\n", " 'classic',\n", " 'dark_background',\n", " 'fast',\n", " 'fivethirtyeight',\n", " 'ggplot',\n", " 'grayscale',\n", " 'seaborn-bright',\n", " 'seaborn-colorblind',\n", " 'seaborn-dark-palette',\n", " 'seaborn-dark',\n", " 'seaborn-darkgrid',\n", " 'seaborn-deep',\n", " 'seaborn-muted',\n", " 'seaborn-notebook',\n", " 'seaborn-paper',\n", " 'seaborn-pastel',\n", " 'seaborn-poster',\n", " 'seaborn-talk',\n", " 'seaborn-ticks',\n", " 'seaborn-white',\n", " 'seaborn-whitegrid',\n", " 'seaborn',\n", " 'Solarize_Light2',\n", " 'tableau-colorblind10',\n", " '_classic_test']" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "list(plt.style.available)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use a style like this:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "plt.style.use(\"ggplot\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Try it!**\n", "\n", "Set a context like above and rerun any of the plots in your document." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Histograms\n", "----------\n", "\n", "Pyplot includes excellent support for histograms. A histogram uses the *range* of your data on the x-axis. It divides that range in to buckets (usually with equal widths) and counts the number of values that fall into each bucket. Look at the example below:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAW4AAAD8CAYAAABXe05zAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDMuMC4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvnQurowAADlNJREFUeJzt3V9oUwf/x/FPmuiiFas2WyVxHetURgUpuml1Ck7jHE7cBqNgUVBhm5sgg+EsXtiLTcjUogiVwsPQq114s/HIIwxyJejFs9mJnQ7BUfaHTkta/+Fay0nyu9jvKXseO8/pyZ+Tb/p+XS16cvL9BvfmeJpgKJ/P5wUAMKMm6AEAAJNDuAHAGMINAMYQbgAwhnADgDGEGwCMIdwAYAzhBgBjCDcAGEO4AcCYSKlOPDAw4Ot5sVhMmUymyNMEo1p2qZY9JHapRNWyh1TYLvF43POxXHEDgDGEGwCMIdwAYAzhBgBjCDcAGOPpUyV79+5VNBpVTU2NwuGwUqlUqecCAPwNzx8H7Ozs1OzZs0s5CwDAA26VAIAxnq+4Dx8+LEnauHGjkslkyQYCADxZyMs/Fjw8PKx58+bp3r17+uyzz7Rr1y41Nzf/1zHpdFrpdFqSlEqlNDY25mug22+v9vW8QjV8dano54xEInIcp+jnLbdq2UNil0pULXtIhe0yffp0z8d6CvdfnT17VtFoVFu3bn3icX6/8p5998nnLZXwP/5Z9HNWy1d5q2UPiV0qUbXsIVXQV95HR0c1MjIy/t9Xr15VY2Ojr8EAAIVzvcd97949HTt2TJKUzWa1Zs0atbS0lHwwAMDEXMPd0NCgo0ePlmMWAIAHfBwQAIwh3ABgDOEGAGMINwAYQ7gBwBjCDQDGEG4AMIZwA4AxhBsAjCHcAGAM4QYAYwg3ABhDuAHAGMINAMYQbgAwhnADgDGEGwCMIdwAYAzhBgBjCDcAGEO4AcAYwg0AxhBuADCGcAOAMYQbAIwh3ABgDOEGAGMINwAYQ7gBwBjCDQDGEG4AMIZwA4AxnsOdy+X0ySefKJVKlXIeAIALz+E+f/68EolEKWcBAHjgKdxDQ0Pq7e3Vhg0bSj0PAMCFp3CfOXNG27dvVygUKvU8AAAXEbcDLl++rLq6OjU1NenatWt/e1w6nVY6nZYkpVIpxWIxXwPd9vWswvmd90kikUhJzltu1bKHxC6VqFr2kMq3Syifz+efdMCXX36pCxcuKBwOa2xsTCMjI1qxYoX27dv3xBMPDAz4Gij77lZfzytU+B//LPo5Y7GYMplM0c9bbtWyh8Qulaha9pAK2yUej3s+1vWKu729Xe3t7ZKka9eu6dy5c67RBgCUDp/jBgBjXK+4/2rJkiVasmRJqWYBAHjAFTcAGEO4AcAYwg0AxhBuADCGcAOAMYQbAIwh3ABgDOEGAGMINwAYQ7gBwBjCDQDGEG4AMIZwA4AxhBsAjCHcAGAM4QYAYwg3ABhDuAHAGMINAMYQbgAwhnADgDGEGwCMIdwAYAzhBgBjCDcAGEO4AcAYwg0AxhBuADCGcAOAMYQbAIwh3ABgDOEGAGMINwAYE3E7YGxsTJ2dnXIcR9lsVq2trWprayvHbACACbiGe9q0aers7FQ0GpXjODp06JBaWlq0ePHicswHAPgfrrdKQqGQotGoJCmbzSqbzSoUCpV8MADAxFyvuCUpl8vpwIEDunXrljZt2qRFixaVei4AwN8I5fP5vNeDHz58qGPHjmnXrl1qbGz8r99Lp9NKp9OSpFQqpbGxMV8D3X57ta/nWdbw1aWgR3iiSCQix3GCHqMo2KXyVMseUmG7TJ8+3fvrTObEtbW1am5u1pUrVx4LdzKZVDKZHH+cyWQmc+oprdLfq1gsVvEzesUulada9pAK2yUej3s+1vUe9/379/Xw4UNJf37CpK+vT4lEwtdgAIDCuV5x37lzR93d3crlcsrn81q1apWWL19ejtkAABNwDfdzzz2nI0eOlGMWAIAHfHMSAIwh3ABgDOEGAGMINwAYQ7gBwBjCDQDGEG4AMIZwA4AxhBsAjCHcAGAM4QYAYwg3ABhDuAHAGMINAMYQbgAwhnADgDGEGwCMIdwAYAzhBgBjCDcAGEO4AcAYwg0AxhBuADCGcAOAMYQbAIwh3ABgDOEGAGMINwAYQ7gBwBjCDQDGEG4AMIZwA4AxEbcDMpmMuru7dffuXYVCISWTSW3evLkcswEAJuAa7nA4rB07dqipqUkjIyPq6OjQ0qVLtWDBgnLMBwD4H663SubOnaumpiZJ0owZM5RIJDQ8PFzywQAAE5vUPe7BwUH19/dr4cKFpZoHAODC9VbJf4yOjqqrq0s7d+7UzJkzH/v9dDqtdDotSUqlUorFYr4Guu3rWbb5fa8Kdfvt1d6OK8FrN3x1qQRnded152Irxb6RSCSwPzvFVC17SOXbxVO4HcdRV1eX1q5dq5UrV054TDKZVDKZHH+cyWSKM+EUMBXfq6m2cyn2jcViVfE+VsseUmG7xONxz8e63irJ5/Pq6elRIpHQli1bfA0EACge1yvuGzdu6MKFC2psbNT+/fslSdu2bdOyZctKPhwA4HGu4X7xxRd19uzZcswCAPCAb04CgDGEGwCMIdwAYAzhBgBjCDcAGEO4AcAYwg0AxhBuADCGcAOAMYQbAIwh3ABgDOEGAGMINwAYQ7gBwBjCDQDGEG4AMIZwA4AxhBsAjCHcAGAM4QYAYwg3ABhDuAHAGMINAMYQbgAwhnADgDGEGwCMIdwAYAzhBgBjCDcAGEO4AcAYwg0AxhBuADCGcAOAMRG3A06dOqXe3l7V1dWpq6urHDMBAJ7A9Yp73bp1OnjwYDlmAQB44Bru5uZmzZo1qxyzAAA8cL1V4lU6nVY6nZYkpVIpxWIxX+e5XayBDPH7XhUqyPd6qu2cfXdr0c/pdZeGry4V/bW9uP32am/HlXiOcoqc+3dZ/mwXLdzJZFLJZHL8cSaTKdapq95UfK+m4s5B4b0uH8dxfL/f8Xjc87F8qgQAjCHcAGCM662SEydO6Pr163rw4IH27NmjtrY2rV+/vhyzAQAm4Brujz76qBxzAAA84lYJABhDuAHAGMINAMYQbgAwhnADgDGEGwCMIdwAYAzhBgBjCDcAGEO4AcAYwg0AxhBuADCGcAOAMYQbAIwh3ABgDOEGAGMINwAYQ7gBwBjCDQDGEG4AMIZwA4AxhBsAjCHcAGAM4QYAYwg3ABhDuAHAGMINAMYQbgAwhnADgDGEGwCMIdwAYAzhBgBjIl4OunLlik6fPq1cLqcNGzborbfeKvVcAIC/4XrFncvl9MUXX+jgwYM6fvy4Ll68qN9++60cswEAJuAa7ps3b2r+/PlqaGhQJBLR6tWr9e2335ZjNgDABFzDPTw8rPr6+vHH9fX1Gh4eLulQAIC/53qPO5/PP/ZroVDosV9Lp9NKp9OSpFQqpXg87m+if33n73mYvKn4Xk/FnYMyRd9r3+2bBNcr7vr6eg0NDY0/Hhoa0ty5cx87LplMKpVKKZVKFTRQR0dHQc+vJNWyS7XsIbFLJaqWPaTy7eIa7hdeeEG///67BgcH5TiOLl26pJdeeqkcswEAJuB6qyQcDmv37t06fPiwcrmcXn31VT377LPlmA0AMAFPn+NetmyZli1bVupZJP15y6VaVMsu1bKHxC6VqFr2kMq3Syg/0U8fAQAVi6+8A4Axnm6VlMOpU6fU29ururo6dXV1BT2Ob5lMRt3d3bp7965CoZCSyaQ2b94c9Fi+jI2NqbOzU47jKJvNqrW1VW1tbUGP5Vsul1NHR4fmzZtn+pMMe/fuVTQaVU1NjcLhcMGf5ArSw4cP1dPTo19//VWhUEgffPCBFi9eHPRYkzYwMKDjx4+PPx4cHFRbW5veeOONkrxexYR73bp1ev3119Xd3R30KAUJh8PasWOHmpqaNDIyoo6ODi1dulQLFiwIerRJmzZtmjo7OxWNRuU4jg4dOqSWlhaT/2NJ0vnz55VIJDQyMhL0KAXr7OzU7Nmzgx6jYKdPn1ZLS4s+/vhjOY6jR48eBT2SL/F4XEePHpX05wXC+++/rxUrVpTs9SrmVklzc7NmzZoV9BgFmzt3rpqamiRJM2bMUCKRMPtN01AopGg0KknKZrPKZrMTfvnKgqGhIfX29mrDhg1Bj4L/98cff+jHH3/U+vXrJUmRSES1tbUBT1W4vr4+zZ8/X08//XTJXqNirrir0eDgoPr7+7Vw4cKgR/Etl8vpwIEDunXrljZt2qRFixYFPZIvZ86c0fbt26vialuSDh8+LEnauHGj2U9lDA4Oavbs2Tp16pR+/vlnNTU1aefOneMXC1ZdvHhRr7zySklfo2KuuKvN6Oiourq6tHPnTs2cOTPocXyrqanR0aNH1dPTo59++km//PJL0CNN2uXLl1VXVzf+NyHrPv30U33++ec6ePCgvvnmG12/fj3okXzJZrPq7+/Xa6+9piNHjuipp57S119/HfRYBXEcR5cvX1Zra2tJX4dwl4DjOOrq6tLatWu1cuXKoMcpitraWjU3N+vKlStBjzJpN27c0Hfffae9e/fqxIkT+uGHH3Ty5Mmgx/Jt3rx5kqS6ujq9/PLLunnzZsAT+VNfX6/6+vrxv8W1traqv78/4KkK8/333+v555/XnDlzSvo63Copsnw+r56eHiUSCW3ZsiXocQpy//59hcNh1dbWamxsTH19fXrzzTeDHmvS2tvb1d7eLkm6du2azp07p3379gU8lT+jo6PK5/OaMWOGRkdHdfXqVb3zzjtBj+XLnDlzVF9fr4GBAcXjcfX19Zn8If5fleM2iVRB4T5x4oSuX7+uBw8eaM+ePWpraxv/oYUlN27c0IULF9TY2Kj9+/dLkrZt21a2b54W0507d9Td3a1cLqd8Pq9Vq1Zp+fLlQY81pd27d0/Hjh2T9OethjVr1qilpSXgqfzbvXu3Tp48Kcdx9Mwzz+jDDz8MeiTfHj16pKtXr+q9994r+WvxzUkAMIZ73ABgDOEGAGMINwAYQ7gBwBjCDQDGEG4AMIZwA4AxhBsAjPk/wUCSR4rqfQIAAAAASUVORK5CYII=\n", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "fake_data = [1, 1, 1, 1, 2, 2, 3, 4, 5, 1, 2, 3, 4, 6, 7]\n", "plt.hist(fake_data)\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Do it!**\n", "\n", "Read in the mean salary per congressional district and construct a histogram from that data.\n", "* Investigate the `bins` argument. What happens if you set this too high? What if you set it too low? Generally, `sqrt(n)` is a good size for n data points.\n", "\n", "**Challenge**\n", "\n", "Get the salary data from [here](https://github.com/guyrt/teaching/tree/master/2017/Com597I/summary) (it's the tsv file). Import this file into python and build a histogram of salary.\n", "\n", "* How many bins are a good fit?\n", "* There are clearly outliers in this data. Investigate the `range` argument to `hist` to help truncate the plot.\n", "* What does the normalize argument do?\n", "\n", "Hint: [here is the documentation](http://matplotlib.org/api/pyplot_api.html#matplotlib.pyplot.hist)" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "# put your code here." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Getting help\n", "--------------\n", "\n", "The plotting libraries in python are incredibly rich, and we have barely scratched the surface. \n", "\n", "The best way to figure out what is possible is to look at the [gallery](http://matplotlib.org/gallery.html) in Matplotlib's documentation. Every plot in the gallery has sample python code that produces exactly that plot. Usually, when I'm trying to make a plot, I start with a gallery example and modify it to suite my needs.\n", "\n", "The key thing to do when you use these examples is to figure out how to structure the data. If you can map your data format to the format in the example, then you can usually just use the examples directly.\n", "\n", "For a comprehensive tutorial on plotting see the [official guide](http://matplotlib.org/users/beginner.html) from Matplotlib." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "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.7.3" } }, "nbformat": 4, "nbformat_minor": 2 }