Skip to content

Instantly share code, notes, and snippets.

@phobson
Created December 23, 2014 07:12
Show Gist options
  • Save phobson/70b1e90ec40a4b1909bc to your computer and use it in GitHub Desktop.
Save phobson/70b1e90ec40a4b1909bc to your computer and use it in GitHub Desktop.
Fancy Boxplot demos
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:7ad1ef3bb50636bca1565a9a8165463fce0b168ea654e234610d6fa5dfd40400"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Boxplot Demo 2"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"\"\"\"\n",
"Thanks Josh Hemann for the example\n",
"\"\"\"\n",
"\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.cbook import boxplot_stats\n",
"%matplotlib inline\n",
"\n",
"\n",
"# Generate some data from five different probability distributions,\n",
"# each with different characteristics. We want to play with how an IID\n",
"# bootstrap resample of the data preserves the distributional\n",
"# properties of the original sample, and a boxplot is one visual tool\n",
"# to make this assessment\n",
"numDists = 5\n",
"\n",
"N = 500\n",
"np.random.seed(0)\n",
"dataRaw = [\n",
" np.random.normal(1, 1, N),\n",
" np.random.lognormal(1,1, N),\n",
" np.random.exponential(1, N),\n",
" np.random.gumbel(6, 4, N),\n",
" np.random.triangular(2, 9, 11, N),\n",
"]\n",
"\n",
"# Generate some random indices that we'll use to resample the original data\n",
"# arrays. For code brevity, just use the same random indices for each array\n",
"bootstrapIndices = np.random.random_integers(0, N-1, N)\n",
"dataBoot = [dr[bootstrapIndices] for dr in dataRaw]\n",
"\n",
"statsRaw = boxplot_stats(dataRaw)\n",
"statsBoot = boxplot_stats(dataBoot)\n",
"\n",
"fig, ax1 = plt.subplots(figsize=(10,6))\n",
"fig.subplots_adjust(left=0.075, right=0.95, top=0.9, bottom=0.25)\n",
"\n",
"offset = 0.20\n",
"positions = np.arange(1, numDists+1)\n",
"xlabels = randomDists = [\n",
" 'Normal(1,1)',' Lognormal(1,1)', 'Exp(1)',\n",
" 'Gumbel(6,4)', 'Triangular(2,9,11)'\n",
"]\n",
"\n",
"boxpropsRaw = {'facecolor': 'darkkhaki', 'edgecolor': 'black'}\n",
"boxpropsBoot = {'facecolor': 'royalblue', 'edgecolor': 'black'}\n",
"flierpropsRaw = {'marker': '+', 'markeredgecolor': 'darkkhaki', 'alpha': 0.675}\n",
"flierpropsBoot = {'marker': 'x', 'markeredgecolor': 'royalblue', 'alpha': 0.675}\n",
"whiskerprops = {'linestyle': '--', 'color': 'black'}\n",
"medianprops = {'linestyle': '-', 'color': 'black', 'linewidth': 1.5}\n",
"meanprops = {'marker': '*', 'markerfacecolor': 'white', 'markersize': 9}\n",
"\n",
"bpRaw = ax1.bxp(\n",
" statsRaw, \n",
" shownotches=False, \n",
" positions=positions-offset,\n",
" patch_artist=True,\n",
" showmeans=True,\n",
" meanline=False,\n",
" meanprops=meanprops,\n",
" boxprops=boxpropsRaw,\n",
" whiskerprops=whiskerprops,\n",
" medianprops=medianprops,\n",
" flierprops=flierpropsRaw,\n",
" widths=offset * 1.9\n",
")\n",
"\n",
"bpRaw = ax1.bxp(\n",
" statsBoot, \n",
" shownotches=False, \n",
" positions=positions+offset,\n",
" patch_artist=True,\n",
" showmeans=True, \n",
" meanprops=meanprops,\n",
" meanline=False,\n",
" boxprops=boxpropsBoot,\n",
" whiskerprops=whiskerprops,\n",
" medianprops=medianprops,\n",
" flierprops=flierpropsBoot,\n",
" widths=offset * 1.9\n",
")\n",
"\n",
"# Add a horizontal grid to the plot, but make it very light in color\n",
"# so we can use it for reading data values but not be distracting\n",
"ax1.yaxis.grid(True, linestyle='-', which='major', color='lightgrey',\n",
" alpha=0.5)\n",
"\n",
"# Hide these grid behind plot objects\n",
"ax1.set_axisbelow(True)\n",
"ax1.set_title('Comparison of IID Bootstrap Resampling Across Five Distributions')\n",
"ax1.set_xlabel('Distribution')\n",
"ax1.set_ylabel('Value')\n",
"\n",
"# Now fill the boxes with desired colors\n",
"boxColors = ['darkkhaki','royalblue']\n",
"numBoxes = numDists * 2\n",
"medians = range(numBoxes)\n",
"\n",
"# Set the axes ranges and axes labels\n",
"ax1.set_xticks(positions)\n",
"ax1.set_xticklabels(xlabels, rotation=45, fontsize=8, \n",
" horizontalalignment='right', \n",
" rotation_mode='anchor')\n",
"ax1.set_xlim(0.5, numDists+0.5)\n",
"ax1.set_ylim(bottom=-5, top=40)\n",
"\n",
"# Due to the Y-axis scale being different across samples, it can be\n",
"# hard to compare differences in medians across the samples. Add upper\n",
"# X-axis tick labels with the sample medians to aid in comparison\n",
"# (just use two decimal places of precision)\n",
"weights = ['bold', 'semibold']\n",
"top = ax1.get_ylim()[1]\n",
"for pos, raw, boot in zip(positions, statsRaw, statsBoot):\n",
" ax1.text(pos-offset, top-(top*0.05), '{:.2f}'.format(raw['med']),\n",
" horizontalalignment='center', color=boxColors[0])\n",
" \n",
" ax1.text(pos+offset, top-(top*0.05), '{:.2f}'.format(boot['med']),\n",
" horizontalalignment='center', color=boxColors[1])\n",
"\n",
"# Finally, add a basic legend\n",
"fig.text(0.80, 0.08, str(N) + ' Random Numbers' ,\n",
" backgroundcolor=boxColors[0], color='black', weight='roman',\n",
" size='x-small')\n",
"fig.text(0.80, 0.045, 'IID Bootstrap Resample',\n",
" backgroundcolor=boxColors[1], color='white', \n",
" weight='roman', size='x-small')\n",
"fig.text(0.80, 0.010, '*', color='white', backgroundcolor='silver',\n",
" weight='roman', size='medium')\n",
"fig.text(0.815, 0.013, ' Average Value', color='black', weight='roman',\n",
" size='x-small')\n",
"\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
"<matplotlib.text.Text at 0x105e9c590>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nioiIiEis/h+al8vjG7cP5wAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x1068cf650>"
]
}
],
"prompt_number": 3
},
{
"cell_type": "heading",
"level": 2,
"metadata": {},
"source": [
"Custom boxplot_stats demo"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.cbook import boxplot_stats\n",
"%matplotlib inline\n",
"\n",
"\n",
"def log_boxplot_stats(data):\n",
" raw_stats = boxplot_stats(data)\n",
" log_stats = boxplot_stats(data)\n",
" for n, d in enumerate(data):\n",
" \n",
" # log transform the data, and the quartiles\n",
" x = np.log(d)\n",
" q1 = np.log(raw_stats[n]['q1'])\n",
" q3 = np.log(raw_stats[n]['q3'])\n",
" iqr = q3 - q1\n",
" \n",
" # get lower whisker edges\n",
" loval = q1 - (1.5 * iqr)\n",
" whislo = np.compress(x >= loval, x)\n",
" if len(whislo) == 0 or np.min(whislo) > q1:\n",
" whislo = q1\n",
" else:\n",
" whislo = np.min(whislo)\n",
"\n",
" # get upper whisker edges\n",
" hival = q3 + (1.5 * iqr)\n",
" whishi = np.compress(x <= hival, x)\n",
" if len(whishi) == 0 or np.max(whishi) < q3:\n",
" whishi = q3\n",
" else:\n",
" whishi = np.max(whishi)\n",
"\n",
" # compress log-transformed data to just the outliers\n",
" # and transform back to arithmetic space\n",
" log_stats[n]['fliers'] = np.hstack([\n",
" np.exp(np.compress(x < whislo, x)),\n",
" np.exp(np.compress(x > whishi, x))\n",
" ])\n",
" \n",
" # un-transform whisker values\n",
" log_stats[n]['whishi'] = np.exp(whishi)\n",
" log_stats[n]['whislo'] = np.exp(whislo)\n",
" \n",
" return raw_stats, log_stats\n",
"\n",
"\n",
"boxpropsRaw = {'facecolor': 'cornflowerblue', 'edgecolor': 'black'}\n",
"boxpropsLog = {'facecolor': 'forestgreen', 'edgecolor': 'black'}\n",
"flierpropsRaw = {\n",
" 'marker': 'o', 'markeredgecolor': 'cornflowerblue', \n",
" 'markerfacecolor': 'none', 'alpha': 0.675\n",
"}\n",
"flierpropsLog = {\n",
" 'marker': 's', 'markeredgecolor': 'forestgreen', \n",
" 'markerfacecolor': 'none', 'alpha': 0.675\n",
"}\n",
"\n",
"bp_props = dict(\n",
" whiskerprops={'linestyle': '-', 'color': 'black'},\n",
" medianprops={'linestyle': '-', 'color': 'black', 'linewidth': 1.25},\n",
" showcaps=False,\n",
" manage_xticks=False,\n",
" patch_artist=True\n",
")\n",
"\n",
"np.random.seed(0)\n",
"N = 200\n",
"data = [\n",
" np.random.lognormal(mean=1.25, sigma=0.75, size=N),\n",
" np.random.lognormal(mean=2.0, sigma=0.25, size=N),\n",
" np.random.lognormal(mean=0.50, sigma=1.00, size=N)\n",
"]\n",
"positions = np.arange(1, len(data) + 1)\n",
"offset = 0.2\n",
"\n",
"raw_stats, log_stats = log_boxplot_stats(data)\n",
"\n",
"fig, ax = plt.subplots(figsize=(8, 4.25))\n",
"ax.bxp(raw_stats, positions=positions - offset, \n",
" boxprops=boxpropsRaw, \n",
" flierprops=flierpropsRaw, \n",
" **bp_props)\n",
"ax.bxp(log_stats, positions=positions + offset, \n",
" boxprops=boxpropsLog, \n",
" flierprops=flierpropsLog, \n",
" **bp_props)\n",
"ax.set_yscale('log')\n",
"ax.set_xlim(left=0+offset, right=4-offset)\n",
"ax.set_xticks(positions)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 26,
"text": [
"[<matplotlib.axis.XTick at 0x1075f0710>,\n",
" <matplotlib.axis.XTick at 0x1005f5b50>,\n",
" <matplotlib.axis.XTick at 0x106db6490>]"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nrkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x1075e8bd0>"
]
}
],
"prompt_number": 26
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment