Skip to content

Instantly share code, notes, and snippets.

@pelson
Last active December 17, 2015 21:40
Show Gist options
  • Save pelson/5676790 to your computer and use it in GitHub Desktop.
Save pelson/5676790 to your computer and use it in GitHub Desktop.
A summary of my matplotlib v1.3.0 feature enhancements
{
"metadata": {
"name": "Matplotlib v1.3.0 features"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For the v1.3.0 release of matplotlib I've added a couple of new features. This notebook documents some of the more interesting ones."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"I've made it simpler to create colorbars which represent multiple axes (subplots). It uses the older non-gridspec colorbar mechanism, so things like ``figure.tight_layout`` isn't yet supported, but it is a start:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"from matplotlib.ticker import MaxNLocator\n",
"\n",
"# Some random data...\n",
"data = np.linspace(0, np.pi * 2, 12).reshape(3, 4)\n",
"\n",
"# Pick the desired levels (no more than 16).\n",
"levels = MaxNLocator(16).tick_values(-data.max(), data.max())\n",
"\n",
"ax1 = plt.subplot(121)\n",
"plt.contourf(data, levels=levels)\n",
"\n",
"ax2 = plt.subplot(122)\n",
"plt.contourf(-data, levels=levels)\n",
"\n",
"# The \"use_gridspec=False\" keyword argument is currently necessary,\n",
"# but in the future this limitation could potentially be removed.\n",
"plt.colorbar(ax=[ax1, ax2], location='bottom', use_gridspec=False)\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\n"
}
],
"prompt_number": 5
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Before v1.3.0 it was quite a challenge to pick \"levels\" to map to colors for anything other than a contour/contourf. I've made that easier by adding a helper funcion (quite verbosely named...) which simplifies the process and mirrors the contourf API:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import matplotlib.colors as mcolors\n",
"\n",
"data = np.linspace(-2, 4, 49).reshape(7, 7)\n",
"levels = [-1, 2, 2.5, 3]\n",
"colors = ['red', 'green', 'blue', 'yellow', 'black']\n",
"extend = 'both'\n",
"cmap, norm = mcolors.from_levels_and_colors(levels, colors, extend=extend)\n",
"\n",
"ax = plt.axes()\n",
"plt.pcolormesh(data, cmap=cmap, norm=norm)\n",
"plt.colorbar()\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "iVBORw0KGgoAAAANSUhEUgAAAVgAAAEACAYAAAD2sW7aAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAFGNJREFUeJzt3X9Mlfehx/HPQWsxEYm0cOqAFEOq8uMAx8qaddQf3SxV\nYkMmtEoDS2sX7360ufxhbnJvmum6kMxu94aGdtmSzazXqmn3o3Md5U4rZywqLRkwRZPabjg4pa4b\npq2IKHC+9w+UesqPc4DzPQ8H3q/kSQ7P8+V5Pn+YT7/98jzPcRljjAAAERfndAAAmKsoWACwhIIF\nAEsoWACwhIIFAEsoWACwJGTBvvvuu/J6vaNbYmKiXnjhhWhkA4CY5prKfbCBQECpqal65513lJ6e\nbjMXAMS8KS0RHDt2TJmZmZQrAIRhSgV7+PBhVVRU2MoCAHNK2EsE169fV2pqqs6dO6fk5GTbuQAg\nLK+//roaGxtVW1vrdJSxTJhef/11U1xcPGa/JDY2NrawtszMzHArJyyDg4Oj5+7o6IjouSMh7Bns\n9u3btXnzZn39618P2u9yucL5dQCQJIVZOWH5fP9E8tyREFbBXrlyRXfffbc6OzuVkJAQfAIKFsAU\nRKoEh4aGdNtttwXt6+joUE5OTkTOHwlTuk1r3BNQsACmIFIFO1H3zKZZLE9yAYg5Q0NDEx47e/Zs\nFJNMjoIFEHM+vzRwq9zc3HH3DwwMqLCwUF6vVytXrlR1dfWYMdeuXdNjjz0mj8ejL3/5y/r73/8+\no5wULICYMtns9abxZrHx8fFqampSW1ubzp07p1OnTqmxsTFoTF1dnZYvX64zZ85o9+7deuaZZ2aU\nlYIFEFMmm73eNNEsdvHixZJG7usfHh6W2+0OOl5fX6/KykpJ0iOPPKKTJ0/OaE2XggUQM8KZvd40\n3iw2EAiooKBAbrdbGzduVHZ2dtBxv98/+iqAuLg43XHHHfroo4+mnZeCBRAzfvvb34Y99oc//OGY\nfXFxcWpvb5ff71dTU5N8Pl8E04210OrZASCCPvzwQ33721Jd3dhjPt/IJknvvz9yT+xEEhMTVVJS\noubmZm3YsGF0f1pamrq6upSSkqJAIKDe3t4ZvRqAGSyAOWHDBmnPnpGtslJKSkoKOt7b26vLly9L\nkq5evaqjR4/K4/EEjdmyZYsOHDggaWS2/KUvfUlxcdOvSWawAOaFnp4eVVVVyRijgYEBVVRUqKSk\nRN/97ne1du1abd26Vd/5zndUWVkpj8ejhIQEHTx4cEbXpGABzAsej0dtbW1j9u/du3f08+23365X\nX301YtdkiQAALKFgAcASChYALKFgAcASChYALKFgAcASChYALKFgAcASChYALKFgAcASChYALKFg\nAcASChYALAlZsB9//LHKy8uVn5+vrKwsnTp1Khq5ACDmhXxd4Te+8Q197Wtf044dOxQIBNTX1xeN\nXAAQ8yYt2N7eXrW3t+u1116TNPJ9NkuXLo1KMACIdZMuEbz33ntKTk7Wo48+qtzcXFVVVTGDBYAw\nTVqwgUBALS0t2r17tzo6OpSUlKTnnnsuWtkAIKZNukSQnp6u1NRUFRYWSpLKysomKFhjI9uMGONy\nOgLmOBf/xBDCpDPY9PR03XnnnTp//rwk6dixY8rKyopKMACIdSHvIvjZz36mxx9/XP39/br77rv1\nyiuvRCMXAMS8kAWbn5+vlpaWaGQBgDmFJ7kAwBIKFgAsoWABwBIKFgAsoWABwBIKFgAsoWABwBIK\nFgAsoWABwBIKFgAsoWABwBIKFgAsoWABwBIKFgAsoWABwBIKFgAsoWABwBIKFgAsoWABwBIKFgAs\noWABwBIKFgAsoWABwJKF4QzKyMjQ0qVLtWDBAt1222165513bOcCgJgXVsG6XC75fD4lJSXZzgMA\nc0bYSwTGGJs5AGDOCatgXS6XNm3apLy8PNXV1dnOBABzQlhLBM3NzUpJSdE///lPPfzww1q9erW+\n+tWv3jJizy2fN9zYAGB+C6tgU1JSJEnJyckqKytTS0tLcMHu2XvL6L2aDVyzIwYiYQ/LU3OHy+kA\nURVyiaC/v1/9/f2SpCtXrqihoUE5OTnWgwFArAs5g/3HP/6h0tJSuVwu9ff3a/v27XrkkUeikQ0A\nYlrIgl2xYoX+8pe/RCMLAMwpPMkFAJZQsABgCQULAJZQsABgCQULAJZQsADmhe7ubq1bt04ej0er\nVq3Svn37xozx+XxKTEyU1+uV1+vV97///RldM6wnuQAg1i1atEgvvfSScnNz1dfXpzVr1qi4uFj5\n+flB49avX68jR45E5JrMYAHMC263W7m5uZKkJUuWKC8vTz09PWPGRfLNgRQsgHnnwoULamlpUVFR\nUdB+l8ulU6dOyePx6Ctf+cqMH7JiiQDAnODzjWyS9P770qVLl8Yd19fXp/LyctXW1iohISHo2L33\n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\nAAAAAElFTkSuQmCC\n"
}
],
"prompt_number": 2
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In actual fact, it wasn't even possible to specify all of the levels to contourf before v1.3.0.\n",
"I've updated the contour family of routines to allow users to specify specific colors for the levels created by the \"extend\" keyword. If you can't spot the change (i.e. the fact that you can now specify ``n_levels+1`` colors) then the API change has been a sucess:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import matplotlib.colors as mcolors\n",
"\n",
"data = np.linspace(-2, 4, 49).reshape(7, 7)\n",
"levels = [-1, 2, 2.5, 3]\n",
"colors = ['red', 'green', 'blue', 'yellow', 'black']\n",
"extend = 'both'\n",
"\n",
"plt.contourf(data, colors=colors, levels=levels, extend=extend)\n",
"plt.colorbar()\n",
"plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nSUVORK5CYII=\n"
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"The matplotlib date handling has had a bit of TLC and can now support date ranges ``>160 years`` or ``<5 seconds``.\n",
"Again this is a pretty transparent change, so plots which previously had ugly ticks are now much more pleasant:"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"import datetime as dt\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"\n",
"\n",
"d1 = dt.datetime(1990, 1, 1)\n",
"\n",
"n = 365 * 200\n",
"x = np.array([d1 + dt.timedelta(days=i) for i in range(n)], dtype=object)\n",
"\n",
"y = np.sin(np.linspace(0, np.pi * 2, n))\n",
"\n",
"plt.figure(figsize=(16, 6))\n",
"plt.plot(x, y)\n",
"plt.xlabel('Years', size=15)\n",
"\n",
"plt.show()\n"
],
"language": "python",
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"png": "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\nFqVERERERETkMCxKiYiIiIiIyGFYlBIREREREZHDsCglIiIiIiIih2FRSkRERERERA7DopSIiMhG\nqampCAgIwKNHjwbNW7ZsGUJCQmCxWBywZURERM8uFqVEREQ22rdvH9rb27Fjxw6r6ceOHUNJSQkO\nHDgAZ2dnB20dERHRs2mCiIijN4KIiOhZsWvXLmzatAl1dXXQ6XS4f/8+goODERcXh6+//tou79nd\n3Q1XV1e7tE1ERORoPFNKRESkQnZ2NoKCgrBhwwYAwCeffIKHDx8iNzcXdXV1WL58Odzd3eHu7o5V\nq1ahra1NWffBgwdYs2YNAgICoNFo4OXlhczMTNy9e9fqPZycnLB792588MEH8Pb2RlhYGACgtLQU\nL730ElxdXTFlyhQYjUYUFBSM384TERHZAc+UEhERqXTp0iVERUVh69at2LZtGz7//HMsWbIE8+bN\nQ3R0NLKystDT04PNmzcDAK5evQpnZ2d0dHTgs88+Q0xMDHx8fGAymbBt2zbMmDEDxcXFSvtOTk54\n/vnnkZCQgLfffhs9PT2YN28eZs6cifT0dKSlpWHixImoqamBm5sbMjMzHZQEERHRP8eilIiIaAzW\nrFmDL7/8EosXL8b58+eRkZGBa9euobq6Gk5O/RciNTU1QafToaCgACtWrBjUhsViQVVVFRYuXIim\npiZotVoA/UVpZGQkLl68qCx78eJFREdH4/79+7yUl4iI/q/w8l0iIqIx+PDDDwEAOTk5AIBz585h\nxYoV6Ovrg8VigcViwYwZMxAQEIBLly4p6x04cAChoaFwcXGBRqPBwoULAQANDQ1W7SclJVm9Dg4O\nhqurK9LS0vD9998PuuSXiIjoWcWilIiIaAxcXFwAABqNBgCUS3M1Go3VX0NDA+7cuQMAyMvLw7p1\n65CYmIji4mJcuXIFJ0+eBIBBj5nx8PCweu3p6YmzZ8+iq6sLK1euhJeXF5YtW4bffvvN3rtKRERk\nV7xvPRER0b/A09MTaWlpyMjIGDRv+vTpAPofHfPyyy8jNzdXmdfT02Pze0RFReHcuXN49OgRSktL\nkZ2djVWrVqGqquqf7wAREZGDsCglIiL6F8TGxqKurg5z584ddpne3t5B07799lvV7zVp0iQkJiai\npqYGW7ZsUb0+ERHR04RFKRER0b9g69atWLBgAV577TW88847mDZtGlpaWlBWVobVq1djyZIliIuL\nQ05ODrZv347Fixfjhx9+wJkzZ2xq//Tp08jPz0dycjJ8fX1hMpnwxRdfYOnSpfbdMSIiIjtjUUpE\nRDRGEyZMUP4PDAzEzz//jM2bNyMzMxNmsxl+fn6IiYlBQEAAACArKwt//PEHdu7cCRFBfHw8Dh8+\njMjIyFHfKyAgAA8ePMDGjRvR3t4ODw8PLF++3OpSYCIiomcRHwlDREREREREDsO77xIREREREZHD\nsCglIiIiIiIih2FRSkRERERERA7DopSIiIiIiIgchkUpEREREREROQyLUiIiIiIiInIYFqVERERE\nRETkMCxKiYiIiIiIyGFYlBIREREREZHD/BdwMJ0U+OHPQAAAAABJRU5ErkJggg==\n"
}
],
"prompt_number": 4
}
],
"metadata": {}
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment