Skip to content

Instantly share code, notes, and snippets.

@bwengals
Created April 17, 2017 17:18
Show Gist options
  • Save bwengals/6b85c77fe35c7e412fa72aa3ccea10c1 to your computer and use it in GitHub Desktop.
Save bwengals/6b85c77fe35c7e412fa72aa3ccea10c1 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"ExecuteTime": {
"end_time": "2017-04-17T10:17:37.798071",
"start_time": "2017-04-17T10:17:36.855647"
}
},
"outputs": [],
"source": [
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from matplotlib.patches import Rectangle\n",
"%matplotlib inline\n",
"\n",
"import scipy as sp\n",
"import scipy.signal\n",
"\n",
"import cmocean"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Forest Plot\n",
"\n",
"with shaded posterior distributions instead of box-plots or 90% interval lines."
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"ExecuteTime": {
"end_time": "2017-04-17T10:17:40.878432",
"start_time": "2017-04-17T10:17:37.799609"
}
},
"outputs": [
{
"data": {
"image/png": "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\n+wEAAJCVTSVxIYT1nuQ93hB7eEg/j0h6pGH7/DrxvyHpN8abJQAAwMUnu98TBwAAAJI4AACALJHE\nAQAAZIgkDgAAIEMkcQAAABkiiQMAAMgQSRzeMdKLPYT0BSLDjYqftD8NiZ+0L0/Q90b6Kzy8XCbj\ntZJ61yY4vL9R49fqKwFFMTy2Vk7jk8HSubsd/2YmJy+iKVqtZG5xOe2vNaI+bZ+++MZJg057amh8\nqn5u1uKL5GCmY9Xnklb3o2LRag+tH3mu0nJ6bspkX8Pw+dWmWw6PT+tTZaU+vSdG7UuvLIf2na4J\naft0vFFqa8wm16+tXB8nXks32X7E8rSrbfaX/QLZONCe8HJPs4FU+tmamhsVAAAXqUnXP5bLDeFJ\nHAAAQIZI4gAAADJEEgcAAJAhkjgAAIAMkcQBAABkiCQOAAAgQyRxAAAAGSKJAwAAyBBJHAAAQIZI\n4gAAADJEEgcAAJAhkjgAAIAMkcQBAABkiCQOAAAgQ+2dngCwntfLUmEL+umXZVS2JNmV+vooxfnA\n5jaS1O3H/ZYN/aQ6LcuVft5YPFvbx7lOJ4o5fe5cLWYlGTuEOOL08nKtzXzS71KvV4tJj9Wpcyu1\nmO+9eVb9ynj9fohizpzrKT0U7VZ87H74g0X1+nHQ9Gy8HJ1+Yzk6pqEMCmm/0/H30Le++Zb6vTio\nmGrF+/DidxV6vSjGB65S8FpfPnlCoXKMu6dfVtnvR22Wzr6qslzbFspe7TzYjra12p3aPqwsn1JZ\nOe79cjkqz81eodT3fvjn6vZWzpff+9O/oFYxFcWcOXM8ml86lzNn34jqJenyvdeq+t1+eSWemyQd\nOHiz7LVz1WpP1/apM3e5QuUGKuYvi8q67FKF5H7ydDs6T8XpswrJhXTpbQel9tr8eitlNPb8ZVPR\nfStJnan4Gtkz36nFzM20om3XLMyoKJL7vRevR62kfn66Fd1fknTZdHzPHZifUZHEpDpFIScTnGm3\no36SoTXVqo/dKYpoWy85j5I0nbRL17n0epakqXbabz2mXbg2n1SRjDWOMpnPRvrYSZa0UGztszOe\nxGHX2ooErtE4N30askULRbqwNe3jODGjbFW/TTH9ZCFNY8bIZWsJXJM0KW74PKlJEzipPr80gZMU\nJXCSogROUi2BG8wv3tb0gZdua9qHNElKy02qCZykWgI3zvzS+oEiianPpZrADfqt9xKUXmtJueF+\n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\nPgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x7fca23110860>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(10,8))\n",
"ax = fig.add_subplot(111)\n",
"y_labels = []\n",
"\n",
"for i in range(10):\n",
" y_labels.append(\"Label \" + str(i+1))\n",
" \n",
" # fake data for each of the 10 stripes\n",
" data = np.random.randn(10000) + 0.1*i\n",
" \n",
" num_bins = 100\n",
" bin_edges = np.linspace(np.min(data), np.max(data), num_bins)\n",
" counts, _ = np.histogram(data, bins=bin_edges)\n",
" colors = counts / np.float(np.max(counts))\n",
" \n",
" # optional smoothing\n",
" #window_width = 11\n",
" #polynomial_interpolant_degree = 3 \n",
" #colors = sp.signal.savgol_filter(colors, window_width, \n",
" # polynomial_interpolant_degree)\n",
" \n",
" # make sure colors is normalized\n",
" colors = (colors - np.min(colors)) / (np.max(colors) - np.min(colors))\n",
"\n",
" stripe_width = 0.6\n",
" for j in range(len(bin_edges) - 1):\n",
" x1 = bin_edges[j]\n",
" x2 = bin_edges[j + 1]\n",
" # colormaps are callable, must take data between zero and one\n",
" # use a colormap that goes to white as colors[j] -> 0\n",
" patch_color = cmocean.cm.ice_r(colors[j])\n",
" \n",
" ax.add_patch(Rectangle((x1, i - stripe_width*0.5), x2 - x1, stripe_width,\n",
" facecolor=patch_color, ec=patch_color))\n",
" \n",
" # must set plot limits explicitly. The strips are drawn in a loop,\n",
" # after matplotlib sets the range\n",
" ax.set_ylim([-1, 10])\n",
" ax.set_xlim([-5, 5])\n",
" \n",
" # set y tick labels\n",
" ax.set_yticks(range(10))\n",
" ax.set_yticklabels(y_labels)"
]
}
],
"metadata": {
"anaconda-cloud": {},
"kernelspec": {
"display_name": "Python [default]",
"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.5.2"
}
},
"nbformat": 4,
"nbformat_minor": 1
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment