{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Introduction to Plotting with Matplotlib\n",
"\n",
"---\n",
"\n",
"[Watch a walk-through of this lesson on YouTube](https://www.youtube.com/watch?v=6ATdPk3bRBk)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Questions\n",
"- How can I plot my data?\n",
"- How can I save my plot for publishing?\n",
"\n",
"## Learning Objectives\n",
"- Create a time series plot showing a single data set\n",
"- Create a scatter plot showing relationship between two data sets\n",
"- Use methods to plot directly from pandas DataFrames\n",
"- Customize basic features of a plot, such as axis labels, titles, colors, and line styles\n",
"\n",
"---"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"\n",
"\n",
"[Matplotlib](https://matplotlib.org/) is, effectively, the core plotting and data visualization package in Python. Many other packages use Matplotlib for data visualization, including pandas, NumPy, and SciPy. Matplotlib is not the only visualization package in Python, by any means. There are many others, including [seaborn](https://seaborn.pydata.org), [Altair](https://altair-viz.github.io), [ggpy](http://yhat.github.io/ggpy/), [Bokeh](https://docs.bokeh.org/en/latest/index.html), and [plot.ly](https://plot.ly). Some of the others are actually built on top of Matplotlib, but simply the syntax for creating specific, complex types of graphics relative to what's required in Matplotlib (these are called **wrappers** for Matplotlib). Others are entirely independent. Regardless, Matplotlib is the most widely-used and flexible package for data visualization in Python, and so it's valuable to learn it first, and then build out your skills from there. \n",
"\n",
"Matplotlib is also a very mature Python package, having been first released in 2003 and continuously updated since then. It has a strong development community, a detailed website with extensive documentation and many examples, and there is copious third party documentation in the form of blog posts, books, and more — much of which is freely available.\n",
"\n",
"## History\n",
"\n",
"Matplotlib's original developer, [John D. Hunter](https://en.wikipedia.org/wiki/John_D._Hunter) (1968-2012), was a neuroscience PhD student who needed to plot electrocorticography (ECoG) data (electrical data recorded directly from the surface of the brain). Hunter originally designed Matplotlib to emulate the plotting abilities of [Matlab](https://www.mathworks.com/products/matlab.html), but in Python. Matlab is a commercial programming language and environment, designed for — and widely used by — engineers and scientists. Hunter encountered limitations in Matlab that he wanted to work around. Because Matlab is a commercial product, rather than an open source one, development is controlled by a company (Mathworks). Although developers can write quite extensive and complex applications in Matlab, they are ultimately limited by the decisions that its developers have made. Hunter decided to switch his work to use Python, and wanted to develop a plotting interface that was similar to that used in Matlab. Indeed, this is where the \"Mat\" part of the name Matplotlib came from. "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Importing Matplotlib\n",
"\n",
"We have previously covered how to import a Python package using the `import` command. We also covered how to import a package with an alias, using the syntax `import [pacakge] as [alias]` \n",
"\n",
"For Matplotlib, we will do this again, but we add an extra detail: Matplotlib, like many Python packages, is organized into a number of \"modules\" (essentially subsets of functions). The one that you will typically want to import for plotting is called `pyplot`. So we use the syntax below:\n",
"\n",
"~~~python\n",
"import matplotlib.pyplot as plt\n",
"~~~"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generating a Plot\n",
"Now we can draw a simple line plot using the `matplotlib.pyplot`'s `plot()` function, by creating two lists of data points (each 4 elements long), which represent time elapsed and distance traveled by some hypothetical object:\n",
"\n",
"~~~python\n",
"time = [0, 1, 2, 3]\n",
"position = [0, 100, 200, 300]\n",
"\n",
"plt.plot(time, position)\n",
"~~~"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"time = [0, 1, 2, 3]\n",
"position = [0, 100, 200, 300]\n",
"\n",
"plt.plot(time, position)"
]
},
{
"cell_type": "markdown",
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"source": [
"You can see above that we used the Matplotlib alias `plt` followed by the name of a specific function in the package, `plot()`. This is the same syntax as when we used a pandas function, such as `pd.read_csv()`.\n",
"\n",
"Another thing to note is that above the plot is some text, something like: `[]`. This is part of the output of the `plt.plot()` command, but typically not something that we care to see. We can generate the plot without this extra output, by including the command `plt.show()` at the end of the cell. Recall that Jupyter only shows the output of the last output-generating command in a cell, and `plt.show()` shows the plot without the extra text. It's good to make a habit of putting `plt.plot()` as the last line of code in any Jupyter cell you generate a plot in.\n",
"\n",
"~~~python\n",
"# since we defined time and position above, no need to re-assign them here\n",
"plt.plot(time, position)\n",
"plt.show()\n",
"~~~"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# since we defined time and position above, no need to re-assign them here\n",
"plt.plot(time, position)\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {
"jupyter": {
"outputs_hidden": false
}
},
"source": [
"## Labelling Axes\n",
"Matplotlib also allows us to modify the plot in many ways, which can improve the interpretability of a plot. For example, it's always good practice to label the axes of a plot. \n",
"\n",
"In most cases, the way we modify or enhance a Matplotlib plot are not by adding arguments to the `.plot()` command, but executing additional commands after `.plot()` that modify what was created by `.plot()`, culminating in the `plt.show()` command for the \"final reveal\":\n",
"~~~python\n",
"plt.plot(time, position)\n",
"plt.xlabel('Time (hr)')\n",
"plt.ylabel('Position (km)')\n",
"plt.show()\n",
"~~~"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt.plot(time, position)\n",
"plt.xlabel('Time (hr)')\n",
"plt.ylabel('Position (km)')\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plotting pandas DataFrames\n",
"\n",
"pandas is integrated with Matplotlib, making it easy to generate plots of data stored in pandas DataFrames. Methods are defined for pandas DataFrames that generate plots using Matplotlib.\n",
"\n",
"### Import Data as a pandas DataFrame\n",
"Let's try this by first importing pandas and loading in the Gapminder Oceania data (`data/gapminder_gdp_oceania.csv`):\n",
"\n",
"~~~python\n",
"import pandas as pd\n",
"df = pd.read_csv('data/gapminder_gdp_oceania.csv', index_col='country')\n",
"~~~"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"df = pd.read_csv('data/gapminder_gdp_oceania.csv', index_col='country')"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Let's see what this DataFrame looks like:\n",
"~~~python\n",
"df\n",
"~~~"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false,
"jupyter": {
"outputs_hidden": false
}
},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
gdpPercap_1952
\n",
"
gdpPercap_1957
\n",
"
gdpPercap_1962
\n",
"
gdpPercap_1967
\n",
"
gdpPercap_1972
\n",
"
gdpPercap_1977
\n",
"
gdpPercap_1982
\n",
"
gdpPercap_1987
\n",
"
gdpPercap_1992
\n",
"
gdpPercap_1997
\n",
"
gdpPercap_2002
\n",
"
gdpPercap_2007
\n",
"
\n",
"
\n",
"
country
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
Australia
\n",
"
10039.59564
\n",
"
10949.64959
\n",
"
12217.22686
\n",
"
14526.12465
\n",
"
16788.62948
\n",
"
18334.19751
\n",
"
19477.00928
\n",
"
21888.88903
\n",
"
23424.76683
\n",
"
26997.93657
\n",
"
30687.75473
\n",
"
34435.36744
\n",
"
\n",
"
\n",
"
New Zealand
\n",
"
10556.57566
\n",
"
12247.39532
\n",
"
13175.67800
\n",
"
14463.91893
\n",
"
16046.03728
\n",
"
16233.71770
\n",
"
17632.41040
\n",
"
19007.19129
\n",
"
18363.32494
\n",
"
21050.41377
\n",
"
23189.80135
\n",
"
25185.00911
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" gdpPercap_1952 gdpPercap_1957 gdpPercap_1962 gdpPercap_1967 \\\n",
"country \n",
"Australia 10039.59564 10949.64959 12217.22686 14526.12465 \n",
"New Zealand 10556.57566 12247.39532 13175.67800 14463.91893 \n",
"\n",
" gdpPercap_1972 gdpPercap_1977 gdpPercap_1982 gdpPercap_1987 \\\n",
"country \n",
"Australia 16788.62948 18334.19751 19477.00928 21888.88903 \n",
"New Zealand 16046.03728 16233.71770 17632.41040 19007.19129 \n",
"\n",
" gdpPercap_1992 gdpPercap_1997 gdpPercap_2002 gdpPercap_2007 \n",
"country \n",
"Australia 23424.76683 26997.93657 30687.75473 34435.36744 \n",
"New Zealand 18363.32494 21050.41377 23189.80135 25185.00911 "
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are only two countries in this data set, which makes it easy to work with."
]
},
{
"cell_type": "markdown",
"metadata": {
"jupyter": {
"outputs_hidden": false
},
"tags": []
},
"source": [
"### Plotting directly from a pandas DataFrame\n",
"\n",
"Our goal is to plot the GDP for a particular country (or countries), as a function of year. In other words, we want to plot a line for each country, with year on the *x* axisa and GDP on the *y* axis.\n",
"\n",
"Let's run the pandas `.plot()` method on our DataFrame to generate a Matplotlib plot:\n",
"\n",
"~~~python\n",
"df.plot()\n",
"plt.show()\n",
"~~~"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df.plot()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We get a plot all right, but it's not the most intuitive way to look at the data. What happened here? \n",
"\n",
"We can see from the legend that Python generated a line for each year in the data set, with country on the *x* axis. This is because **by default, Matplotlib will use the rows of a DataFrame as the *x* axis**, and use columns to define the groupings that define individual lines. But in our DataFrame, the rows (indexes) are the countries. \n",
"\n",
"We can change this by ***transposing*** the DataFrame, an operation which swaps the rows and columns (rows become columns, and vice-versa). To transpose the DataFrame we us the `.T` operator (note that `.T` is an operator, not a method, so you shouldn't add parentheses after the `T`)\n",
"\n",
"~~~python\n",
"df.T.plot()\n",
"plt.show()\n",
"~~~"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"df.T.plot()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"You can see above that pandas + Matplotlib also recognizes the index of the DataFrame as labels, so a legend is automatically generated with the country names.\n",
"\n",
"Another important point to note is that we applied `.T` \"on the fly\" in generating the plot. That is, we didn't modify the DataFrame `df` stored in memory. We just passed the data from `df` through the `.T` operator when we generated the plot. You can see that `df` is not transposed by viewing it again:\n",
"\n",
"~~~python\n",
"df\n",
"~~~"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
gdpPercap_1952
\n",
"
gdpPercap_1957
\n",
"
gdpPercap_1962
\n",
"
gdpPercap_1967
\n",
"
gdpPercap_1972
\n",
"
gdpPercap_1977
\n",
"
gdpPercap_1982
\n",
"
gdpPercap_1987
\n",
"
gdpPercap_1992
\n",
"
gdpPercap_1997
\n",
"
gdpPercap_2002
\n",
"
gdpPercap_2007
\n",
"
\n",
"
\n",
"
country
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
"
\n",
" \n",
" \n",
"
\n",
"
Australia
\n",
"
10039.59564
\n",
"
10949.64959
\n",
"
12217.22686
\n",
"
14526.12465
\n",
"
16788.62948
\n",
"
18334.19751
\n",
"
19477.00928
\n",
"
21888.88903
\n",
"
23424.76683
\n",
"
26997.93657
\n",
"
30687.75473
\n",
"
34435.36744
\n",
"
\n",
"
\n",
"
New Zealand
\n",
"
10556.57566
\n",
"
12247.39532
\n",
"
13175.67800
\n",
"
14463.91893
\n",
"
16046.03728
\n",
"
16233.71770
\n",
"
17632.41040
\n",
"
19007.19129
\n",
"
18363.32494
\n",
"
21050.41377
\n",
"
23189.80135
\n",
"
25185.00911
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" gdpPercap_1952 gdpPercap_1957 gdpPercap_1962 gdpPercap_1967 \\\n",
"country \n",
"Australia 10039.59564 10949.64959 12217.22686 14526.12465 \n",
"New Zealand 10556.57566 12247.39532 13175.67800 14463.91893 \n",
"\n",
" gdpPercap_1972 gdpPercap_1977 gdpPercap_1982 gdpPercap_1987 \\\n",
"country \n",
"Australia 16788.62948 18334.19751 19477.00928 21888.88903 \n",
"New Zealand 16046.03728 16233.71770 17632.41040 19007.19129 \n",
"\n",
" gdpPercap_1992 gdpPercap_1997 gdpPercap_2002 gdpPercap_2007 \n",
"country \n",
"Australia 23424.76683 26997.93657 30687.75473 34435.36744 \n",
"New Zealand 18363.32494 21050.41377 23189.80135 25185.00911 "
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"jupyter": {
"outputs_hidden": false
},
"tags": []
},
"source": [
"## Renaming Columns\n",
"\n",
"The *x* axis labels in the above plot are hard to read, because each column name contains not only the year, but the preceding text `gdpPercap_`, e.g., `gdpPercap_1972`. It would be nice to remove this leading text so column labels are just the numerical years. \n",
"\n",
"Fortunately, pandas has a `.str.strip()` method, which removes from the string the characters stated in the argument. This method works on strings, which is why we call `str` before `.strip()`. To rename the columns, we can rely on the fact that pandas DataFrames have a `.columns` property that allows us to refer to the entire set of column labels. \n",
"\n",
"~~~python\n",
"df.columns = df.columns.str.strip('gdpPercap_')\n",
"df\n",
"~~~\n"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
" 1952 1957 1962 1967 1972 \\\n",
"country \n",
"Australia 10039.59564 10949.64959 12217.22686 14526.12465 16788.62948 \n",
"New Zealand 10556.57566 12247.39532 13175.67800 14463.91893 16046.03728 \n",
"\n",
" 1977 1982 1987 1992 1997 \\\n",
"country \n",
"Australia 18334.19751 19477.00928 21888.88903 23424.76683 26997.93657 \n",
"New Zealand 16233.71770 17632.41040 19007.19129 18363.32494 21050.41377 \n",
"\n",
" 2002 2007 \n",
"country \n",
"Australia 30687.75473 34435.36744 \n",
"New Zealand 23189.80135 25185.00911 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df"
]
},
{
"cell_type": "markdown",
"metadata": {
"tags": []
},
"source": [
"## Customizing Plot Appearance\n",
"\n",
"If we want to customize the colors of a plot with multiple categories (lines, bars, etc), we can pass a *keyword argument* (kwarg) to the `.plot()` method. \n",
"\n",
"To change line colors, we pass the kwarg `color=` followed by a list of color names, with the number of list items equal to the number of categories we're plotting (in this case, two):\n",
"\n",
"~~~python\n",
"df.T.plot(color=['red', 'blue'])\n",
"plt.show()\n",
"~~~\n",
"\n",
"
\n",
"
Keyword arguments
\n",
"\n",
"`color=` is a particular kind of argument to a function, called a ***keyword argument*** (***kwarg***). Recall that arguments are information provided to a function that alter how it runs. kwargs are arguments that use a keyword (in this case, `color`), followed by the `=` sign, followed by a value to pass to the argument. kwargs are commonly used for optional arguments. A Python function that takes multiple arguments needs to know how to interpret each argument. Mandatory arguments typically are required to be listed in a particular order, which allows the function to know how to interpret each one. However, optional arguments might not occur, so order would not be a good way of determining the meaning of the argument. The keywords allow the function to know how to interpret each kwarg.\n",
"