You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
udemy-ML/04-Matplotlib/06-Additional-Matplotlib-Co...

981 lines
835 KiB

2 years ago
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"___\n",
"\n",
"<a href='http://www.pieriandata.com'> <img src='../Pierian_Data_Logo.png' /></a>\n",
"___\n",
"# Advanced Matplotlib Commands Lecture\n",
"\n",
"### NOTE: There is no video for the notebook since its really just a reference for what method calls to look for. We also highly recommend doing a quick StackOverflow search if you're in need of a quick answer to what Matplotlib method to use for a particular case.\n",
"\n",
"In this lecture we cover some more advanced topics which you won't usually use as often. You can always reference the documentation for more resources!"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Logarithmic scale"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"It is also possible to set a logarithmic scale for one or both axes. This functionality is in fact only one application of a more general transformation system in Matplotlib. Each of the axes' scales are set seperately using `set_xscale` and `set_yscale` methods which accept one parameter (with the value \"log\" in this case):"
]
},
{
"cell_type": "code",
"execution_count": 94,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nbJXFGSI8gnOrg+7AZ54
"text/plain": [
"<matplotlib.figure.Figure at 0x10b54ab10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, axes = plt.subplots(1, 2, figsize=(10,4))\n",
" \n",
"axes[0].plot(x, x**2, x, np.exp(x))\n",
"axes[0].set_title(\"Normal scale\")\n",
"\n",
"axes[1].plot(x, x**2, x, np.exp(x))\n",
"axes[1].set_yscale(\"log\")\n",
"axes[1].set_title(\"Logarithmic scale (y)\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Placement of ticks and custom tick labels"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can explicitly determine where we want the axis ticks with `set_xticks` and `set_yticks`, which both take a list of values for where on the axis the ticks are to be placed. We can also use the `set_xticklabels` and `set_yticklabels` methods to provide a list of custom text labels for each tick location:"
]
},
{
"cell_type": "code",
"execution_count": 95,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nu1NFRERE6lROfg43vXU
"text/plain": [
"<matplotlib.figure.Figure at 0x10b3de690>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(10, 4))\n",
"\n",
"ax.plot(x, x**2, x, x**3, lw=2)\n",
"\n",
"ax.set_xticks([1, 2, 3, 4, 5])\n",
"ax.set_xticklabels([r'$\\alpha$', r'$\\beta$', r'$\\gamma$', r'$\\delta$', r'$\\epsilon$'], fontsize=18)\n",
"\n",
"yticks = [0, 50, 100, 150]\n",
"ax.set_yticks(yticks)\n",
"ax.set_yticklabels([\"$%.1f$\" % y for y in yticks], fontsize=18); # use LaTeX formatted labels"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"There are a number of more advanced methods for controlling major and minor tick placement in matplotlib figures, such as automatic placement according to different policies. See http://matplotlib.org/api/ticker_api.html for details."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Scientific notation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With large numbers on axes, it is often better use scientific notation:"
]
},
{
"cell_type": "code",
"execution_count": 96,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nJAI8sfQJJpw1oc63Hay
"text/plain": [
"<matplotlib.figure.Figure at 0x10b7a0f10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1)\n",
" \n",
"ax.plot(x, x**2, x, np.exp(x))\n",
"ax.set_title(\"scientific notation\")\n",
"\n",
"ax.set_yticks([0, 50, 100, 150])\n",
"\n",
"from matplotlib import ticker\n",
"formatter = ticker.ScalarFormatter(useMathText=True)\n",
"formatter.set_scientific(True) \n",
"formatter.set_powerlimits((-1,1)) \n",
"ax.yaxis.set_major_formatter(formatter) "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Axis number and axis label spacing"
]
},
{
"cell_type": "code",
"execution_count": 97,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\ngsNkZp6O6yUiUpv129e
"text/plain": [
"<matplotlib.figure.Figure at 0x106d4c710>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"# distance between x and y axis and the numbers on the axes\n",
"matplotlib.rcParams['xtick.major.pad'] = 5\n",
"matplotlib.rcParams['ytick.major.pad'] = 5\n",
"\n",
"fig, ax = plt.subplots(1, 1)\n",
" \n",
"ax.plot(x, x**2, x, np.exp(x))\n",
"ax.set_yticks([0, 50, 100, 150])\n",
"\n",
"ax.set_title(\"label and axis spacing\")\n",
"\n",
"# padding between axis label and axis numbers\n",
"ax.xaxis.labelpad = 5\n",
"ax.yaxis.labelpad = 5\n",
"\n",
"ax.set_xlabel(\"x\")\n",
"ax.set_ylabel(\"y\");"
]
},
{
"cell_type": "code",
"execution_count": 98,
"metadata": {},
"outputs": [],
"source": [
"# restore defaults\n",
"matplotlib.rcParams['xtick.major.pad'] = 3\n",
"matplotlib.rcParams['ytick.major.pad'] = 3"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Axis position adjustments"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Unfortunately, when saving figures the labels are sometimes clipped, and it can be necessary to adjust the positions of axes a little bit. This can be done using `subplots_adjust`:"
]
},
{
"cell_type": "code",
"execution_count": 99,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nI72TOEjjCEREQmjPwT1
"text/plain": [
"<matplotlib.figure.Figure at 0x10b7b4950>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(1, 1)\n",
" \n",
"ax.plot(x, x**2, x, np.exp(x))\n",
"ax.set_yticks([0, 50, 100, 150])\n",
"\n",
"ax.set_title(\"title\")\n",
"ax.set_xlabel(\"x\")\n",
"ax.set_ylabel(\"y\")\n",
"\n",
"fig.subplots_adjust(left=0.15, right=.9, bottom=0.1, top=0.9);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Axis grid"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"With the `grid` method in the axis object, we can turn on and off grid lines. We can also customize the appearance of the grid lines using the same keyword arguments as the `plot` function:"
]
},
{
"cell_type": "code",
"execution_count": 100,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\ni9Sg8wcx+ILBlsZSUVK
"text/plain": [
"<matplotlib.figure.Figure at 0x1084dc3d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, axes = plt.subplots(1, 2, figsize=(10,3))\n",
"\n",
"# default grid appearance\n",
"axes[0].plot(x, x**2, x, x**3, lw=2)\n",
"axes[0].grid(True)\n",
"\n",
"# custom grid appearance\n",
"axes[1].plot(x, x**2, x, x**3, lw=2)\n",
"axes[1].grid(color='b', alpha=0.5, linestyle='dashed', linewidth=0.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Axis spines"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can also change the properties of axis spines:"
]
},
{
"cell_type": "code",
"execution_count": 101,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n18+hF2MB3A38uNc9z5K
"text/plain": [
"<matplotlib.figure.Figure at 0x10b7d5c90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(figsize=(6,2))\n",
"\n",
"ax.spines['bottom'].set_color('blue')\n",
"ax.spines['top'].set_color('blue')\n",
"\n",
"ax.spines['left'].set_color('red')\n",
"ax.spines['left'].set_linewidth(2)\n",
"\n",
"# turn off axis spine to the right\n",
"ax.spines['right'].set_color(\"none\")\n",
"ax.yaxis.tick_left() # only ticks on the left side"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Twin axes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Sometimes it is useful to have dual x or y axes in a figure; for example, when plotting curves with different units together. Matplotlib supports this with the `twinx` and `twiny` functions:"
]
},
{
"cell_type": "code",
"execution_count": 102,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nfWHIENu8PmECtEhEEcZ
"text/plain": [
"<matplotlib.figure.Figure at 0x109b88690>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax1 = plt.subplots()\n",
"\n",
"ax1.plot(x, x**2, lw=2, color=\"blue\")\n",
"ax1.set_ylabel(r\"area $(m^2)$\", fontsize=18, color=\"blue\")\n",
"for label in ax1.get_yticklabels():\n",
" label.set_color(\"blue\")\n",
" \n",
"ax2 = ax1.twinx()\n",
"ax2.plot(x, x**3, lw=2, color=\"red\")\n",
"ax2.set_ylabel(r\"volume $(m^3)$\", fontsize=18, color=\"red\")\n",
"for label in ax2.get_yticklabels():\n",
" label.set_color(\"red\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Axes where x and y is zero"
]
},
{
"cell_type": "code",
"execution_count": 103,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXUAAADtCAYAAABAv+VSAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAHsBJREFUeJzt3Xl4VdW9//H3AVIZkpMAMkRUxCgyKOEWh5YoJPRWHJCp\nFBABi9BaaVF/yIUL2Ag1eEUFh4JSbFVAStUHMdLeC1JMiUhtQSCVBKWNRQICQQkZCIHkZP3+WE0M\nkJDhDPsMn9fz7Cc5h332+bKfcz4s1l57LZcxBhERCQ/NnC5ARER8R6EuIhJGFOoiImFEoS4iEkYU\n6iIiYUShLiISRlr48dgaKyk+5XK50BBciQAub16slrqISBhRqIuIhBGFuohIGFGoi4iEEYW6iEgY\nUaiLiIQRhbqISBhRqIuIhBGFuohIGFGoi4iEEYW6iEgYUaiLiIQRhbqISBhRqIuIhBGFuohIGFGo\ni4iEEYW6iEgYUaiLiIQRhbr4xdKlS7nhhhto2bIl99133wX3ffbZZ4mPjycuLo4pU6ZQXl4eoCpF\nwo9CXfyiS5cu/OIXv2Dy5MkX3G/jxo089dRTZGRk8MUXX5Cbm8tjjz0WoCpFwo9CXfxi+PDhDB06\nlHbt2l1wv5UrVzJ58mR69OhBbGwsqampvPrqqwGqUiT8KNTFUdnZ2SQmJlY/TkxMJD8/n4KCAger\nEgldCnVxVElJCbGxsdWP3W43xhiKi4sdrErEGUeOeH+MFt4fQqTpoqOjKSoqqn5cWFiIy+UiJiam\n1v3nzZtX/XtycjLJycl+rlAkMHJz4bvfhfx8746jUBdH9e7dm6ysLEaNGgXA7t276dSpE23btq11\n/5qhLhJOHn8cpk71/jjqfhG/8Hg8lJWV4fF4qKio4PTp03g8nvP2mzhxIr/97W/Zu3cvBQUFpKWl\nMWnSJAcqFnHOvn3wxz/Cww97fyyFuvhFWloarVu3ZuHChaxevZrWrVuzYMEC8vLyiImJ4eDBgwAM\nHjyYmTNnkpKSQrdu3UhISFBrXCLOL39pAz0uzvtjuYwx3h+ldn47sEQml8uFHz+vIo7YuxcGDrR9\n6v++lOTy5nhqqYuIOGjePHjkkepA95pa6hIy1FKXcPPJJ/D979tWeps21U+rpS4iEormzoVZs84K\ndK9pSKOIiAO2bYOsLHjzTd8eVy11EZEAMwbmzIHHHoOWLX17bIW6iEiAvfceHD0KEyf6/tgKdRGR\nAKqstK30xx+HFn7oAFeoi4gE0Nq14HLBD37gn+NrSKOEDA1plFBXXg69esGLL9qhjHXQkEYRkVCw\nfDkkJFww0L2mlrqEDLXUJZQVFUH37rBxI9RYF6Y2aqmLiAS7p5+GwYPrDXSvqaUuIUMtdQlVhw5B\nnz6waxdcfnm9u3vVUleoS8hQqEuomjIF2reHhQsbtLtXoa5pAkRE/CgrC9avh08/Dcz7qU9dRMRP\njIHp0+10AHWs0OhzCnURET9Zvx6OHIGf/CRw76nuFxERPzhzxi5+sWSJf6YDqIta6iIifrB0KVx9\ntR3GGEga/SIhQ6NfJFR89RX07AmZmfZnI2lIo0QGhbqEivvvt/OkP/98k16uIY0iIsHi448hPT1w\nQxjPpT51EREfqayEadNgwQKIi3OmBoW6iIiPvP46VFTApEnO1aA+dQkZ6lOXYFZUBD16wLp1cNNN\nXh1KF0olMijUJZhNnw4nTsArr3h9KF0oFRFxUlYWrF4Ne/Y4XYn61EVEvFJZCT/9KaSlQYcOTlej\nUBcR8cpvfmMXkp482elKLPWpS8hQn7oEm/x8uPZa2LTJpysa6UKpRAaFugSbH/3ILn6xaJFPD6sL\npSIigfanP0FGRnBcHK1JfeoiIo1UWmrnd3nxRYiJcbqas6n7RUKGul8kWMyaBQcOwJo1fjm8ul9E\nRAJl1y547TX45BOnK6mdul9ERBqoogKmTIGFC6FjR6erqZ1CXUSkgZ5+Gtq1g3vvdbqSuqlPXUKG\n+tTFSdnZkJwMO3ZA165+fSuv+tTVUhcRqUfVdLppaX4PdK8p1EVE6rFoEbjd8JOfOF1J/dT9IiFD\n3S/ihJwcGDgQtm+HK64IyFuq+0VExB/OnIEJE2y3S4AC3WsKdRGROjz+OMTHh0a3SxXdfCQiUouP\nPoKXX4bdu+3UuqFCLXURkXOcPGm7XZYuhc6dna6mcXShVEKGLpRKoPz0p3bSrpUrHXl7zf0iIuIr\n69bZRS927XK6kqZRS11Chlrq4m8HD0K/fpCeDt/5jmNlaEijiIi3PB4YPx4eesjRQPeaQl1EBHjy\nSTvKZdYspyvxjvrURSTiffAB/OpXdrKu5s2drsY7aqmLSETLz4dx4+DVV+HSS52uxnsKdfGLgoIC\nRowYQXR0NN26dWNNHet+rVixghYtWuB2u4mJicHtdpOZmRngaiVSVVba8ejjx8PttztdjW+o+0X8\nYurUqbRs2ZJjx46xc+dO7rzzTvr27UvPnj3P27d///4KcnHEE0/Y8eiPP+50Jb6jlrr4XGlpKW+/\n/TZpaWm0atWKpKQkhg0bxqpVq5wuTaTa++/DkiXw+99DizBq3irUxef27dtHVFQUCQkJ1c8lJiaS\nnZ1d6/67du2iY8eO9OjRg7S0NCorKwNVqkSoAwfgnntg9Wro0sXpanwrjP59kmBRUlKC2+0+6zm3\n201xcfF5+w4cOJA9e/bQtWtXsrOzGT16NFFRUcwK9XFlErTKymDUKJg+Hb73Paer8T2FuvhcdHQ0\nRUVFZz1XWFhITEzMefteUWOS6t69e5OamsozzzxTZ6jPmzev+vfk5GSSk5N9UbJEkGnT7JJ0M2Y4\nXYl/KNTF57p3705FRQW5ubnVXTBZWVn07t27Qa+/0FQANUNdpLGWL4dt2+y0uqE0nW5jqE9dfK51\n69aMHDmS1NRUSktL2bp1K+vXr2fChAnn7bthwwby8/MB+PTTT0lLS2P48OGBLlkiQGYm/OIX8M47\nUMt/GsOGQl38YunSpZSWltKxY0fGjx/PsmXL6NmzJ3l5ebjdbg4ePAjA5s2b6dOnDzExMQwZMoRR\no0Yxe/Zsh6uXcLN/P4wZA6+/Dldf7XQ1/qVZGiVkaJZGaYriYkhKgilT4MEHna6mQbzqGFKoS8hQ\nqEtjeTzwgx9Ahw62Pz1E+tG1SIaISG1mzICiInjzzZAJdK8p1EUkLC1ZAhs22NEu3/qW09UEjkJd\nRMLOH/5g53X58ENo29bpagJLoS4iYWX7drjvPli/Hrp1c7qawNOQRhEJG/v2wdCh8JvfwE03OV2N\nMxTqIhIWDh+G226z0+gOHep0Nc5RqItIyCsstItcTJ5sx6NHMo1Tl5ChcepSm5MnbQu9b1944YWw\nGLqom48kMijU5VynT8Ndd8Ell8Arr0Cz8Oh7UKhLZFCoS03l5TB6NDRvHnarF+mOUhGJLB4P/OhH\ntqX+zjthFehe06kQkZDi8cDEiZCfD+++G1l3izZEePRAiUhE8Hjg3nu/CfRWrZyuKPgo1EUkJFRU\n2C6XI0cgPV2BXhd1v4hI0DtzBu65x45Hf/ddaN3a6YqCl1rqIhLUTp2CESPsaJf16xXo9VGoi0jQ\nKi6GIUPA7Ya33oKLLnK6ouCnUBeRoJSfD4MGwZVX2rVFo6Kcrig0KNRFJOj8619w88329v/ly+0N\nRtIwCnURCSq7d8Mtt8BDD9kZF8NgLpeA0ugXEQka//u/dtjiiy/CqFFOVxOaFOoiEhRefNG2zNPT\n4bvfdbqa0KVQFxFHVVTAf/2XXST6ww/thVFpOoW6iDjm+HEYO9b+vm1b5C0S7Q+6UCoijsjOhhtv\nhOuus33pCnTfUKiLSMC99RYkJ0NqKixapKlzfUmnUkQC5swZmDnTzt+yYQP06+d0ReFHoS4iAZGX\nB2PGQPv28PHH6m7xF3W/iIjfrVsH118PQ4faIYsKdP9RS11E/ObUKXjkEdvVkp4O3/mO0xWFP7XU\nRcQvduywfeYFBbBrlwI
"text/plain": [
"<matplotlib.figure.Figure at 0x1071d7110>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"\n",
"ax.spines['right'].set_color('none')\n",
"ax.spines['top'].set_color('none')\n",
"\n",
"ax.xaxis.set_ticks_position('bottom')\n",
"ax.spines['bottom'].set_position(('data',0)) # set position of x spine to x=0\n",
"\n",
"ax.yaxis.set_ticks_position('left')\n",
"ax.spines['left'].set_position(('data',0)) # set position of y spine to y=0\n",
"\n",
"xx = np.linspace(-0.75, 1., 100)\n",
"ax.plot(xx, xx**3);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Other 2D plot styles"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"In addition to the regular `plot` method, there are a number of other functions for generating different kind of plots. See the matplotlib plot gallery for a complete list of available plot types: http://matplotlib.org/gallery.html. Some of the more useful ones are show below:"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {},
"outputs": [],
"source": [
"n = np.array([0,1,2,3,4,5])"
]
},
{
"cell_type": "code",
"execution_count": 105,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\npX/6a+x2zWsGb02d/zo
"text/plain": [
"<matplotlib.figure.Figure at 0x10a72ed90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, axes = plt.subplots(1, 4, figsize=(12,3))\n",
"\n",
"axes[0].scatter(xx, xx + 0.25*np.random.randn(len(xx)))\n",
"axes[0].set_title(\"scatter\")\n",
"\n",
"axes[1].step(n, n**2, lw=2)\n",
"axes[1].set_title(\"step\")\n",
"\n",
"axes[2].bar(n, n**2, align=\"center\", width=0.5, alpha=0.5)\n",
"axes[2].set_title(\"bar\")\n",
"\n",
"axes[3].fill_between(x, x**2, x**3, color=\"green\", alpha=0.5);\n",
"axes[3].set_title(\"fill_between\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Text annotation"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Annotating text in matplotlib figures can be done using the `text` function. It supports LaTeX formatting just like axis label texts and titles:"
]
},
{
"cell_type": "code",
"execution_count": 108,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n+D9gatay48ePv/H/oKA
"text/plain": [
"<matplotlib.figure.Figure at 0x109b0aa50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"\n",
"ax.plot(xx, xx**2, xx, xx**3)\n",
"\n",
"ax.text(0.15, 0.2, r\"$y=x^2$\", fontsize=20, color=\"blue\")\n",
"ax.text(0.65, 0.1, r\"$y=x^3$\", fontsize=20, color=\"green\");"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Figures with multiple subplots and insets"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Axes can be added to a matplotlib Figure canvas manually using `fig.add_axes` or using a sub-figure layout manager such as `subplots`, `subplot2grid`, or `gridspec`:"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### subplots"
]
},
{
"cell_type": "code",
"execution_count": 109,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nK/ftbgW+WueALW/Oi6V
"text/plain": [
"<matplotlib.figure.Figure at 0x1070b7e50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots(2, 3)\n",
"fig.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### subplot2grid"
]
},
{
"cell_type": "code",
"execution_count": 110,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAaQAAAEWCAYAAAApTuNLAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzt3X+sHWW97/H3x7YHaKCkgo1IEUkD97SQQPhx5EDFUg6B\neAQrXuCI0PDjEr0259Sqp96rDS0FGiD8wQ1BQ8KPgIpgDFgbSkSh1UujF5CAHOSHEASKpQX7g2Jb\ntfR7/3hm1+li7b1n1pq11qy1P69k0q5Zz5793bO/e5418zzzHUUEZmZmvfaBXgdgZmYG7pDMzKwm\n3CGZmVktuEMyM7NacIdkZma14A7JzMxqwR2SmZnVQqEOSdI8SY9L2iHp9lHaLpC0TtJmSbdKmlBN\nqGZmNsiKniG9AVwF3DZSI0lnAAuBU4FDgWnAle0EaGZmY0OhDikifhwRPwE2jtJ0LnBbRDwfEVuA\npcAlbcZoZmZjQNVjSEcCT+dePw1MkTS54u9jZmYDpuoOaV9gS+71O4CA/Sr+PmZmNmDGV7y9d4FJ\nudf7AwFszTeS5IquZmYDKCLU6tdWfYb0LHB07vUxwPqI2NTYMCK8FFgWL17c8xj6ZfG+8r7yvurt\n0q6i077HSdobGAeMl7SXpHFNmt4FXCZpejZutAi4o+0ozcxs4BU9Q1oEbAO+AXwh+/+3JB0iaauk\nqQAR8VPgemAV8ArwMrCk6qDNzGzwFBpDiogrGf5+ov0a2t4I3NhmXJaZNWtWr0PoG95XxXlfFed9\n1T2q4rpf6W8qRS++r5mZdY4kokaTGszMzFpSdFLDZEn3S3pX0iuSPj9C26slrZW0SdIjkmZUF66Z\nmQ2qomdI3wZ2AB8CLgS+I2l6YyNJ5wEXAycDHwR+DXy3kkjNzGygjdohSZoInAMsiojtEbEGWA5c\n1KT5x4BHI+LVbJDoe8D7Oi4zM7NGRc6QjgD+FhEv59Y9Tapb1+geYJqkw7PHTlwMPNh2lGZmNvCK\nTPvel1STLu8dmtenWwesAV4AdgKvA7PbCdDMzMaGIh1SY306SDXqtjZpuxg4ATgYWE+6rLdK0oyI\n2JFvuGTJkt3/nzVrluf6m5n1mdWrV7N69erKtjfqfUjZGNJG4Mihy3aS7gLWRsQ3G9quAB6KiJty\n6zYBp0XEk7l1vg/JzGzAdPw+pIjYBtwHLJU0UdJM4Cyaz557HDhX0hQlF5HOwl5qNUAzMxsbij5+\nYh5wO7ABeBv4UkQ8J+kQUoXvGRGxFriONDX8KWAiqSM6JyIax6DMzMz24NJBZmZWCZcOMjOzgdCJ\n0kGHSVoh6R1JGyRdW124ZmY2qKouHTQB+Bnwc2AKMJVUrcHMzGxERad9byJNXBia9n0n8EaTad+X\nAxdGxCdH2abHkMzMBkw3xpDKlA46EXhV0kpJb2XVvo9qNTgzMxs7inRIZUoHTQXOJz0x9iBgJbBc\nUtHp5WZmNkYV6ZDKlA7aTqr2/VBE7IyIG4ADcMVvMzMbRZEzlxeB8ZKm5S7bHU26IbbRb4GTinxj\n17IzM+tvXa9lByDpbiCAy4FjgRXASRHxXEO7I4AngbOB1cB84MvA9IjYmWvnSQ1mZgOmWzfGziOV\nAtpAmsa9u3RQdr/RVICIeJE0LfwWUkHWs4Cz852RmZlZMy4dZGZmlXDpIDMzGwjukMzMrBYqr2WX\n+5qHJe2S5E7PzMxGVfSG1Xwtu2OBByQ91TjLboikC7Jte6DIzMwKqbSWXfbeJOAxYC7wK2BCROxq\naONJDWZmA6ZutewAlpHOqNa3GpSZmY09ldayk3Q8qVLDTe2HZmZmY0mRMaRCtewkCbgZmB8Rkb0e\nlksHmZn1t66XDsrGkDYCR+bGkO4C1ubHkCTtD/yJVM1BwDjgQOBN4NyIWJNr6zEkM7MB0+4YUtW1\n7KbkXn6UNLnhI8DbrmVnZjbY6lbLbsPQArxF6sQ2uJadmZmNxrXszMysEq5lZ2ZmA8EdkpmZ1UKl\ntewkzZX0hKQtkl6TdJ1r2ZmZWRFFO4t8LbsLge9Imt6k3T6kp8QeAHwcOA34egVxmpnZgKu8ll3D\n1y4AZkXEZxrWe1KDmdmAqWMtu7xTgGdbCczMzMaWIqWDCteyy5N0KXAccFlroZmZ2VhSWS27PElz\ngGuA0yJiY7M2rmVnZtbfalvLLtf+TOBO4FMR8ZthtukxJDOzAVO3WnazgR8CcyLi0RG25w7JzGzA\n1KqWHbCIdHlvpaSt2XsPtBqcmZmNHa5lZ2ZmlXAtOzMzGwiVlg7K2i6QtE7SZkm3SppQXbhmZjao\nKi0dJOkMYCFwKnAoMA24sppQx6Yqp1QOOu+r4ryvivO+6p5RO6Rs2vc5wKKI2J49inw5cFGT5nOB\n2yLi+YjYAiwFLqky4LHGfwzFeV8V531VnPdV91RdOujI7L18uymSJrceopmZjQVFOqQypYP2BbY0\ntNMwbc3MzHYrUqnhGODRiNg3t+5rwClNqng/BVwdET/KXh9AunfpwIjYlGvnOd9mZgOonWnfRWrZ\nvQiMlzQtd9nuaJpX8X42e+9H2etjgPX5zgjaC9jMzAbTqJfsImIbcB+wVNJESTOBs4DvNml+F3CZ\npOnZuNEi4I4qAzYzs8FUaemgiPgpcD2wCngFeBlYUnnUZmY2cHpSOsjMzKxRR0oHubJDcUX3laS5\nkp6QtEXSa5KukzSmSj+Vyavc1zwsaZf31Yh/g4dJWpFd7dgg6dpuxtprJffV1ZLWStok6RFJM7oZ\nay9JmifpcUk7JN0+StuWjuud+iN1ZYfiCu0rYB9gPnAA8HHgNODr3QqyJoruKwAkXUCauDMWLwMU\n/RucAPwM+DkwBZhKuiw/lhTdV+cBFwMnAx8Efk3zsfRB9QZwFXDbSI3aOq5HRKULaazpL8C03Lo7\ngWVN2n6fNE186PWpwLqqY6rrUmZfNfnaBcDyXv8Mdd1XpMegPA/8E/Ae8IFe/wx13FekZ5z9otcx\n98m+Wgjck3s9A9jW65+hB/vsKuD2Ed5v+bjeiTMkV3Yorsy+anQKzafeD6qy+2oZ6ZPv+k4HVkNl\n9tWJwKuSVkp6K7sMdVRXoqyHMvvqHmCapMOzM8uLgQc7H2Lfafm43okOyZUdiiuzr3aTdClwHHBD\nh+Kqo8L7StLxwEnATV2Iq47K5NVU4HzgRuAgYCWwXFKRexQHQZl9tQ5YA7wA/Bn4HPDVjkbXn1o+\nrneiQ3qXdLkkb39ga4G2+5Ou9zdrO4jK7CsAJM0BrgHOjIiNHYytbgrtK0kCbgbmR7peMBZvwi6T\nV9tJlVgeioidEXEDaZxy2LG5AVNmXy0GTgAOBvYmFY9eJWnvjkbYf1o+rneiQ9pd2SG3brTKDkOa\nVnYYYGX2FZLOBG4BPh0Rv+tCfHVSdF9NIp093itpHfAYqVNaK+nkrkTae2Xy6reMzUkfQ8rsq6NJ\nY0jrImJXRNwJTCaNJdnftX5c79Cg192kga2JwExgEzC9SbszgD+SPo1NJt1Qe02vB+26PEBYdF/N\nBt4GZvY65j7YV1Nyy/HALuDDwPhe/ww13FdHkD7RziZ9QF0A/N77qum+ugL4ZZZXIj2CZyswqdc/\nQ5f20zjSmeEyUlWevYBxTdq1fFzvVOCTgfuzRP8DcH62/hDS9cSpubZfAd4ENgO3AhN6veO7/Esu\ntK+AR4C/Zuu2Zv8+0Ov467ivGr7mUMbYLLuy+wqYk3VCm7M8e9/BeJCXEn+De5HGJf+Y7asngNN7\nHX8X99Ni0oe793LLFdl+2lrFcd2VGszMrBbG1N3rZmZWX+6QzMysFtwhmZlZLbhDMjOzWnCHZGZm\nteAOyczMasEdkpmZ1YI7JDMzqwV3SGZmVgvukMzMrBbcIZmZWS24QzIzs1pwh2RmZrXgDsnMzGqh\nUIckaZ6kxyXtkHT7KG0XSFonabOkWyVNqCZUMxs0PrZYXtEzpDeAq4DbRmok6QxgIXAq6cFo04Ar\n2wnQzAaajy22W6EOKSJ
"text/plain": [
"<matplotlib.figure.Figure at 0x10a08ce10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"ax1 = plt.subplot2grid((3,3), (0,0), colspan=3)\n",
"ax2 = plt.subplot2grid((3,3), (1,0), colspan=2)\n",
"ax3 = plt.subplot2grid((3,3), (1,2), rowspan=2)\n",
"ax4 = plt.subplot2grid((3,3), (2,0))\n",
"ax5 = plt.subplot2grid((3,3), (2,1))\n",
"fig.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### gridspec"
]
},
{
"cell_type": "code",
"execution_count": 111,
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.gridspec as gridspec"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nkpmZJcEFyczMkuCCZGZ
"text/plain": [
"<matplotlib.figure.Figure at 0x10a341c50>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure()\n",
"\n",
"gs = gridspec.GridSpec(2, 3, height_ratios=[2,1], width_ratios=[1,2,1])\n",
"for g in gs:\n",
" ax = fig.add_subplot(g)\n",
" \n",
"fig.tight_layout()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### add_axes"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Manually adding axes with `add_axes` is useful for adding insets to figures:"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n7NKlS8nBwaHQcUje3t4
"text/plain": [
"<matplotlib.figure.Figure at 0x10a0a39d0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"\n",
"ax.plot(xx, xx**2, xx, xx**3)\n",
"fig.tight_layout()\n",
"\n",
"# inset\n",
"inset_ax = fig.add_axes([0.2, 0.55, 0.35, 0.35]) # X, Y, width, height\n",
"\n",
"inset_ax.plot(xx, xx**2, xx, xx**3)\n",
"inset_ax.set_title('zoom near origin')\n",
"\n",
"# set axis range\n",
"inset_ax.set_xlim(-.2, .2)\n",
"inset_ax.set_ylim(-.005, .01)\n",
"\n",
"# set axis tick locations\n",
"inset_ax.set_yticks([0, 0.005, 0.01])\n",
"inset_ax.set_xticks([-0.1,0,.1]);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Colormap and contour figures"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Colormaps and contour figures are useful for plotting functions of two variables. In most of these functions we will use a colormap to encode one dimension of the data. There are a number of predefined colormaps. It is relatively straightforward to define custom colormaps. For a list of pre-defined colormaps, see: http://www.scipy.org/Cookbook/Matplotlib/Show_colormaps"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [],
"source": [
"alpha = 0.7\n",
"phi_ext = 2 * np.pi * 0.5\n",
"\n",
"def flux_qubit_potential(phi_m, phi_p):\n",
" return 2 + alpha - 2 * np.cos(phi_p) * np.cos(phi_m) - alpha * np.cos(phi_ext - 2*phi_p)"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [],
"source": [
"phi_m = np.linspace(0, 2*np.pi, 100)\n",
"phi_p = np.linspace(0, 2*np.pi, 100)\n",
"X,Y = np.meshgrid(phi_p, phi_m)\n",
"Z = flux_qubit_potential(X, Y).T"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### pcolor"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nz8iMOCMj40hAFnwRA+g
"text/plain": [
"<matplotlib.figure.Figure at 0x107305f90>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"\n",
"p = ax.pcolor(X/(2*np.pi), Y/(2*np.pi), Z, cmap=matplotlib.cm.RdBu, vmin=abs(Z).min(), vmax=abs(Z).max())\n",
"cb = fig.colorbar(p, ax=ax)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### imshow"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nljPI3SW0XZja3g9TMRX
"text/plain": [
"<matplotlib.figure.Figure at 0x10a083b10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"\n",
"im = ax.imshow(Z, cmap=matplotlib.cm.RdBu, vmin=abs(Z).min(), vmax=abs(Z).max(), extent=[0, 1, 0, 1])\n",
"im.set_interpolation('bilinear')\n",
"\n",
"cb = fig.colorbar(im, ax=ax)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### contour"
]
},
{
"cell_type": "code",
"execution_count": 118,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nVziIIxjEHavD09SIp6k
"text/plain": [
"<matplotlib.figure.Figure at 0x10b038c10>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig, ax = plt.subplots()\n",
"\n",
"cnt = ax.contour(Z, cmap=matplotlib.cm.RdBu, vmin=abs(Z).min(), vmax=abs(Z).max(), extent=[0, 1, 0, 1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 3D figures"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"To use 3D graphics in matplotlib, we first need to create an instance of the `Axes3D` class. 3D axes can be added to a matplotlib figure canvas in exactly the same way as 2D axes; or, more conveniently, by passing a `projection='3d'` keyword argument to the `add_axes` or `add_subplot` methods."
]
},
{
"cell_type": "code",
"execution_count": 119,
"metadata": {},
"outputs": [],
"source": [
"from mpl_toolkits.mplot3d.axes3d import Axes3D"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Surface plots"
]
},
{
"cell_type": "code",
"execution_count": 121,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nYbRpnsn4S4scx4FlWZ4
"text/plain": [
"<matplotlib.figure.Figure at 0x10a0bd650>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(14,6))\n",
"\n",
"# `ax` is a 3D-aware axis instance because of the projection='3d' keyword argument to add_subplot\n",
"ax = fig.add_subplot(1, 2, 1, projection='3d')\n",
"\n",
"p = ax.plot_surface(X, Y, Z, rstride=4, cstride=4, linewidth=0)\n",
"\n",
"# surface_plot with color grading and color bar\n",
"ax = fig.add_subplot(1, 2, 2, projection='3d')\n",
"p = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=matplotlib.cm.coolwarm, linewidth=0, antialiased=False)\n",
"cb = fig.colorbar(p, shrink=0.5)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Wire-frame plot"
]
},
{
"cell_type": "code",
"execution_count": 122,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\nXkRzZNfjOwBEij1iJdk
"text/plain": [
"<matplotlib.figure.Figure at 0x109e0e890>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(8,6))\n",
"\n",
"ax = fig.add_subplot(1, 1, 1, projection='3d')\n",
"\n",
"p = ax.plot_wireframe(X, Y, Z, rstride=4, cstride=4)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### Coutour plots with projections"
]
},
{
"cell_type": "code",
"execution_count": 123,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAcwAAAFdCAYAAACO4V1gAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzsvXd0HPW9v//M9qpd9V5cZMm9Y1ywAWNawIQQIISW3JCE\nhNSb5Jt2Q3LTCwmpJPklBNIuJAQIoWNjwNgUN2zLtlxkyZJsNcsq2/v8/ljPsuq70qp/nnN8fI6k\nnbYz8/q8uyTLMgKBQCAQCAZHNd4HIBAIBALBZEAIpkAgEAgECSAEUyAQCASCBBCCKRAIBAJBAgjB\nFAgEAoEgAYRgCgQCgUCQAJohfi9qTgQCgUAw3ZD6+6GwMAUCgUAgSAAhmAKBQCAQJIAQTIFAIBAI\nEkAIpkAgEAgECSAEUyAQCASCBBCCKRAIBAJBAgjBFAgEAoEgAYRgCgQCgUCQAEIwBQKBQCBIACGY\nAoFAIBAkgBBMgUAgEAgSQAimQCAQCAQJIARTIBAIBIIEEIIpEAgEAkECCMEUCAQCgSABhGAKBAKB\nQJAAQjAFAoFAIEgAIZgCgUAgECSAEEyBQCAQCBJACKZAIBAIBAmgGe8DEAjGA1mWCYVChMNh1Go1\narUaSZKQJGm8D00gEExQhGAKphWyLBOJRAiFQoRCIfx+PyrVu44WtVqNRqNBo9GgUqlQqVRCRAUC\nAQCSLMuD/X7QXwoEk4lIJEIwGCQSiSBJErIsEwgEYoIpy3KPf4pQqlQqNBpNzBJVrFGBQDBl6fcB\nFxamYMojyzLBYJBwOAwQc732Xiz255JVxDMQCPT4Wbx4CpeuQDA9EIIpmLIoccpQKAT0L4hDMZCI\nAoRCIQKBQOz3kiTFXLpqtVq4dAWCKYYQTMGUQ5ZlwuEwwWAQGJ5QDka8QMbHP5X9KgKtoFigSlxU\nuHQFgsmJEEzBlCFesJQY5FgK00DWaCQSIRwOEwgE8Pv96HS6HiKqWKPCpSsQTGyEYAomPUqcMT6h\nJ97yG096i2AkEokdWzAYFC5dgWASIQRTMKnpnfmaqJWmJPIEg8EebtKxECdlP2q1usfxAAO6dOOz\ndIWICgTjgxBMwaRkJAk9wWAQr9dLJBJBrVbHkndkWY6Jp2LdjZU4xVuZ8SguXb/fP2ipi3KsAoFg\n9BCCKZhUjEQow+EwHo+HcDiM0WhEo9EQCoVin1dioErMUbFc48VzrC28REtdlL/tr15UWKMCQWoQ\ngimYFIwkoScSieD1egkEAhgMBiwWC5IkEYlEelhtiuD03m8kEomJaCgU6hEn7W2NDoVS/zkSEROl\nLgLB+CA6/QgmNIpQer1eQqEQRqMx4Ze9LMv4fD58Ph86nQ6j0dhD1JT4Z7LioVh4ijWqiKkiovHW\naG9xc7vdfY5jNInvXBSPKHURCAZFdPoRTB56Z74qApVMQo/X60WtVpOWltYjwUZhuAKhiGDvGsz4\nEpKB4qL9iddokkipi4JynKLURSDoHyGYggnHcDNfIZrQ4/F4ADCbzWi12tE81BjxIhrv1u0dFwXw\ner0TMi4KPUtdlAWKTqcTLl2BACGYggnEUAk9g1lmvRN6dDrdhHip946Lut1uDAYDQL9x0d4x0bFy\n3SrXKt4SV0puRKmLQBBFCKZg3Ekk83Wgl/FACT3J7HusX/TxCUOKBRyfXKRY2L3jouPhJu2vCUR8\nqUs8otRFMNURgikYN0aS+Rqf0KPX67HZbMN6OU8Uq0ixLns3M4iPN8bHc8erXlQ5VlHqIpiOCMEU\njDn9CeVQYqeUY8iyjN/vx+v1otVqB0zomQokGheNTy6aiHHR/kpdVCoVWq1WxEUFkwohmIIxpXdC\nT6JWoSKWDocDSZKwWq19aianC8nWi453XLS/jOJIJILP5+vhEhelLoKJzvR84wjGnJFkvoZCITwe\nD5FIBIvFglarFS/SXsS7dFMVFx2t8pfhlLrEC6lw6QrGCyGYglFlpK3svF4vwWAQvV5PJBJBp9ON\n5uFOKUYaFx3LhKhES13iz0uUugjGGiGYglFhJEKpuOv8fj96vR673U4kEumTUCJInmTjon6/n1Ao\nNG5xUaBPjHqgQd2KkCrzRoWIClKNEExBShlp5mt8Qs9wM18FydNfXNTj8aDRaGJNDAaKi451rHEg\na1Qpc4kXUlHqIkglQjAFKUFx8wWDwYQzX+M/q3ToUavV/Sb0KFmygrEj3hIdKC4aCAR6JHCNZ72o\n8k+xSEWpiyDVCMEUjJjhZr7Cu7MpZVke01Z2guGRbFy0vwzdiRAXDYVCBIPB2M/i46JKcpFw6Qp6\nIwRTMGyUWCP0XOEnwnBa2QkLc2IyUFw03hLtr1401Qk7yraHOtb4/+M/q3Qv8vl8sd8r5yRKXQQg\nBFMwDOITelwuFyaTKWHLcLit7MRLavLRX7ww3hKNt0YnalxUcekqbl3FahalLtMTIZiChBlJ5mvv\n2ZTTNaFnusdiB3LpTuS4aDxiUPf0RgimYEhGmvmayGzKZI5FvISmFpMtLqr837t70UBTXfqbMSqY\nnAjBFAxIIpmvg1lMqZxNOVovGfHyGpjxtISHExdVjnc8rLtkuxf1NxpN3IsTHyGYgn4ZSebrRJ1N\nKUieifa9DRYXVXrT+v3+CR0XBWJCr7QqVAQ0XkiFiE48hGAKehCJRAiFQoTDYWDoOGW8hRmf0GM0\nGpOeTTkUyr7ES0QQT7wwarVaNBrNhI6Lwrvdi0KhUGz/gw3qFqUuEwMhmAJg5Ak9Xq93xLMpBROD\ncDg86b+/yRIXjc8JEKUuEx8hmNOckQqlYlVO1tmUwmLti8fjwe/zxTr8TJbvdKjvMpG4qNL+bzTr\nRfs7rsGON55ESl2ES3f0EII5TRlp5qvSoUeZIGI2m0f5iEVJxlhhtVoxmUw4urtxdHeTZrNN6Q5M\nydSL9rZCJ1JcVJS6jD5CMKcZyosgvpF2Mu63+NmUJpOJYDA46d13gr6o1Wr0BgMS0N3VRZrNNq1G\nqw2nXrS3KCUiTKnwcIyk1EW4dJNDCOY0YqSZr8psSqPRiF6vR5KkmIU6GVFeasItOzA6vR61RhOz\nNKeTaPZmsLioMhptoLjoeLhIky116a9eVDwXPRGCOQ1INvO192d7z6aM/+xYukmFS3Z80Ol0pNls\nOB0O7OnpEzamOR4Ln/i4aPxxxFujiqu0v7iosngd6+ONRwzqThwhmFOYkSb0JDqbUojY1Een02E8\nH9e0p6dP65fmUPQnotB/XBSIdcEaz7go0MdyBgZ16fbupTsdEII5BRmpUA41mzKesX5QhDiPHb2v\ntdFoJBgI4Ha7sVgs43RUk5f+XLoulwu9Xh8T01TERVN1rPH/KyjH6Xa7e2RQT5dB3UIwpxCKUPrO\nlwQk+4ANdzblWLpkU4nyglJeZCJm05fe7ndrWhodHR3o9foJlzk7WWPRvS3KyRAXlWU5Zl0ONah7\n//79LFq0CKvVOmbHOVoIwZwCxGe+hkIh3G436enpCX9+JK3sJuMLKt7drFarYw+7EmPqXcQ+Gc9x\nJDR3q9FrZHT9rINUKhUWsxmX0ylcsyNkoIXmSOOiY3XPxluhg5W6/OIXv+BHP/qREEzB+NNf5mui\nFt9wZ1P2ZrD9hUKhlMVkUpH0EwgE8Hg8qFQqrFZrbOWubFtZ1fdu7D2dRNQflDh5Vgeyhsr8IFmW\nntdcbzBER7V5vRhNpnE6yqlDIvfSYHHR+Ht2LOpFE3kG48XU6XRis9lSsu/xRgjmJEWJNQ6U+TqY\neyqVsykHewg9Hg/dXV1kZGai1+uHtf1UEW9FKwOvJUnq4UZSXEjx9E7UGO9V/VhQlhWiNDNE/dkQ\nVWesFNpDlOcEUU5PkiQsFgtdXV3oDYYpGauaLAx2z6ayXnSgfSeCy+WaEtYlCMGcdAyV0DPYTZzq\n2ZTx2+2Ny+nE5XKRlZ09rrGukTaEH6yAfaAuMEOJ6ERPXFLVHwStnhxzDrkz1Bw8Y+TgGRULC/wo\n2qjRatHr9Xg8ngmRADT
"text/plain": [
"<matplotlib.figure.Figure at 0x109e08610>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fig = plt.figure(figsize=(8,6))\n",
"\n",
"ax = fig.add_subplot(1,1,1, projection='3d')\n",
"\n",
"ax.plot_surface(X, Y, Z, rstride=4, cstride=4, alpha=0.25)\n",
"cset = ax.contour(X, Y, Z, zdir='z', offset=-np.pi, cmap=matplotlib.cm.coolwarm)\n",
"cset = ax.contour(X, Y, Z, zdir='x', offset=-np.pi, cmap=matplotlib.cm.coolwarm)\n",
"cset = ax.contour(X, Y, Z, zdir='y', offset=3*np.pi, cmap=matplotlib.cm.coolwarm)\n",
"\n",
"ax.set_xlim3d(-np.pi, 2*np.pi);\n",
"ax.set_ylim3d(0, 3*np.pi);\n",
"ax.set_zlim3d(-np.pi, 2*np.pi);"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Further reading"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* http://www.matplotlib.org - The project web page for matplotlib.\n",
"* https://github.com/matplotlib/matplotlib - The source code for matplotlib.\n",
"* http://matplotlib.org/gallery.html - A large gallery showcaseing various types of plots matplotlib can create. Highly recommended! \n"
]
}
],
"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.6"
}
},
"nbformat": 4,
"nbformat_minor": 1
}