Skip to content

Instantly share code, notes, and snippets.

@cmrivers
Created April 5, 2015 21:50
Show Gist options
  • Save cmrivers/3bc17a48b3429020a129 to your computer and use it in GitHub Desktop.
Save cmrivers/3bc17a48b3429020a129 to your computer and use it in GitHub Desktop.
How do I make fully custom legends?
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Question: how do I (elegeantly) add fully custom legends in matplotlib?"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Populating the interactive namespace from numpy and matplotlib\n"
]
}
],
"source": [
"%pylab inline\n",
"import epipy\n",
"import seaborn as sns"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This function returns fig, ax object with two scatter plot objects and a fill_between object overlaid."
]
},
{
"cell_type": "code",
"execution_count": 68,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def time_plot(df, yticks, date1, date2, color_col, color_dict=None):\n",
" \"\"\"\n",
" df = pandas dataframe of line list\n",
" yticks = column with ytick labels, e.g. case number\n",
" date1 = start date, e.g. onset date\n",
" date2 = end date, e.g. death date \n",
" color = column with color identifiers, e.g. patient sex or outcome\n",
" color_dict = optional dictionary with color categories as keys, and colors as values\n",
" ------------\n",
" returns fig, ax\n",
" ------------\n",
" Example useage:\n",
" fig, ax = time_plot(cases, 'case_id', 'onset_date', 'combined_outcome_date', 'categorical_outcome')\n",
" \"\"\"\n",
" fig, ax = plt.subplots()\n",
" ax.xaxis_date()\n",
" ax.set_aspect('auto')\n",
" fig.autofmt_xdate()\n",
" \n",
" plt.ylim(-1, len(df))\n",
" plt.yticks(np.arange(len(df)), df[yticks].values)\n",
" \n",
" color_keys = df[color_col].values\n",
" if color_dict == None:\n",
" color_choices = sns.color_palette('deep', len(color_keys))\n",
" color_dict = dict(zip(color_keys, color_choices))\n",
" \n",
" counter = 0\n",
" \n",
" for ix in df[date1].order(ascending=False).index:\n",
" x1 = df.xs(ix)[date1]\n",
" x2 = df.xs(ix)[date2]\n",
" \n",
" y1 = counter\n",
" \n",
" col = color_dict[df.xs(ix)[color_col]]\n",
" \n",
" ax.scatter(x1, y1, color=col, label='Test1')\n",
" ax.scatter(x2, y1, color=col, label='Test2')\n",
" plt.fill_between([x1, x2], y1-.04, y1+.04, alpha=.8, color=col)\n",
"\n",
" counter += 1\n",
" \n",
" return fig, ax"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Generate example data using epipy"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"cases = epipy.generate_example_data(10, 30, 4, 5)\n",
"cases2 = epipy.generate_example_data(10, 30, 4, 5)\n",
"cases['Date2'] = cases2['Date']\n",
"cases = cases.head(10)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<div style=\"max-height:1000px;max-width:1500px;overflow:auto;\">\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>ID</th>\n",
" <th>Date</th>\n",
" <th>Cluster</th>\n",
" <th>sex</th>\n",
" <th>Date2</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td> 0</td>\n",
" <td>2014-01-28</td>\n",
" <td> ClusterR</td>\n",
" <td> Male</td>\n",
" <td>2014-01-26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td> 1</td>\n",
" <td>2014-02-03</td>\n",
" <td> ClusterR</td>\n",
" <td> Female</td>\n",
" <td>2014-02-03</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td> 2</td>\n",
" <td>2014-02-03</td>\n",
" <td> ClusterR</td>\n",
" <td> Male</td>\n",
" <td>2014-02-05</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td> 3</td>\n",
" <td>2014-02-09</td>\n",
" <td> ClusterR</td>\n",
" <td> Male</td>\n",
" <td>2014-02-09</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td> 4</td>\n",
" <td>2014-02-09</td>\n",
" <td> ClusterR</td>\n",
" <td> Male</td>\n",
" <td>2014-02-16</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" ID Date Cluster sex Date2\n",
"0 0 2014-01-28 ClusterR Male 2014-01-26\n",
"1 1 2014-02-03 ClusterR Female 2014-02-03\n",
"2 2 2014-02-03 ClusterR Male 2014-02-05\n",
"3 3 2014-02-09 ClusterR Male 2014-02-09\n",
"4 4 2014-02-09 ClusterR Male 2014-02-16"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cases.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"This is what happens if I include a legend inline."
]
},
{
"cell_type": "code",
"execution_count": 69,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x10b1101d0>"
]
},
"execution_count": 69,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10b110210>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = time_plot(cases, 'ID', 'Date', 'Date2', 'sex')\n",
"ax.legend()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The solution I use instead is to make an invisible layer (note the alpha=0), and make a legend out of that."
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/plain": [
"<matplotlib.legend.Legend at 0x10a5556d0>"
]
},
"execution_count": 65,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x10c1fc690>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = time_plot(cases, 'ID', 'Date', 'Date2', 'sex', legend=False)\n",
"color_dict = {'Male': 'b', 'Female':'r'}\n",
"lines = []\n",
"for key, value in color_dict.iteritems():\n",
" plt.scatter(cases['Date'][0], 1, color='b', alpha=0)\n",
" line = plt.Line2D(range(1), range(1), color=value, marker='o', markersize=6, alpha=.8, label=key)\n",
" lines.append(line)\n",
"\n",
"ax.legend(lines, [k for k in color_dict.iterkeys()])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 2",
"language": "python",
"name": "python2"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 2
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython2",
"version": "2.7.9"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment