{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "fzlOCgGQRw3o" }, "source": [ "# matplotlib 入門 (12) nitta@tsuda.ac.jp\n", "\n", "# Chapter 12: Bar Graph (2)" ] }, { "cell_type": "markdown", "metadata": { "id": "jsspHSOdR6wO" }, "source": [ "## 12-1: Generate a normal distribution histogram and draw the lines of probability density his\n", "
\n",
    "    Axes.hist(x,\n",
    "              bins=None,  # number of bin(class)\n",
    "              range=None,  # lower and upper limits of class\n",
    "              density=None,  # frequency if False, probability otherwise. \n",
    "                             #The return value is F (list of values, list of lower bounds, patch object)\n",
    "              histtype='bar', # type of bar (bar/barstacked/step/stepfilled)\n",
    "              align='mid',    # position of bar (left/mid/right)\n",
    "              orientation='vertical', # bar orientation (horizontal/vertical)\n",
    "              color=None,\n",
    "              **kwargs   # specify the properties of Patch class\n",
    "             )\n",
    "
\n", "\n", "Normal distribution probability density function\n", "\n", "$\\displaystyle\n", "f(x) = \\frac{1}{\\sqrt{2\\pi \\rho}}\n", "e^{\\frac{(x - \\mu)^2}{2 \\sigma^2}}\n", "$
\n", "where $\\mu$: the average, $\\sigma^{2}$: the variance." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 406 }, "executionInfo": { "elapsed": 578, "status": "ok", "timestamp": 1648475365856, "user": { "displayName": "Yoshihisa Nitta", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgJLeg9AmjfexROvC3P0wzJdd5AOGY_VOu-nxnh=s64", "userId": "15888006800030996813" }, "user_tz": -540 }, "id": "-d9A7eW-RwXB", "outputId": "9ea9f969-1849-4b83-fb83-ed4cfa5b7ef1" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# sample code 12-1\n", "# Generate histogram and draw a line for the probability density function\n", "%matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "np.random.seed(0)\n", "\n", "mean = 50.\n", "std_dev = 15. # standard deviation\n", "\n", "def f(x, mean, std_dev):\n", " return 1./(np.sqrt(2*np.pi) * std_dev) * np.exp(-(x - mean)**2/(2 * std_dev * std_dev))\n", "\n", "data = np.random.normal(mean, std_dev, 500) # prepare 500 data\n", "n_bins = 40 # number of classes\n", "\n", "fig, ax = plt.subplots(1, 1, figsize=(8,6))\n", "\n", "n, bins, patches = ax.hist(\n", " data,\n", " n_bins,\n", " density=True, # probability\n", ")\n", "\n", "# draw probability density function\n", "y = f(bins, mean, std_dev)\n", "ax.plot(bins, y, linewidth=2, color=\"orange\")\n", "\n", "# display label of axis and title\n", "ax.set_xlabel('Sampled data')\n", "ax.set_ylabel('Probability density')\n", "ax.set_title(r'Normal distribution: $\\mu=100$, $\\sigma=15$')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "YT-5KtNeW0az" }, "source": [ "## 12-2: Bins of different widths are arranged side by side and automatically aggregated and plotted hist\n", "\n", "An array of 10 numbers in ascending order \n", "
\n",
    "bins = [ 0, 20, 30, 40, 45, 50, 55, 60, 70, 100 ]\n",
    "
\n", "represents the next 10 bins.\n", "
\n",
    "     0 - 19\n",
    "    20 - 29\n",
    "    30 - 40\n",
    "    40 - 44\n",
    "    45 - 49\n",
    "    50 - 54\n",
    "    55 - 59\n",
    "    60 - 69\n",
    "    70 - 79\n",
    "    80 - 99\n",
    "
" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 390 }, "executionInfo": { "elapsed": 269, "status": "ok", "timestamp": 1648475366123, "user": { "displayName": "Yoshihisa Nitta", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgJLeg9AmjfexROvC3P0wzJdd5AOGY_VOu-nxnh=s64", "userId": "15888006800030996813" }, "user_tz": -540 }, "id": "1ErBzpMKVdpS", "outputId": "69652558-af22-46f1-f265-7faf5f38daee" }, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# sample code 12-2\n", "# Generating a histogram with the number and width of bins\n", "%matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "np.random.seed(0)\n", "\n", "mean = 50.\n", "std_dev = 15. # standard deviation\n", "\n", "data = np.random.normal(mean, std_dev, 500) # prepare 500 data\n", "\n", "bins = [ 0, 20, 30, 40, 45, 50, 55, 60, 70, 100 ]\n", "n_bins = len(bins) - 1\n", "\n", "fig, ax = plt.subplots(1, 2, figsize=(12,6))\n", "\n", "n1, bins1, patches1 = ax[0].hist(\n", " data,\n", " n_bins,\n", " density=True, # probability\n", " histtype='bar',\n", " rwidth=0.8\n", ")\n", "ax[0].set_title('monospaced bin')\n", "\n", "n2, bins2, patches2 = ax[1].hist(\n", " data,\n", " bins,\n", " density=True, # probability\n", " histtype='bar',\n", " rwidth=0.8\n", ")\n", "ax[1].set_title('various width bins')\n", "\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "8tpdmWjlZiB7" }, "source": [ "## 12-3: Combine multiple data into one histogram\n", "\n", "By increasing the number of bars drawn in the bin of the histogram, the distribution of multiple data can be combined into one graph." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "executionInfo": { "elapsed": 4, "status": "ok", "timestamp": 1648475366123, "user": { "displayName": "Yoshihisa Nitta", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgJLeg9AmjfexROvC3P0wzJdd5AOGY_VOu-nxnh=s64", "userId": "15888006800030996813" }, "user_tz": -540 }, "id": "4k2KlAjzZxvx", "outputId": "925a0543-8d60-4f70-92f5-4d70eea089ef" }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[[1]\n", " [2]\n", " [3]]\n", "[[1 4]\n", " [2 5]\n", " [3 6]]\n", "[[1 4 7]\n", " [2 5 8]\n", " [3 6 9]]\n" ] } ], "source": [ "# explanationof numpy.c_ \n", "# Slice data to concatenate along the second axis.\n", "\n", "import numpy as np\n", "a = np.array([1,2,3])\n", "b = np.array([4,5,6])\n", "c = np.array([7,8,9])\n", "\n", "x = np.c_[a]\n", "print(x)\n", "y = np.c_[a,b]\n", "print(y)\n", "z = np.c_[a,b,c]\n", "print(z)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 281 }, "executionInfo": { "elapsed": 776, "status": "ok", "timestamp": 1648475366896, "user": { "displayName": "Yoshihisa Nitta", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgJLeg9AmjfexROvC3P0wzJdd5AOGY_VOu-nxnh=s64", "userId": "15888006800030996813" }, "user_tz": -540 }, "id": "z22krIQVY_dF", "outputId": "42355352-8a70-458a-cdcc-cb809829acc2" }, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAskAAAEICAYAAACtaWlhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nO3deZhU5Zn38e9PVJigglFCiGA3TggK7jaaGVx444aJATNxwWUCUS8iatQ4S8w44543JOOVqBkyBqNRExkXjBEdHeMSnbhgaBSNgL6iNohBbQExiCAN9/vHOd0WRTVd3V1bV/0+11VXnzrnOaee03D3ueucZ1FEYGZmZmZmn9iq3BUwMzMzM6s0TpLNzMzMzLI4STYzMzMzy+Ik2czMzMwsi5NkMzMzM7MsTpLNzMzMzLI4SS4CSU2Sjih3Pdoj6XpJ/7aF7ZdJ+nUnjheSPl+Y2hWGpEmSnix3PcwKQdLjks4swHHajW1JYyQt7e5nmJVbKeKlnCT1lrRA0qACHe8qSe9JelvSrpJWS+qVbmv7XXbnupq5b1r/lyUNKET9i8lJcg2KiLMi4krwhdGsWCr1AmtWiaopXkpwo2wy8L8Rsay7B5K0K/APwIiI+GxELImI7SJiQ7dr2Y6IWAfcBFxUrM8oFCfJFUwJ/xuZWY8iaety18Gsip0F/KpAx9oVWB4R7xboePmaAUyU1LvEn9spTsCKZ1T6OGSlpF9K6gMgaUdJ90tqTrfdL2lw607po43vS3oKWAPslj6meF3SXyS9IenU7A+T1EfSR5J2Tt9fLKlF0g7p+yslXZMu35w+XukLPAh8Ln28slrS59JDbivp1vQz50tqyOek08coV0taIumdtGnHX2Vs/2dJyyT9WdKZmU01trRv6x1vSf8g6d30GN/MOO5OkmZJ+kDSH4G/zv+fyqzrJH1X0ltprLwi6XBJY4F/AU5K4+qFtOw3JS1My74u6VtZxxovaV76//i19DjZnzdI0ouS/il9/0VJT0t6X9ILksZklB0q6Yn08x4Gds7jfP4lffTalPm3RtJXJD2f1u1NSZdlbKtPY/kMSUuAxzr7e7TaUC3xImlnJdfv9yWtkPQHSVtJ+hVJ4nlfei7/nMfnPi7pB5L+mJ7LvZI+3c7n7grsBjybtf+ZGe83aRaRxuZZkl5NP3+aEkcAD/NJDnBzRix3+EVX0u6SHk7P/xVJJ2Zs2+I1OSKWAiuBL3b0OWUVEX4V+AU0AS8BQ4BPA08BV6XbdgK+DnwK2B64C/htxr6PA0uAkcDWQD/gA2B4un0QMLKdz/1f4Ovp8u+A14BjMrZ9LV2+OaM+Y4ClWce5DFgLfBnoBfwAmL2F8w3g8+nyT4BZ6XlvD9wH/CDdNhZ4Oz23TwG/7sS+Y4AW4Apgm7Rua4Ad0+23A3cCfYE9gbeAJ8v9f8Gv6n4Bw4E3gc+l7+uBv06XLwN+nVX+KyQXCwGHpf+H90+3HQisAo4kuYGxC7B7uu1x4ExgKPD/gMnp+l2A5Wk8bJXuuxwYkG5/Bvgx0Bs4FPhLdp0y6tYaY63lDwM+zPjbMwbYK/2cvYF3gOMyzjuAW9MY/Kty/9v4VXmvKouXHwDXk1yPtgEOAZRuawKOyCjb0ec+TnLN2jONn7u38LlfAeZnrXscODPj/SQyrn9pbN4P9CdJ4JuBsem2MWTkABmxvHX2sTOPm9bzTeCbJLnKfsB7JM02II9rMsn1/rxy/7/c0st3kovnPyLizYhYAXwfOBkgIpZHxN0RsSYi/pJuOyxr35sjYn5EtJBctDYCe0r6q4hYFhHz2/nMJ4DD0m+AewPXpe/7AKNIEuV8PRkRD0TSLulXwD4d7SBJJG2lvhMRK9Lz+7/AhLTIicAv03NbQ/JHMd99AdYDV0TE+oh4AFgNDFfSweDrwCUR8WFEvATc0olzNeuqDSQX1BGStomIpoh4rb3CEfHfEfFaJJ4g+TJ7SLr5DOCmiHg4IjZGxFsR8XLG7iOA3wOXRsT0dN1pwANprG6MiIeBRuDL6R2nUcC/RcS6iPhfki+eHWkt/wTw3yRxS0Q8HhF/Sj/nReC/2Pxv12VpDH6Ux+dY7ammeFlPctOqLr0m/SHSzC+Hdj83o8yvIuKliPgQ+DfgxPTalq0/SfLeWVMj4v2IWELye9m3C8fIdCzQFBG/jIiWiHieJLk/oRPX5L+QnE/FcpJcPG9mLC8GPgcg6VOSfi5psaQPSBLX/lnB0LZvGjAnkbRBWibpvyXt3s5nPkHyrXB/4E8kj1EOI3mcsSgilnei/m9nLK8B+uTx+GUAyR3iuekjnfeB/0nXQ/I7yPy9vNmJfSFpN9WSVa/t0jJbs/nv3KyoImIRcAHJF753Jd2uT5osbUbSMZJmp48n3ye5SLY+0h1C8vSnPaeS3I2ZmbGujuSi9H5G3BxMcvH+HLAy/RvSqqO4yFW+9W/XQZJ+r6Sp2CqSv0nZj6PfxKwdVRYv/w4sAn6XNgXZUie0LX1uq+zr1zbkbu6xkuRJa2dlX9O368IxMtUBB2Wd06nAZ8n/mrw98H4361FUTpKLZ0jG8q7An9PlfyB55HRQROxA8kgHksdJrTb5NhoRD0XEkSQB9TJwQzuf+XR67K8BT0TEgvSzv0ySQOfS3jffrngP+IikOUj/9NUvIlqDcRkwOKP8kE7suyXNJHfcs3/nZkUXETMi4mCSi0YAP2zdlFlOSQeVu4GrgYER0R94gE9i/0223Jb+MpI4mZHxpfpNkjtQ/TNefSNiKkm87aik70GrjuIiV/nWv10zSB6PDomIfiSPmpW1fyH/nlgVqpZ4iYi/RMQ/RMRuwDjgQkmH5zqXDj63Vfb1a31a/2wvAkOzblp9SHKTqdVn26t3Ab1JkmdkntN2ETGF/K/JewAvlKCuXeYkuXjOkTQ4bXx/MXBHun57kmTw/XTbpVs6iKSBSjon9AXWkTQx2JirbNqEYS5wDp8kxU+T3PFpL0l+B9hJUr+8z6wdEbGRJIH/iaTPpPXfRdLRaZE7gW9K2kPSp0geKeW775Y+dwPwG+Cy9E79CGBid8/HrCOShkv6UnpBX0sS263x+Q5Qr09GqNmW5FFzM9Ai6RjgqIzD3UgSH4cr6QC0S9ZTo/XACSRt/G5Nj/tr4KuSjpbUS0kH3jGSBkfEYpJHupdL2lbSwcBX8zit1vKHkDxSvStdvz2wIiLWSjoQOKUTvyqzqooXScdK+nzaVHAVSVOSzHPZLaN4u5+bUeY0SSPSa+MVwMzIMQxbJB3eFpG0yW41D/i79Pr3eZKmKMV2P/AFSX8vaZv0NUrSHvlckyXtQtL/aHYJ6tplTpKLZwZJ+6nXSR4JXZWuvwb4K5JviLNJmhRsyVbAhSR3c1aQNJ+YsoXyT5A8pvljxvvtaac9ctqG67+A19NHJu0++srTd0kCeLaS5iSPkNzdJiIeJGkn/fvWMuk+6zraNw/nkjw+epukY+Ivu3keZvnoDUwliee3gc8A30u3tSaXyyU9F0k7+/NIviyuJEkyZ7UeKCL+SNIJ5ickF90nSO62kVHmY+DvgIEk44y+BYwnGRmgmeTuzj/xyd/2U4CDSP52XErSsW5L3k7r9mfgNuCsjHaeZwNXSPoLcEl6HmadUU3xMozkGrWapMPfzyLi9+m2HwD/ml5T/zEi3uzgcyHp+3Nz+nvpk557e34O/H3G+58AH5Mk57eQxG5Rpf8+R5H0G/ozSb1/SPJvDB1fk08BbolkzOSK1doT06zkJO1BMgpI76y2xmZmZjVB0uMko1n8Is/yvYHngcOjABOKlFpa/xeAQ6P04zN3igd8t5KS9DWSdmWfIvnWeZ8TZDMzs/ykd19HlLseXZXWv70BCCqKm1tYqX0LeJekCcoGttx0xMzMzKws3NzCzMzMzCyL7ySbmZmZmWWpuDbJO++8c9TX15e7GmYVY+7cue9FxICOS5aHY9ZsU5Ucs45Xs01tKV4rLkmur6+nsbGx3NUwqxiSOjV7oKSxwLVAL+AXWQPWZ5b7OslsVKMiojFd9z2SMTY3AOdFxEMdfZ5j1mxTnY3ZUnK8mm1qS/FacUmymXVdOrPUNOBIYCkwR9KsdPbFzHLbA+cDz2asG0Ey5uVIkilaH5H0hVwD2puZmVU7t0k2qy4HAosi4vV0IP3bSQaxz3YlyRB8azPWjQduj4h1EfEGm8/qZGZmVjOcJJtVl11IZnNqtTRd10bS/sCQiPjvzu6bcYzJkholNTY3N3e/1mZmZhXGzS2s5NavX8/SpUtZu3Ztx4VrSJ8+fRg8eDDbbLNN0T5D0lbAj4FJ3TlOREwHpgM0NDR4HMkq55jNrRQxa9ZZjtfcuhKvTpKt5JYuXcr2229PfX09kspdnYoQESxfvpylS5cydOjQ7hzqLWBIxvvB6bpW2wN7Ao+nv/vPArMkjctjX6tRjtnNFTBmzQrK8bq5rsarm1tYya1du5addtrJwZtBEjvttFMhvvnPAYZJGippW5KOeLNaN0bEqojYOSLqI6IemA2MS0e3mAVMkNRb0lBgGPDH7lbIej7H7OYKGLNmBeV43VxX49V3kq0sHLybK8TvJCJaJJ0LPEQyBNxNETFf0hVAY0TM2sK+8yXdCSwAWoBzPLKFtXLMbs6/E6tU/r+5ua78Tpwkm1WZiHgAeCBr3SXtlB2T9f77wPeLVjkzM7MeIq8kudSTE1htKfQX3sijG1lTUxPHHnssL7300ibrx4wZw9VXX01DQ0NhK2VWRUods45Xs66rv6aexasKN79NXb86mi5oKtjxKlmHSbInJ+iZcl3E8kke8zYj6wNO8QAHZl2hywuTccaljkGzUihU0lmqZHPxqsUF/ftQiL9ZLS0tbL115TdmyKeGbZMTAEhqnZxgQVa51skJ/iljXdvkBMAbklonJ3imuxU3666WlhZOPfVUnnvuOUaOHMmtt966yfbtttuO1atXAzBz5kzuv/9+br75ZpqbmznrrLNYsmQJANdccw2jR48uef3Naonj1SpFoZLOQn1BrkRXXnklv/71rxkwYABDhgzhgAMO4P7772ffffflySef5OSTT2bMmDFceOGFrF69mp133pmbb76ZQYMG8dprr3HOOefQ3NzMpz71KW644QZ23313Jk2axA477EBjYyNvv/02P/rRjzj++OOLeh75jG5R9MkJPDGBlcMrr7zC2WefzcKFC9lhhx342c9+ltd+559/Pt/5zneYM2cOd999N2eeeWaRa2pmjleznqE11l544QUefPBBGhsb27Z9/PHHNDY2ct555/Htb3+bmTNnMnfuXE4//XQuvvhiACZPnsxPf/pT5s6dy9VXX83ZZ5/dtv+yZct48sknuf/++7nooouKfi7dvtddiMkJPDGBlcOQIUPa7iiddtppXHfddXnt98gjj7BgwScPUj744ANWr17NdtttV5R6mpnj1ayneOqppxg/fjx9+vShT58+fPWrX23bdtJJJwHJl96XXnqJI488EoANGzYwaNAgVq9ezdNPP80JJ5zQts+6devalo877ji22morRowYwTvvvFP0c8knSfbkBFaVsoeD2dL7zLEVN27cyOzZs+nTp09xK2hmbRyvZj1f3759gWRyj5EjR/LMM5u2vv3ggw/o378/8+bNy7l/796925ajoB2tcsunuYUnJ7CqtGTJkrYAnTFjBgcffPAm2wcOHMjChQvZuHEj99xzT9v6o446ip/+9Kdt79sLZjMrHMerWc8wevRo7rvvPtauXcvq1au5//77NyszfPhwmpub22J6/fr1zJ8/nx122IGhQ4dy1113AUki/MILL5S0/pk6vJPsyQms2ErwZTCn4cOHM23aNE4//XRGjBjBlClTuO+++9q2T506lWOPPZYBAwbQ0NDQ1inouuuu45xzzmHvvfempaWFQw89lOuvv748J2FWBuWI2VqIV0nDgTsyVu0GXALcmq6vB5qAEyNipZLb59cCXwbWAJMi4rlS1tkq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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# sample code 12-3\n", "# Combine 3 types of data into a histogram\n", "%matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "np.random.seed(0)\n", "\n", "a = np.random.randn(1000) # mu=0; sigma=1; np.random(mu,sigma,1000)\n", "b = np.random.randn(1000)\n", "c = np.random.randn(1000)\n", "# Concatenate a, b, c in the axis=1 direction\n", "x = np.c_[a,b,c]\n", "\n", "# Place a 1x3 grid on the Figure\n", "fig, ax = plt.subplots(1, 3, figsize=(4 * 3,4))\n", "\n", "n_bins = 10\n", "colors = ['blue','orange','green']\n", "\n", "ax[0].hist(\n", " x,\n", " n_bins,\n", " density=True,\n", " histtype='bar',\n", " color=colors,\n", " label=colors # legend\n", ")\n", "ax[0].legend(prop={'size':10}) # Display legend\n", "ax[0].set_title('bars with legend')\n", "\n", "\n", "ax[1].hist(\n", " x,\n", " n_bins,\n", " density=True,\n", " histtype='bar',\n", " color=colors,\n", " label=colors,\n", " stacked=True # Stackable bar\n", ")\n", "ax[1].legend(prop={'size':10})\n", "ax[1].set_title('stacked bar')\n", "\n", "\n", "ax[2].hist(\n", " x,\n", " n_bins,\n", " histtype='step', # Stepped and unfilled\n", " color=colors,\n", " label=colors,\n", " stacked=True # Stackable bar\n", ")\n", "ax[2].legend()\n", "ax[2].set_title('stacked step (unfilled)')\n", "\n", "\n", "#fig.tight_layout()\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": { "id": "zJ3NFtEvbwk7" }, "source": [ "## 12-4: Generate histogram of the cumulative frequency distribution (cumulative probability)\n", "\n", "The cumulative frequency distribution can be expressed by adding the frequencies of the bins.\n", "Converts the cumulative frequency to cumulative probability and draws a histogram where the bars are stepped towards brobability 1 (100%).\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 350 }, "executionInfo": { "elapsed": 507, "status": "ok", "timestamp": 1648475367401, "user": { "displayName": "Yoshihisa Nitta", "photoUrl": "https://lh3.googleusercontent.com/a-/AOh14GgJLeg9AmjfexROvC3P0wzJdd5AOGY_VOu-nxnh=s64", "userId": "15888006800030996813" }, "user_tz": -540 }, "id": "9GKQYHNcbAS9", "outputId": "69a9b64a-b0af-46e5-89fd-03ee7976e62a" }, "outputs": [ { "data": { "image/png": "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ERERkQihKZoiIiIiIiIRQgmeiIiIiIhIhChyz+BVrVrV1atXL9xhSBF38OBBypUrF+4wREJG33EpDvQ9l0in77j4s2TJkl3OuXNyulbkErx69eqxePHicIchRVxSUhIJCQnhDkMkZPQdl+JA33OJdPqOiz9mttnfNU3RFBERERERiRBK8ERERERERCKEEjwREREREZEIoQRPREREREQkQijBExERERERiRBK8ERERERERCKEEjwREREREZEIoQRPREREREQkQijBExERERERiRBK8ERERERERCKEEjwREREREZEIoQRPREREREQkQijBExERERERiRBK8ERERERERCKEEjwREREREZEIoQRPREREREQkQijBExERERERiRBK8ERERERERCKEEjwREREREZEIEbIEz8zeMLNfzOx7P9fNzMab2TozW25mcaGKRUREREREpDgoGcK+3wReAN7yc/1qoKHvuBj4l++niIiIiIgUR87BiRNw9CgcOwaVKweuP28e/PyzVz/tuOEGqF3bf5sPPoCZM+H4ce9ex4/DTTdBz575+17CJGQJnnNuvpnVC1DlOuAt55wDFphZJTM71zn3c6hiEhERERGR03T0KKSkQJkyEBPjv96GDTB5Mhw6BIcPez8bNoQ//9l/m9RUKFfOu4dzmcvN/LcbORLmz89c1qRJ4AQvORkmTsxcduGFSvDyQS1gS4bzrb4yJXgiIiIiIvlt9Wr49VfYv99L1FJSoFs3qFHDf5unnoJnn/XqHjt2qmz4cP9tfvoJHn00c9kVVwRO8EqU8EbTMiZ34I2ulS7tv12ZMtnLjh/3Xx+gVKnsZSdOBG5ThIQzwQuamQ0ABgBUr16dpKSk8AYkRd6BAwf0PZKIpu+4FAf6nkuk8/sdP3mSs5OTKblvH6VSUiiZkkLU4cNsvPPOgP3FDRxIhR9+yFSWfOgQe1u18tum7tq11N+9O1PZ5u+/Z2NSEkuW5NymxuZV9M5Stv+XX1ga4L/XJUvgnhIlKU3mRGv8M3NocdlZfts1O3CAqlnKZk5fyoaV0TnWb90aav/0ExdkKd+yYQPrI+Tvk3AmeNuAOhnOa/vKsnHOTQAmAMTHx7uEhISQByeRLSkpCX2PJJLpOy7Fgb7nEhEOHYJ162DHjlNHtWrQt6//7/jJk9CpU7bRrrpvvpnz6FSaevUgS4LX6vzzIdB/R8nJ2Yrqnn02dRMSSEzMuUkzqmRL8CpERQX87zUxEfpyFlU4kqn88UfasstlTeEyqFkzW9GkiRcxk5zv5RywfHm28jo1alAnQv4+CWeCNwsYbGZT8RZX2afn70RERESkyDtwALZvP5WsXXSR/7oLFkDHjpnLLrsM+vb13yYqCipVgj17Mpfv3QvnnOO/XQ4LlvS+LoV3fK+zzo4Ecn7WLiXF/z2Aw5TNXnjoUMA2AMfwpmKeIIqjlOEoZShFLtMtL7vM+zzKlPGmcpYpw8aX6gdu07EjvPqqlwynHQ0b5hpfURGyBM/MpgAJQFUz2wo8CpQCcM69DHwMXAOsAw4Bd4QqFhERERGRkHv+eXj8cfjtt1NlDzzgPcPmT07Pv+3Ykfu9KlfOnuD99lueE7wK7A98nwoVTr0uWdJL+HJ67i2DXVSFhx+Gs846dVSpEvg+wPls4BilSSUq17rphgzJVpT8Ui5tmjb1jggVylU0e+Vy3QF3h+r+IiIiIiKnbdUq+P572LzZOzZtghEjvBEjf0qXzpzcQe7JWhAJXk6LSH5LZdqyPnNh1ntn1bgxX3EZ+6lACjGkEMMPXBi4zbXXws6dXmIXHR14RUuffVSCJ5/MtV5WR3Ia+ZM8KxKLrIiIiIiI5Ju0uYiBkpWnnvKW+s/o978PnODVrZut6PN3dnDVO5nLMk2FPPtsb4pgxpUfDx70pnkGkEQCW6hD9/6VvZG5ypWhVq2Abbj7btoPzuP4StoInBQZSvBEREREJLLNnu0trLFmzaljxYrAe6XlkKyxeXPg+9Srl62oBrmM4JnB5Zd7WV/16t6IXo0afh6IO+UhxgDgXg3cvRQ/SvBEREREJLL99a9kW9N/zZrACV4OyRqbNgW+T1pSWLIkm0/U5GfO5Uca5R7fF1/kXkckSErwRERERKRocA5+/BGWLvUStuRk73zt2sALfzRunHOCd9VV/tuczgheuXKwZQucey71SuZhoRCRfKQET0RERESKhtRUiIvLvuT+unWBV0XMaZuC1auzFWV8JK8uDXmRa9hEPTZTlzHT6gW3lH6gUUGRAqAET0RERETC68QJL+Fatw5uuMF/vagoaNUK/ve/zOVr1uQ9wVu/PntZBpupR1c+Sj8fc0vA6iKFhhI8ERERESl4J07Avfd6UyeXL4cjR6BECW8T7UCrNsbF5ZzgBRIbCwMGeIle48bez/POO/P3IFIIKcETERERkYJXsiR8+KH3zFqa1FRvdcuLL/bfLi4uW9HkR1Zz2yPZq6YvRHn++fDKK2cWr0gRoQRPRERERPLPnj3w1Vfe4icPPhi4buvWmRM88Eb0AiV4bdtChw5eote6Nc36tGQtQTwbJ1JMKMETERERkTNz4gQMGQLz53sjcM55K5b88Y9QqZL/dnFx8P77mcuWLg18r6ZNISkp/XRln9MPWyQSlQh3ACIiIiJSxJUsCf/9r/csXdq8SOfg669zrG7mHdeMbJ1etosqfMLvvOflROS0KcETEREREf+2boVJkzI80OZHhw7Zy+bPD9jkf1zK9czkPDZzDr/ShU/g7rvPIFgRUYInIiIiIqc4561S+fDD3pYEderA7bd7WxgEcsUV2ctySfD2UYn/cD1bOA+wgHVFJDh6Bk9ERERETjGDvn1h7drM5fPnB97oO2OCd+GF3nnHjiEJUUT80wieiIiIiGTWtWv2snnzArepVw9mzoSff/b2pZswAXr0CEl4IuKfEjwRERGR4uDIEW8hlHvugQ0bAte99tpsRZsmzU9fHCXrke7666FGjfyNW0TyRAmeiIiISCSbNQuuuw6qVIGrr4YXXoAPPgjcpn17iIk5dd6yJVPoRUmOhzZWETljegZPREREJEKZwcMs50lmZSr/7P4P6XTfff4bli7tLbJSqRJccw3UqcNftAaKSJGgETwRERGRCPYR2adbdmAepKQEbvjQQ3DXXd4qmiJSZCjBExERESmK9uyB11+H2bMDVkumFduomamsNMfhs89CGZ2IhIkSPBEREZGi4tAhmD7dW8ykenXo3x+eeSaXRpY+irebykymN714B668MvTxikiB0zN4IiIiIoWIBXjWzS1cmX3rgaQk2LYNatXy2+557uPf/IEFXEIqUQBMqZQPwYpIoaMRPBEREZGiIj4eLrggc5lz3qheAKtoyv+4LD25E5HIpQRPREREpDBwDtauDVzHDG69NXv5O++EJiYRKXKU4ImIiIiEU0oK/Otf0KoVNGpEbbYErt+r16nX1avDffd5e9uJiKBn8ERERETC56GH4KWX4MCB9KIeTONZhvpvc9FFMHIkXHEFJCRAlKZdisgpGsETERERCZfDhzMldwC3EsR0y8ceg44dldyJSDZK8ERERETCZeDAbEVxfMeFrAlD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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "# sample code 12-4\n", "# Draw a histogram of cumulative probabilities\n", "%matplotlib inline\n", "\n", "import matplotlib.pyplot as plt\n", "import numpy as np\n", "\n", "np.random.seed(0)\n", "\n", "mean = 50.\n", "std_dev = 15. # standard deviation\n", "\n", "def f(x, mean, std_dev):\n", " return 1./(np.sqrt(2*np.pi) * std_dev) * np.exp(-(x - mean)**2/(2 * std_dev * std_dev))\n", "\n", "data = np.random.normal(mean, std_dev, 500) # prepare 500 data\n", "n_bins = 40 # number of classes\n", "\n", "fig, ax = plt.subplots(figsize=(15,5))\n", "\n", "\n", "n,bins,patches = ax.hist(\n", " data,\n", " n_bins,\n", " width=0.8,\n", " density=True, # probability\n", " histtype='bar', # stepping, no fill\n", " cumulative=True, # cumulative probability\n", " color='blue',\n", " label='Cumulative probability' # label of legend\n", ")\n", "\n", "prob = f(bins, mean, std_dev)\n", "y2 = prob.cumsum() # Calculate cumulative\n", "y2 /= y2[-1] # Divide by the last value so that the last value is 1.\n", "ax.plot(\n", " bins, # x-axis: lower limit of bin\n", " y2, # y-axis: cumulative probability\n", " linestyle='dotted',\n", " linewidth=5,\n", " color='red', # line color\n", " label='Cumulative Probability' # label of legend\n", ")\n", "\n", "# grid, legend, title, label of axis\n", "ax.grid(True)\n", "ax.legend(loc='right')\n", "ax.set_title('Cumulative histograms')\n", "ax.set_xlabel('mark')\n", "ax.set_ylabel('Likelihood of occurrence')\n", "\n", "ax.set_ylim(0.0, 1.1)\n", "\n", "plt.show()\n" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Y8HI-Ozxr28z" }, "outputs": [], "source": [] } ], "metadata": { "colab": { "authorship_tag": "ABX9TyPRzeQvbmoYVdbJamPCsUHl", "collapsed_sections": [], "name": "matplotlib_tutorial_12_en.ipynb", "provenance": [] }, "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.6.13" } }, "nbformat": 4, "nbformat_minor": 1 }