{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import pandas as pd\n", "from pandas import DataFrame\n", "from numpy import random" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Example 1: Tufte Style Box+Whiskers" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
ABCDEFGH
05.8169514.3541975.0143164.9443325.2684594.1279294.4956786.285195
15.1409255.3840164.5850075.6988973.7539894.3858165.5959065.910020
23.9736974.2700815.3440236.3791016.2411634.1333446.6997463.925451
35.7231975.8905644.5282526.2886674.8733465.2366245.0742475.054928
45.3192664.8431605.3667034.2742353.9260084.9578357.7119744.995974
54.7951885.7319343.7599104.8749463.9777074.2844355.8209496.194236
66.1304951.7540584.9249195.2501455.2446395.1015376.1418145.193609
75.1040175.4005674.3182004.3064536.2804276.5553876.5856804.189265
86.0301865.2089924.5280605.0241454.6106653.6103163.9840904.892341
94.9619645.8123313.3881206.8225805.3830962.4594246.8067115.510672
105.4786555.5673324.0665576.0748576.7606325.6835616.2372182.985190
114.2611137.1668195.4232076.0938114.9947524.6706595.9877892.215282
125.2010854.8514064.6820303.6024034.6340484.5892444.5436794.680432
134.3124126.6178215.1729334.2433903.8668125.5684763.8700936.613179
144.2651705.0808823.5953703.3910883.9280885.6062414.9953474.873159
153.1125534.0183325.4507814.6620633.9359434.9654595.5825546.837429
165.3690335.3117574.3066535.1859484.1389515.9721535.8399153.526673
174.4976464.4072455.7029504.7943175.9833286.2575307.1554954.816282
184.8187143.2469484.6301783.3950233.8866525.1515106.3689071.870367
195.8715994.7333234.9870475.1658734.6682633.4794155.9387206.275684
206.3547284.0360875.0091826.5956825.3562265.2696464.5480964.632888
214.7841116.3584327.0494503.9072925.4361434.3288794.6884036.334957
224.1493673.9267024.3400544.5431433.9980854.5425396.3077954.257889
236.1097325.5410915.1422674.1342155.3601574.8484683.3140675.714349
244.3987074.5267394.4480234.1107016.1407053.6836534.9412404.754220
\n", "
" ], "text/plain": [ " A B C D E F G \\\n", "0 5.816951 4.354197 5.014316 4.944332 5.268459 4.127929 4.495678 \n", "1 5.140925 5.384016 4.585007 5.698897 3.753989 4.385816 5.595906 \n", "2 3.973697 4.270081 5.344023 6.379101 6.241163 4.133344 6.699746 \n", "3 5.723197 5.890564 4.528252 6.288667 4.873346 5.236624 5.074247 \n", "4 5.319266 4.843160 5.366703 4.274235 3.926008 4.957835 7.711974 \n", "5 4.795188 5.731934 3.759910 4.874946 3.977707 4.284435 5.820949 \n", "6 6.130495 1.754058 4.924919 5.250145 5.244639 5.101537 6.141814 \n", "7 5.104017 5.400567 4.318200 4.306453 6.280427 6.555387 6.585680 \n", "8 6.030186 5.208992 4.528060 5.024145 4.610665 3.610316 3.984090 \n", "9 4.961964 5.812331 3.388120 6.822580 5.383096 2.459424 6.806711 \n", "10 5.478655 5.567332 4.066557 6.074857 6.760632 5.683561 6.237218 \n", "11 4.261113 7.166819 5.423207 6.093811 4.994752 4.670659 5.987789 \n", "12 5.201085 4.851406 4.682030 3.602403 4.634048 4.589244 4.543679 \n", "13 4.312412 6.617821 5.172933 4.243390 3.866812 5.568476 3.870093 \n", "14 4.265170 5.080882 3.595370 3.391088 3.928088 5.606241 4.995347 \n", "15 3.112553 4.018332 5.450781 4.662063 3.935943 4.965459 5.582554 \n", "16 5.369033 5.311757 4.306653 5.185948 4.138951 5.972153 5.839915 \n", "17 4.497646 4.407245 5.702950 4.794317 5.983328 6.257530 7.155495 \n", "18 4.818714 3.246948 4.630178 3.395023 3.886652 5.151510 6.368907 \n", "19 5.871599 4.733323 4.987047 5.165873 4.668263 3.479415 5.938720 \n", "20 6.354728 4.036087 5.009182 6.595682 5.356226 5.269646 4.548096 \n", "21 4.784111 6.358432 7.049450 3.907292 5.436143 4.328879 4.688403 \n", "22 4.149367 3.926702 4.340054 4.543143 3.998085 4.542539 6.307795 \n", "23 6.109732 5.541091 5.142267 4.134215 5.360157 4.848468 3.314067 \n", "24 4.398707 4.526739 4.448023 4.110701 6.140705 3.683653 4.941240 \n", "\n", " H \n", "0 6.285195 \n", "1 5.910020 \n", "2 3.925451 \n", "3 5.054928 \n", "4 4.995974 \n", "5 6.194236 \n", "6 5.193609 \n", "7 4.189265 \n", "8 4.892341 \n", "9 5.510672 \n", "10 2.985190 \n", "11 2.215282 \n", "12 4.680432 \n", "13 6.613179 \n", "14 4.873159 \n", "15 6.837429 \n", "16 3.526673 \n", "17 4.816282 \n", "18 1.870367 \n", "19 6.275684 \n", "20 4.632888 \n", "21 6.334957 \n", "22 4.257889 \n", "23 5.714349 \n", "24 4.754220 " ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = DataFrame(random.normal(5, 1, size=(25,8)), columns=list(\"ABCDEFGH\"))\n", "df" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A 5.039220\n", "B 4.961633\n", "C 4.790568\n", "D 4.950532\n", "E 4.905931\n", "F 4.778803\n", "G 5.569445\n", "H 4.901587\n", "dtype: float64" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.mean(axis=0)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "import matplotlib\n", "from matplotlib import pyplot as plt" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "matplotlib.rcParams[\"font.size\"] = 16" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = plt.subplots()[1]\n", "ax.spines['right'].set_visible(False)\n", "ax.spines['top'].set_visible(False)\n", "\n", "plt.xlabel(\"X label here\")\n", "plt.ylabel(\"Y label here\")\n", "\n", "ax.set_xlim(0.5, len(df.columns)+0.5)\n", "ax.set_ylim(0, 8)\n", "ax.set_xticklabels(list(df.columns))\n", "ax.set_xticks(range(1, len(df.columns)+1))\n", "\n", "for i, col in enumerate(df.columns):\n", " s = df[col]\n", " \n", " # mean\n", " x = i+1\n", " y = s.quantile(0.5)\n", " ax.plot(x, y, 'ro')\n", " \n", " y1 = s.quantile(0.75)\n", " y2 = s.quantile(1)\n", " ax.plot((x, x), (y1, y2), 'k')\n", " \n", " y1 = s.quantile(0)\n", " y2 = s.quantile(0.25)\n", " ax.plot((x, x), (y1, y2), 'k')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# Example 2: Std Dev Ranges" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "dfs = []\n", "\n", "for i in range(5):\n", " df = DataFrame()\n", " df[\"x\"] = list(range(4))\n", " df[\"A\"] = df[\"x\"] + random.normal(size=4) * 0.2\n", " df[\"B\"] = 2 + random.normal(size=4) * 0.3\n", " df[\"trial\"] = i\n", " dfs.append(df)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
xABtrial
00-0.2501731.5764470
111.0612772.0894030
221.6685851.4859250
332.7692401.7330160
000.0255201.8861201
111.2678881.8096731
222.0835321.8784831
332.8709922.5975681
000.2960731.6940592
111.1888752.4321312
222.0368371.8197962
332.7832692.1082342
00-0.0047102.1158093
111.0687031.4670823
222.1935442.0411473
333.3372621.7787433
00-0.2336132.2505264
111.1426501.9969934
221.7481662.3213814
332.7609142.1053264
\n", "
" ], "text/plain": [ " x A B trial\n", "0 0 -0.250173 1.576447 0\n", "1 1 1.061277 2.089403 0\n", "2 2 1.668585 1.485925 0\n", "3 3 2.769240 1.733016 0\n", "0 0 0.025520 1.886120 1\n", "1 1 1.267888 1.809673 1\n", "2 2 2.083532 1.878483 1\n", "3 3 2.870992 2.597568 1\n", "0 0 0.296073 1.694059 2\n", "1 1 1.188875 2.432131 2\n", "2 2 2.036837 1.819796 2\n", "3 3 2.783269 2.108234 2\n", "0 0 -0.004710 2.115809 3\n", "1 1 1.068703 1.467082 3\n", "2 2 2.193544 2.041147 3\n", "3 3 3.337262 1.778743 3\n", "0 0 -0.233613 2.250526 4\n", "1 1 1.142650 1.996993 4\n", "2 2 1.748166 2.321381 4\n", "3 3 2.760914 2.105326 4" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = pd.concat(dfs)\n", "df" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
trialx
00-0.2501731.576447
11.0612772.089403
21.6685851.485925
32.7692401.733016
100.0255201.886120
11.2678881.809673
22.0835321.878483
32.8709922.597568
200.2960731.694059
11.1888752.432131
22.0368371.819796
32.7832692.108234
30-0.0047102.115809
11.0687031.467082
22.1935442.041147
33.3372621.778743
40-0.2336132.250526
11.1426501.996993
21.7481662.321381
32.7609142.105326
\n", "
" ], "text/plain": [ " A B\n", "trial x \n", "0 0 -0.250173 1.576447\n", " 1 1.061277 2.089403\n", " 2 1.668585 1.485925\n", " 3 2.769240 1.733016\n", "1 0 0.025520 1.886120\n", " 1 1.267888 1.809673\n", " 2 2.083532 1.878483\n", " 3 2.870992 2.597568\n", "2 0 0.296073 1.694059\n", " 1 1.188875 2.432131\n", " 2 2.036837 1.819796\n", " 3 2.783269 2.108234\n", "3 0 -0.004710 2.115809\n", " 1 1.068703 1.467082\n", " 2 2.193544 2.041147\n", " 3 3.337262 1.778743\n", "4 0 -0.233613 2.250526\n", " 1 1.142650 1.996993\n", " 2 1.748166 2.321381\n", " 3 2.760914 2.105326" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df = df.set_index([\"trial\", \"x\"])\n", "df" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "trial x\n", "0 0 0.663137\n", " 1 1.575340\n", " 2 1.577255\n", " 3 2.251128\n", "1 0 0.955820\n", " 1 1.538780\n", " 2 1.981007\n", " 3 2.734280\n", "2 0 0.995066\n", " 1 1.810503\n", " 2 1.928317\n", " 3 2.445751\n", "3 0 1.055549\n", " 1 1.267893\n", " 2 2.117345\n", " 3 2.558002\n", "4 0 1.008456\n", " 1 1.569822\n", " 2 2.034773\n", " 3 2.433120\n", "dtype: float64" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.mean(axis=1)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "A 1.490742\n", "B 1.959393\n", "dtype: float64" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.mean(axis=0)" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
x
0-0.0333811.904592
11.1458791.959057
21.9461331.909347
32.9043352.064577
\n", "
" ], "text/plain": [ " A B\n", "x \n", "0 -0.033381 1.904592\n", "1 1.145879 1.959057\n", "2 1.946133 1.909347\n", "3 2.904335 2.064577" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "mean = df.mean(level=1)\n", "mean" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
AB
x
00.2235640.281348
10.0863980.355873
20.2261310.306350
30.2459750.346150
\n", "
" ], "text/plain": [ " A B\n", "x \n", "0 0.223564 0.281348\n", "1 0.086398 0.355873\n", "2 0.226131 0.306350\n", "3 0.245975 0.346150" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "std = df.std(level=1)\n", "std" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "ax = None\n", "colors = [\"black\", \"gray\"]\n", "for col in reversed(df.columns):\n", " ax = mean[col].plot.line(color=colors.pop(0), ax=ax)\n", " plt.fill_between(mean.index, mean[col]-std[col], mean[col]+std[col],\n", " color='black', alpha=0.1)\n", " \n", "ax.legend(frameon=False, ncol=2)\n", "ax.set_xlabel(\"x label here\")\n", "ax.set_ylabel(\"y label here\")\n", "ax.spines['right'].set_visible(False)\n", "ax.spines['top'].set_visible(False)" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "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.7.2" } }, "nbformat": 4, "nbformat_minor": 2 }