{ "cells": [ { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "# Histogramming and Binning Data with Python" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "## 1. Histogramming" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "When a measurement is made numerous times, it is often useful to bin (or group) the data\n", "and make a histogram. For example, if the time that it takes a sphere to roll down a ramp\n", "was measured one hundred times, then a histogram of the times would show how they are\n", "distributed. The **`hist`** function from the pylab library is useful for making histograms. The example below makes a histogram from a list of 24 numbers. \n", "You can add labels to the histogram like othe graphs." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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" }, "execution_count": 1, "metadata": { "image/png": { "height": 250, "width": 364 } }, "output_type": "execute_result" } ], "source": [ "from pylab import *\n", "t = array([4.94,5.98,5.00,6.06,5.94,5.17,5.12,5.06,\n", " 2.74,2.91,4.24,6.68,4.89,5.88,5.41,5.53,\n", " 3.73,5.80,4.26,5.50,5.73,5.29,7.40,3.55])\n", "figure()\n", "hist(t)\n", "show()" ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The first line imports the pylab library, which makes the **`hist`** function available.\n", "\n", "As for other plotting commands, the **`figure`** and **`show`** functions are also needed.\n", "\n", "By default, the histogram will have 10 bins. If no additional arguments are sent, the **`hist`** function decides where to put the boundaries of the bins." ] }, { "cell_type": "markdown", "metadata": { "collapsed": false }, "source": [ "The **`color`** argument can be used to set the color of the bars in the histogram.\n", "Alternatively, the **`edgecolor`** and **`facecolor`** arguments separately set the colors of\n", "the edges and middle of the bars in the histogram, respectively. Some of other color\n", "options are:\n", "