{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "[Sebastian Raschka](http://www.sebastianraschka.com)\n", "\n", "[back](https://github.com/rasbt/matplotlib-gallery) to the `matplotlib-gallery` at [https://github.com/rasbt/matplotlib-gallery](https://github.com/rasbt/matplotlib-gallery)" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%load_ext watermark" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Last updated: 31/07/2014 \n", "\n", "CPython 3.4.1\n", "IPython 2.0.0\n", "\n", "matplotlib 1.3.1\n", "numpy 1.8.1\n" ] } ], "source": [ "%watermark -u -v -d -p matplotlib,numpy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[More info](http://nbviewer.ipython.org/github/rasbt/python_reference/blob/master/ipython_magic/watermark.ipynb) about the `%watermark` extension" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Histograms in matplotlib" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Sections" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "- [Simple histograms](#Simple-histograms)\n", "\n", " - [Fixed bin size](#Fixed-bin-size)\n", " \n", " - [Fixed number of bins](#Fixed-number-of-bins)\n", "\n", "- [Histogram of 2 overlapping data sets](#Histogram-of-2-overlapping-data-sets)\n", "\n", "- [Histogram showing bar heights but without area under the bars](#Histogram-showing-bar-heights-but-without-area-under-the-bars)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Simple histograms" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fixed bin size" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "code", "execution_count": 26, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nYII=\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import random\n", "from matplotlib import pyplot as plt\n", "\n", "data = np.random.normal(0, 20, 1000) \n", "\n", "# fixed bin size\n", "bins = np.arange(-100, 100, 5) # fixed bin size\n", "\n", "plt.xlim([min(data)-5, max(data)+5])\n", "\n", "plt.hist(data, bins=bins, alpha=0.5)\n", "plt.title('Random Gaussian data (fixed bin size)')\n", "plt.xlabel('variable X (bin size = 5)')\n", "plt.ylabel('count')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fixed number of bins" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "code", "execution_count": 30, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nD5GAcAEeCl7fAAAAAElFTkSuQmCC\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import random\n", "import math\n", "from matplotlib import pyplot as plt\n", "\n", "data = np.random.normal(0, 20, 1000) \n", "\n", "bins = np.linspace(math.ceil(min(data)), \n", " math.floor(max(data)),\n", " 20) # fixed number of bins\n", "\n", "plt.xlim([min(data)-5, max(data)+5])\n", "\n", "plt.hist(data, bins=bins, alpha=0.5)\n", "plt.title('Random Gaussian data (fixed number of bins)')\n", "plt.xlabel('variable X (20 evenly spaced bins)')\n", "plt.ylabel('count')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Histogram of 2 overlapping data sets" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import random\n", "from matplotlib import pyplot as plt\n", "\n", "data1 = [random.gauss(15,10) for i in range(500)] \n", "data2 = [random.gauss(5,5) for i in range(500)] \n", "bins = np.arange(-60, 60, 2.5)\n", "plt.xlim([min(data1+data2)-5, max(data1+data2)+5])\n", "\n", "plt.hist(data1, bins=bins, alpha=0.3, label='class 1')\n", "plt.hist(data2, bins=bins, alpha=0.3, label='class 2')\n", "plt.title('Random Gaussian data')\n", "plt.xlabel('variable X')\n", "plt.ylabel('count')\n", "plt.legend(loc='upper right')\n", "\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": 32, "metadata": { "collapsed": false }, "outputs": [], "source": [ "smooth = interp1d(bins, y, kind='cubic')" ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "smooth" ] }, { "cell_type": "code", "execution_count": 35, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nVfHixVVYWJjx2iJFiqgdO3YopZS6devWfdfSuHFj9fbbb6vbt2+rAwcOqBIlSqjNmzcrpZSaN2+e\nca7U3LmWadOmqcTERBUcHKyKFCmiYmJiUr3utP4/x8XFKScnJ3XixAmllFLR0dHqyJEjxnn+/vtv\nZbFY1PXr19OMxQySDB5C+fLlVeHChZWjo6OyWCyqffv2Kf6T3MvX11etWLFCKaV/eTw9PY19N27c\nUBaLRV24cEGdPn1a2dvbq5s3bxr7u3fvbtykxo8fr7p27WrsS05OVm5ubmrr1q1KKZ0MFi1aZOzv\n1KmT6tevn1H+9NNPVfv27VONsWXLlmr06NFGef/+/apo0aLKyclJValSJc1rc3Z2VocOHVJK6RvY\ne++9Z+y7OxmcPHlSlSxZUm3cuFHFx8eneI8mTZqoMWPGqEuXLqXYntoN6G7t27dX06dPN85VoECB\nFMeWLFlS7dq1677XpfU5v/LKK6meJyYmRlksFnXt2rVUrzM1d3/n9+rbt68aNWpUim3+/v7qm2++\nMcr3niMiIkK5uLgob29vFRQUZGz39vZOcXOPjIxUDg4OKjExUY0bN85IDErp37W8efOmmQx69eql\n+vbta5TXrl2rvLy8lFIZSwaVKlUy9h06dEhZLBZ18eJFY1uxYsXUwYMHlVL6hn53bHFxcSpPnjzq\n7NmzavHixapx48YpYnvjjTeMP2R69uypevbsmeo1KKXUmTNnVJ48eVRcXJyxbfTo0apXr15GrA9K\nBnf/gaaUUn5+fmrBggWpXnda/5/j4uJU0aJF1bJly1L8rt0RHx+vLBaLOnv2bJqxmEGaiR6CxWJh\nxYoVXLt2jZCQEDZv3syePXuM/d9++y01a9bE2dkZZ2dnDh8+zN9//23sL1WqlPFzwYIFAYiLiyMy\nMhJnZ2cKFChg7C9fvrzxc2RkJOXKlUsRR9myZTl//ryxzdXV1fi5QIECKcr58+cnLi4u1WsqVqwY\nkZGRRtnX15eYmBh+/PFHbt++bWyfMmUKVquVokWL4uzszNWrV+9rYkmNp6cn06ZNY+zYsbi6utKt\nWzeioqIAXXU/ceIE3t7e+Pn5pVl1XrduHfXr16dYsWI4Ozuzdu3aFJ9rsWLFsLP791e5YMGCqV7v\ngz7npKQkRo0ahaenJ0WKFKFChQoA6V7ng77zuzk7O6faMZ5eh2r58uXx9/fn9OnTvP3228b2iIgI\n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\nUkolJiaqihUrqvDwcBUfH69q1KihwsLCzA4rhaioKLV//36llFLXr19XlStXVmFhYWr48OFq0qRJ\nSimlgoKCjM/aVkydOlV1795dtWvXTimlbDbeV199Vc2ePVsppVRCQoKKjY212VjTIsngEb344otq\n06ZN923/6KOPVFBQkFF+5pln1O+//56VoaWpc+fO6uDBgymSgS3Hq5RSP/74o3r55ZeVUrYb644d\nO9QzzzxjlO8dFWeLXnjhBfXLL7+oKlWqqOjoaKWUThhVqlQxObJ/nT17VrVo0UJt3rxZtW3bViml\nbDLe2NhYVaFChfu222Ks6ZFmokd08uRJfv31V+rXr4+/vz979uwB9INz7u7uxnG28uDcihUrcHd3\np3r16im222q8d8yZM4c2bdoAthvr+fPnKVu2rFG2lbjSEhERwf79+6lXrx4XLlzA1dUVAFdXVy5c\nuGBydP8aPHgwkydPxs7u39uULcYbHh5OiRIl6N27N7Vq1aJv377cuHHDJmNNjymjibKL9B6cS0xM\nJCYmhp07d7J79266dOnCqVOnUn2frBoRlV68gYGBKdrYVTrjBrIi3rRi/eijj4z24YkTJ5I3b166\nd++e5vvYwmgzW4gho+Li4ujUqRPTp0/H0dExxT6LxWIz17J69WpKlixJzZo105zWwVbiTUxMZN++\nfcycOZO6desyaNAggoKCUhxjK7GmR5JBOtJ6Khrg888/p2PHjgDUrVsXOzs7Ll++jJubG2fPnjWO\nO3funDH30pOWVryHDx8mPDycGjVqGDHVrl2bXbt2mRZvep8twLx581i7di2bNm0ytpn52abn3rjO\nnj2bogZjKxISEujUqRM9evSgffv2gP6LNTo6mlKlShEVFUXJkiVNjlLbsWMHK1euZO3atdy6dYtr\n167Ro0cPm4zX3d0dd3d36tatC0Dnzp0JDAykVKlSNhdrusxup8quvvjiC/XBBx8opZQ6fvy4Klu2\nrFLq307O27dvq1OnTqmnnnpKJScnmxnqfVLrQLaleNetW6esVqu6dOlSiu22GKtSusPwqaeeUuHh\n4er27ds22YGcnJysevTooQYNGpRi+/Dhw41+mMDAQJvs5AwJCTH6DGw13saNG6vjx48rpZQaM2aM\nGj58uM3GmhZJBo8oPj5evfLKK8rHx0fVqlVLbdmyxdg3ceJEVbFiRVWlShW1fv1684JMQ4UKFYxk\noJTtxevp6anKlSunfH19la+vr3rrrbeMfbYW6x1r165VlStXVhUrVlQfffSR2eHcZ9u2bcpisaga\nNWoYn+u6devU33//rVq0aKEqVaqkAgICVExMjNmh3ickJMQYTWSr8R44cEDVqVNHVa9eXXXo0EHF\nxsbabKxpkYfOhBBCyENnQgghJBkIIYRAkoEQQggkGQghhECSgRBCCCQZCCGEQJKBeEzPPfcc165d\nS/eYwoULp7q9V69eLFu2LMPnGjhwIBMmTDDKEydOpH///qkeO3PmTObNmwfY/pTYISEhxhQc2UVa\n352/vz979+69b/uqVaseeWrvFi1acP369Ud6rcg4SQbikSj9wCJr1qzByckp3WPTmpPlYedr+fDD\nD5k3bx7h4eGcOnWK2bNn89FHH6Ua2+zZs3nllVcAaNWqFUeOHOHgwYNUrlyZwMBAAMLCwggODiYs\nLIz169fTr18/kpOTMxxPbpbWd5fW99muXbsUa348jJdeeomvv/76kV4rMk6SQS42evRoZs2aZZTH\njh3L1KlTuXHjBi1btqR27dpUr16dlStXAnq2yypVqtCzZ0+qVavG2bNn8fDwMBbK6dChA3Xq1MHH\nx+e+/7xDhgzBx8eHli1bcvnyZWP7nWce9+7di7+/P3Xq1KF169apTmLn6OjIxIkTefvttxkwYAAT\nJkxINRH99ttveHl5YW+vp94KCAgwZr6sV68e586dA/RMrt26dcPBwQEPDw88PT0JDQ297/1Si+3Y\nsWPUq1fPOCYiIsKYETata/H392fUqFHUq1ePKlWqsH379hTnUUpRuXJl4/NJTk6mUqVK/P333ymO\n27p1KzVr1qRmzZrUqlWLuLg4QkJCaNKkCW3btsXLy4u33nrL+Gz79etH3bp18fHxYezYscb77N69\nm4YNG+Lr60u9evW4ceMGSUlJDB8+HD8/P2rUqGEsSauUon///nh5eREQEMDFixfTnOxwwYIF1KxZ\nk2rVqrF7925AzzU1YMAAQNcqBg4cSMOGDalYsaJRw4iKiqJJkybGa+98Ps8//zyLFy9O9VwiE5n1\n6LMw3/79+1XTpk2NstVqVefOnVOJiYnq2rVrSimlLl26pDw9PZVSSoWHhys7Ozu1a9cu4zV3z3N0\n5coVpZRSN2/eVD4+PkbZYrGoRYsWKaWUGj9+vOrfv79SSqlevXqpZcuWqfj4eNWgQQN1+fJlpZRS\nixcvVq+99lqacdevX181btw4zf2BgYFq6tSpqe5r27at+u6775RSSvXv318tXLjQ2Pf666+rH374\nIcXx6cXm6+urwsPDlVJ68ZKJEyeqhISENI/39/dXw4YNU0rp6StatmyplFJqy5Ytxtw748aNU9Om\nTVNKKfXzzz+rzp0733cN7dq1Uzt27FBKKXXjxg2VmJiotmzZovLnz6/Cw8NVUlKSCggIMK7lzveQ\nmJio/P391aFDh9Tt27fVU089pfbs2aOU0gveJCYmqi+//FJ9+OGHSimlbt26perUqaPCw8PVsmXL\nVEBAgEpOTlaRkZGqaNGiatmyZffF5u/vr9544w2llFK//vqr8vHxUUopNXfuXON779mzp+rSpYtS\nSqmwsDDj92vKlClq4sSJSik9l9L169eN961QoYKKi4u773wi88ispbmYr68vFy9eJCoqiosXL+Ls\n7IybmxsJCQmMHj2abdu2YWdnR2RkJBcvXgSgfPny+Pn5pfp+06dPZ/ny5YCeufPkyZP4+flhZ2dH\n165dAXjllVeM2V5B/8V5/Phxjhw5QsuWLQG91GGZMmVSPce5c+eIjo4mT5483Lhxg0KFCt13zJkz\nZ2jUqNF92x9lSuz0YuvSpQvBwcGMHDmSJUuWsGTJEo4dO5butdy59lq1ahEREXHf+V977TVeeOEF\nBg4cyJw5c+jdu/d9xzRs2JDBgwfz8ssv07FjR2PmVj8/Pzw8PADo1q0b27dvp1OnTgQHB/P111+T\nmJhIVFQUYWFhAJQuXZratWsD//brbNiwgT/++IMffvgBgGvXrnHy5Em2bdtG9+7dsVgslC5dmubN\nm6f5GXbr1g2Axo0bc+3atRR9NHc+4zuzpnp7exvz/Pv5+fHaa6+RkJBA+/btjVl2Qc+uevbsWby8\nvNI8r3g8kgxyuRdffJEffviB6OhoXnrpJQC+++47Ll++zL59+8iTJw8VKlTg1q1bAKnefEF3gm7a\ntImdO3eSP39+mjVrZrzmbkqpVNuVq1atyo4dOx4Y78CBAxk/fjxhYWGMGzeOjz/+ONXj1D1NGI86\nJbZSKs3YunbtyosvvkjHjh2xWCxUrFiRP/74I91ryZcvHwB58uQhMTHxvv3u7u64urqyefNmdu/e\nzffff3/fMSNHjqRt27asWbOGhg0b8vPPPwMpE9mdzzkiIoKpU6eyZ88eihQpQu/evbl161a6fTUz\nZ84kICAgxba1a9emuwZGeu5enOaOvHnzpogVdPLYtm0bq1evplevXgwZMoQePXqkuB7x5EifQS7X\ntY6M7u0AAANcSURBVGtXvv/+e3744QdefPFFQP81WLJkSfLkycOWLVs4ffr0A9/n2rVrODs7kz9/\nfo4dO8bOnTuNfcnJySxduhSARYsW0bhxY2OfxWKhSpUqXLp0yXhNQkKC8dfr3datW8fly5fp0aMH\n77//Pj/++CNHjx6977jy5cun6HNYv349kydPZsWKFeTPn9/YfqctOj4+nvDwcKMmc7f0YnvqqafI\nkycPEyZMMBJpRq8lPX369OGVV16hS5cuqd4A//rrL6pWrcqIESOoW7cux48fByA0NJSIiAiSk5NZ\nsmSJ8Zd5oUKFcHJy4sKFC6xbt874zKOioowV+q5fv05SUhLPPPMMs2bNMhLViRMnuHnzJk2aNCE4\nOJjk5GSioqLYsmVLqrErpQgODgZg+/btFC1a9L5FdNJy5swZSpQoQZ8+fejTpw/79u0z9l24cMEm\n14jISaRmkMtZrVbi4uKMv0gBXn75Zdq1a0f16tWpU6cO3t7exvH33pzulFu3bs0XX3yB1WqlSpUq\nNGjQwDimUKFChIaG8uGHH+Lq6mrcLO5wcHDghx9+4J133uHq1askJiYyePBgrFarccytW7cYPHiw\n0dlYsGBBJk+eTP/+/VP8tQ/QqFEjZs6caZQHDBhAfHy88ddugwYNmDVrFlarlS5dumC1WrG3t2fW\nrFn3XV/evHnTja1r166MGDGCDz/8MEPHp/bZ3ftzu3bt6N27d6pNRKCb47Zs2YKdnR0+Pj48++yz\n/Pbbb9StW5f+/fvz559/0rx5czp06ABAzZo18fLyomzZskbzmYODA8HBwQwYMIB//vmHggULsnHj\nRvr06UNERAS1atVCKUXJkiVZvnw5HTp0YPPmzVitVsqVK8fTTz+damwWi4X8+fNTq1YtEhMTmTNn\njrE9reu98/OWLVuYMmUKDg4OODo68u233wIQHR1NsWLF0qyViswhU1iLHEcpRa1atdi1a1eK5ojs\nYs+ePQwdOpStW7dm+DUhISFMnTqVVatWPcHIzPHVV19x48YNBg8ebHYoOZo0E4kcx2Kx0LdvX777\n7juzQ3loQUFBxrKJDyM7rLH7qIKDg+nbt6/ZYeR4UjMQQgghNQMhhBCSDIQQQiDJQAghBJIMhBBC\nIMlACCEEkgyEEEIA/w9GZ8mJqdALVAAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "import numpy as np\n", "import random\n", "import math\n", "from matplotlib import pyplot as plt\n", "import matplotlib.mlab as mlab\n", "from scipy.stats import norm\n", "from scipy.interpolate import interp1d\n", "\n", "data = np.random.normal(0, 20, 10000) \n", "\n", "# plotting the histogram\n", "n, bins, patches = plt.hist(data, bins=20, normed=1, alpha=0.5, color='lightblue')\n", "\n", "# fitting the data\n", "mu, sigma = norm.fit(data)\n", "\n", "# adding the fitted line\n", "y = mlab.normpdf(bins, mu, sigma)\n", "interp = interp1d(bins, y, kind='cubic')\n", "plt.plot(bins, interp(y), linewidth=2, color='blue')\n", "\n", "plt.xlim([min(data)-5, max(data)+5])\n", "plt.title('Random Gaussian data (fixed number of bins)')\n", "plt.xlabel('variable X (20 evenly spaced bins)')\n", "plt.ylabel('count')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Histogram showing bar heights but without area under the bars" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "[[back to top](#Sections)]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The line plot below is using bins of a histogram and is particularly useful if you are working with many different overlapping data sets." ] }, { "cell_type": "code", "execution_count": 33, "metadata": { "collapsed": false }, "outputs": [], "source": [ "# Generate a random Gaussian dataset with different means\n", "# 5 rows with 30 columns, where every row represents 1 sample.\n", "import numpy as np\n", "\n", "data = np.ones((5,30))\n", "for i in range(5):\n", " data[i,:] = np.random.normal(loc=i/2, scale=1.0, size=30)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Via the `numpy.histogram` function, we can categorize our data into distinct bins." ] }, { "cell_type": "code", "execution_count": 34, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "(array([0, 5, 4, 9, 4, 6, 1, 1, 0]),\n", " array([-2. , -1.5, -1. , -0.5, 0. , 0.5, 1. , 1.5, 2. , 2.5]))" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from math import floor, ceil # for rounding up and down\n", "\n", "data_min = floor(data.min()) # minimum val. of the dataset rounded down\n", "data_max = floor(data.max()) # maximum val. of the dataset rounded up\n", "\n", "bins_size = 0.5\n", "bins = np.arange(floor(data_min), ceil(data_max), bin_size)\n", "np.histogram(data[0,:], bins=bins)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The [`numpy.histogram`](http://docs.scipy.org/doc/numpy/reference/generated/numpy.histogram.html) function returns a tuple, where the first value is an array of how many samples fall into the first bin, the second bin, and so forth. \n", "The second value is another NumPy array; it contains the specified bins. Note that all bins but the last one are half open intervals, e.g., the first bin would be `[-2, -1.5)` (including -2, but not including -1.5), and the second bin would be `[-1.5, -1.)` (including -1.5, but not including 1.0). But the last bin is defined as `[2., 2.5]` (including 2 and including 2.5)." ] }, { "cell_type": "code", "execution_count": 57, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nC3/99ReSkpIwbdo0YZmpjiRqtA4cOCCpVCrh39ChQ3XWCwwMlLy8vOTpH374QVKpVNK///1vxe1t\n2rRJUqlUUlJSkt6/vfPOO5JKpZLWrVunM3/NmjWSSqWS5syZI897++23JZVKJW3fvl1n2enTp0sq\nlUoKDg7Wma9SqSS1Wi3Fx8frbffWrVsGyxoaGipZWFhIFy5c0Cu/r6+vVFpaKs//z3/+I6lUKsnS\n0lI6cuSIPL+kpERydXWV/Pz8DG6jsueee05ycnKS7ty5o7hcYGCgpFKppKVLl+rMX7p0qaRSqaSf\nfvpJnleTTMePHy81adJEziMpKUlSqVRSaGio5OjoKJer4r1+99138rrz5s2TVCqVlJ2drTfv3mPn\nv//9r6RSqaRZs2bJ82JjYyWVSiVFRkbqLLtnzx5531VHxfH6ww8/6MyfPHmypFKppK+//lqeV5v9\n3qlTpyrXu9c///wjqVQqyd7eXicXSZKkRx55RHJ1ddWZ17VrV6lz585SQUGBzvydO3dKKpVK2rx5\nszzPUN4jR46U1Gq19Ouvv+qsP2rUKEmlUkljx46tddnu/bxXqO7nviovv/yypFKppBEjRujMP3Lk\niKRWq6XBgwfL8yrOVVu2bKnydapT5qr88ssvkkqlkqKjo+V5Xl5eUmhoqKRSqaRvvvlGkiRJKi8v\nl5o3by4NGzZMXq4iz/fee09x3r3/Vp38y8rKJHd3d0mr1eockyUlJZK/v79kYWEhZWVlyfM9PDz0\nzn+SZDg/pfNxVQoLC/XmlZeXS0FBQZKTk5POebHiOA0ODtY7r61YsUJSqVRSXFyczvwbN25I7u7u\nUlBQkM7827dv6233888/19k3Sgx9ZioYykylUkkWFhZSamqqzvwhQ4ZIVlZWOjn4+flJ1tbWOvuh\npKRE6t27t94x8N1330kqlUr67LPPdF63rKxM6tmzp84xW3GcNGnSRDpx4oTwPSq9n8r/Zugz+9pr\nr0kqlUo6efKkPO+NN96QbG1tpT/++ENn2ezsbMnR0VEKDw8XlqUmn3FJkqSioiK914iPj5dUKpW0\nZMkSnflVfa9fv35dUqlU0muvvSYsH9UPNlV6AERFRWH//v16f/v27avW+s7OzgDu/oJW2zaGO3fu\nRMuWLREZGalXthYtWmDnzp3yvF27dsHNzQ1jxozRWVbpl4RHH30U/fr105tvY2Mj/39JSQmuXr2K\n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\niWsolDXx29/+Vq1atVJycrJWrFhRwxV6y5ZPdna2GjRooNTUVKWmpurhhx/2oErvjBgxQnFxcUpK\nSqrynEheP5I9o0hfQ0VFRbr00kuVmJioDh066Nlnn630vEhdR6HkE+lr6MCBA0pLS1NKSorat2+v\nsWPHVnreMa0hByetNWvWOGvXrnXS09OdL774osrzEhISnO3bt9dgZf4RSkY//vij06JFC+ebb75x\nSkpKnOTkZGf16tU1XKk37r33Xufxxx93HMdxHnvsMef++++v9LxIW0OhrIl3333X6dOnj+M4jpOX\nl+ekpaV5UaonQsnnww8/dPr16+dRhd5bunSps3z5cqdDhw6VXh/J66eMLaNIX0NbtmxxVqxY4TiO\n4+zevdtp3bo134eOEEo+kb6GHMdx9u7d6ziO4xw8eNBJS0tzPvroo3LXH+sa4hmHk1jbtm3VunXr\nkM51InRHWigZLVu2TC1btlRCQoLq1KmjQYMGac6cOTVUobfmzp2roUOHSpKGDh2qt99+u8pzI2kN\nhbImjswuLS1NO3bs0NatW70ot8aF+jUTSWvmaBdffLHOPPPMKq+P5PVTxpaRFNlr6Oyzz1ZKSook\nqX79+mrXrp02b95c7pxIXkeh5CNF9hqSpOjoaElSSUmJSktLg/PEZY51DdE4RIBAIKCePXuqS5cu\neumll7wux3c2bdqk+Pj44HHTpk21adMmDyuqOVu3blVcXJwkKS4urspvFpG2hkJZE5WdEynveh9K\nPoFAQLm5uUpOTlbfvn21evXqmi7T1yJ5/YSKNfSzwsJCrVixQmlpaeUuZx0dVlU+rCHp0KFDSklJ\nUVxcnC699FK1b9++3PXHuoZ88XKsqFoob5xnk5OToyZNmuh///ufMjIy1LZtW1188cUnulTPVDej\nQCDgRlm+UVU+f/nLX8odBwKBKrMI9zV0tFDXxNF/yQr3tVQmlP/PTp06qaioSNHR0frnP/+p/v37\n66uvvqqB6k4ekbp+QsUaOmzPnj0aOHCgnnnmGdWvX7/C9ZG+jkz5sIakqKgo5efna+fOnerdu7ey\ns7OVnp5e7pxjWUM0Dj63aNGiat9HkyZNJElnnXWWrr76ai1btiysfumrbkbnnnuuioqKgsdFRUVq\n2rRpdcvyDVM+cXFxKi4u1tlnn60tW7aocePGlZ4X7mvoaKGsiaPP2bhxo84999waq9FLoeQTExMT\n/LxPnz4aNWqUvvvuuwpPk0eqSF4/oWINSQcPHtSAAQN0/fXXq3///hWuj/R1ZMuHNfSzBg0aOwZO\nuwAADQhJREFU6Je//KU+//zzco3Dsa4htiqFiar28O3bt0+7d++WJO3du1cLFy40vspHOKsqoy5d\numjdunUqLCxUSUmJZs2apczMzBquzhuZmZmaMWOGJGnGjBmVfuONxDUUyprIzMzUyy+/LEnKy8vT\nGWecEdz2Fe5CyWfr1q3Br7lly5bJcZyI/GFdlUheP6GK9DXkOI5uvPFGtW/fXqNHj670nEheR6Hk\nE+lraNu2bcFXS9y/f78WLVqk1NTUcucc8xo6AQPb8Mibb77pNG3a1Klbt64TFxfnXHHFFY7jOM6m\nTZucvn37Oo7jOOvXr3eSk5Od5ORkJzEx0XnkkUe8LLnGhZKR4zjO/PnzndatWzstWrSIqIy2b9/u\nXH755U6rVq2cjIwM5/vvv3cchzXkOJWvicmTJzuTJ08OnnP77bc7LVq0cDp27Gh8ZbNwZMtn4sSJ\nTmJiopOcnOx07drV+eSTT7wst8YNGjTIadKkiVOnTh2nadOmzpQpU1g/R7FlFOlr6KOPPnICgYCT\nnJzspKSkOCkpKc78+fNZRz8JJZ9IX0OrVq1yUlNTneTkZCcpKckZP3684zjV+1nGG8ABAAAAsGKr\nEgAAAAArGgcAAAAAVjQOAAAAAKxoHAAAAABY0TgAAAAAsKJxAAAAAGBF4wAAPjFs2DD169evRh7r\nxx9/VNu2bbVkyRJJUmFhoaKiorR8+fIqbxPKOdU1ffr0cu/2GkmeffZZXX311V6XAQBVonEAgJ84\njqNf/OIXFd4Fed++fWrTpo1GjRrl6uMHAgEFAgFXH6PM9OnT1ahRI11yySUh36ZZs2YqLi5WcnKy\na3UNGjRI33zzjWv3f6JMmjRJzZs3V7169dSlSxd9/PHHxvPLmq6jPxYuXBg855ZbblFubq4+++wz\nt8sHgONC4wAAPwkEApoxY4Y+/PBDTZs2LXj5/fffL8dx9OSTT7r6+I7jqKbek3PixIkaPnz4Md0m\nKipKjRs3Vq1atVyqSqpbt64aNWrk2v2fCLNmzdLo0aP1wAMPKD8/X926dVOfPn1UVFRkve17772n\n4uLi4Mell14avK5u3bq65ppr9Nxzz7lZPgAcNxoHADhC8+bNNWHCBI0ZM0b//e9/tXjxYk2ePFnT\np09XvXr1Kr3NwoULdeqpp+q7774rd/kf/vCH4F/nt2/frl//+teKj49XdHS0OnTooOnTpxtrSU9P\n15133lnussq2M40fP14tW7ZUdHS0OnbsqJkzZxrvd/Xq1Vq1alWFZ1Ykae3aterRo4fq1aundu3a\nadGiRcHrjt6qlJ2draioKH3wwQdKS0vTaaedpgsuuEArVqwwPv6bb76pjh07Kjo6WrGxsUpPT9e3\n334rqeJWpcr+Sh8V9fOPrk2bNmnQoEFq2LChGjZsqCuvvFJff/218fGrKysrS8OHD9eNN96oNm3a\n6Nlnn1WTJk30/PPPW2/bsGFDNW7cOPhRp06dctdfddVVmj17tkpLS90qHwCOG40DABxl5MiRuuii\ni3T99ddrxIgRuueee9StW7cqz+/Zs6caNWqkN954I3iZ4zj6xz/+oRtuuEGS9MMPP6hLly569913\ntXr1at11110aOXKkPvjggyrvt7KtS0df9n//93+aNm2aJk2apDVr1mjs2LEaOXKk5s+fX+X9Ll26\nVPHx8TrrrLMqXHffffdp9OjRWrlypTIyMnTVVVdp8+bNVd6XdLhBGj9+vJYvX67Y2FgNHjy4ynOL\ni4s1aNAgDR8+XF9++aWWLl2qIUOGGM8v+ygqKlLnzp2Vnp4u6fAWsksvvVTR0dFaunSp8vLy1KRJ\nE/Xs2VP79++v8j779OmjmJgY40dVSkpKtHz5cvXq1avc5b169VJubm6Vtyvzq1/9SnFxcerRo4dm\nz55d4fouXbpo7969+vzzz633BQA1rbbXBQCAH02ePFnnn3++WrVqpYceesh4blRUlAYNGqSZM2dq\n5MiRkqScnBxt3LhRv/nNbyRJ55xzju65557gbW6++WZ98MEHevXVV3XZZZeFXNeR25n27t2rp556\nSosWLVL37t0lSeedd54+/fRTPffcc+rbt2+l97Fu3Tqdd955lV43atQoDRw4UJL0zDPP6L333tPz\nzz9vzOChhx4KzkqMGzdOPXr00ObNm3XOOedUOHfz5s368ccfNWDAADVr1kySlJiYWOV9N27cuFxt\nO3fuDM4FvPbaa5KkqVOnBs+ZPHmy4uLi9M477+iaa66p9D6nTp1qbCxMtm3bptLSUsXFxVWos7i4\nuMrbxcTE6Mknn1T37t1Vu3ZtzZkzR9ddd51mzJhRrtE688wzFRMTo6+++kppaWnHVSMAuIXGAQAq\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "from matplotlib import pyplot as plt\n", "\n", "markers = ['^', 'v', 'o', 'p', 'x', 's', 'p', ',']\n", "\n", "plt.figure(figsize=(13,8))\n", "\n", "\n", "for row in range(data.shape[0]):\n", " hist = np.histogram(data[row,:], bins=bins)\n", " plt.errorbar(hist[1][:-1] + bin_size/2, \n", " hist[0], \n", " alpha=0.3,\n", " xerr=bin_size/2,\n", " capsize=0,\n", " fmt=None,\n", " linewidth=8,\n", " )\n", "\n", "plt.legend(['sample %s'%i for i in range(1, 6)])\n", "plt.grid()\n", "\n", "\n", "plt.title('Histogram showing bar heights but without area under the bars', fontsize=18)\n", "plt.ylabel('count', fontsize=14)\n", "plt.xlabel('X value (bin size = %s)'%bin_size, fontsize=14)\n", "\n", "plt.xticks(bins + bin_size)\n", "\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": false }, "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.4.3" } }, "nbformat": 4, "nbformat_minor": 0 }