{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "\n", "*This notebook contains an excerpt from the book [Machine Learning for OpenCV](https://www.packtpub.com/big-data-and-business-intelligence/machine-learning-opencv) by Michael Beyeler.\n", "The code is released under the [MIT license](https://opensource.org/licenses/MIT),\n", "and is available on [GitHub](https://github.com/mbeyeler/opencv-machine-learning).*\n", "\n", "*Note that this excerpt contains only the raw code - the book is rich with additional explanations and illustrations.\n", "If you find this content useful, please consider supporting the work by\n", "[buying the book](https://www.packtpub.com/big-data-and-business-intelligence/machine-learning-opencv)!*" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Loading External Datasets in Python](02.02-Loading-External-Datasets-in-Python.ipynb) | [Contents](../README.md) | [Visualizing Data from an External Dataset](02.04-Visualizing-Data-from-an-External-Dataset.ipynb) >" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Visualizing Data Using Matplotlib\n", "\n", "Knowing how to load data is of limited use if we don't know how to look at the data.\n", "Thankfully, there is **Matplotlib**!\n", "\n", "Matplotlib is a multiplatform data visualization library built on NumPy arrays—see, I\n", "promised you NumPy would show up again. It was conceived by John Hunter in 2002,\n", "originally designed as a patch to IPython to enable interactive MATLAB-style plotting from\n", "the command line. In more recent years, newer and shinier tools have popped up to\n", "eventually replace Matplotlib (such as `ggplot` and `ggvis` in the R language), but\n", "Matplotlib remains essential as a well-tested, cross-platform graphics engine." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Importing matplotlib\n", "\n", "You might be in luck again: if you followed the advice outlined in the previous chapter and\n", "installed the Python Anaconda stack, you already have Matplotlib installed and are ready\n", "to go. Otherwise, you might want to visit http://matplotlib.org for installation\n", "instructions.\n", "\n", "Just as we used np shorthand for NumPy, we will use some standard shorthands for the Matplotlib imports:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import matplotlib as mpl" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import matplotlib.pyplot as plt" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The plt interface is what we will use most often, as we shall see throughout the book." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Producing a simple plot\n", "\n", "Without further ado, let's create our first plot.\n", "\n", "Let's say we want to produce a simple line plot of the sine function, sin(x). We want the function to be evaluated at all points on the x axis where $0 \\leq x < 10$. We will use NumPy's linspace function to create a linear spacing on the x axis, from x values 0 to 10, and a total of 100 sampling points:" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": true }, "outputs": [], "source": [ "x = np.linspace(0, 10, 100)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can evaluate the sine function at all points `x` using NumPy's `sin` function, and visualize the result by calling `plt`'s `plot` function:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plt.plot(x, np.sin(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Did you try it yourself? What happened? Did anything show up?" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In order for the plot to show up, we need to add some IPython magic. There are two options:\n", "- %matplotlib notebook will lead to interactive plots\n", "- %matplotlib inline will lead to static images of your plots\n", "\n", "Check page 37 in the book to find out how to plot from a `.py` script or from within IPython." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this book, we will generally opt for the inline option:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's try this again:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n8QAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(x, np.sin(x))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "If you want to save the figure for later, you have the option to do so directly from within the Jupyter Notebook:" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.savefig('figures/02.03-sine.png')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "\n", "< [Loading External Datasets in Python](02.02-Loading-External-Datasets-in-Python.ipynb) | [Contents](../README.md) | [Visualizing Data from an External Dataset](02.04-Visualizing-Data-from-an-External-Dataset.ipynb) >" ] } ], "metadata": { "anaconda-cloud": {}, "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.5.3" } }, "nbformat": 4, "nbformat_minor": 1 }