{ "metadata": { "name": "", "signature": "sha256:f210f09ecd181dffaa696ef401f8613f70d69991ee9360b45edcfd7a6f62b7b6" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "heading", "level": 1, "metadata": {}, "source": [ "Custom Display Logic" ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Overview" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As described in the [Rich Output](Rich Output.ipynb) tutorial, the IPython display system can display rich representations of objects in the following formats:\n", "\n", "* JavaScript\n", "* HTML\n", "* PNG\n", "* JPEG\n", "* SVG\n", "* LaTeX\n", "* PDF\n", "\n", "This Notebook shows how you can add custom display logic to your own classes, so that they can be displayed using these rich representations. There are two ways of accomplishing this:\n", "\n", "1. Implementing special display methods such as `_repr_html_` when you define your class.\n", "2. Registering a display function for a particular existing class.\n", "\n", "This Notebook describes and illustrates both approaches." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Import the IPython display functions." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import (\n", " display, display_html, display_png, display_svg\n", ")" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Parts of this notebook need the matplotlib inline backend:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "%matplotlib inline\n", "import numpy as np\n", "import matplotlib.pyplot as plt" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Special display methods" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "The main idea of the first approach is that you have to implement special display methods when you define your class, one for each representation you want to use. Here is a list of the names of the special methods and the values they must return:\n", "\n", "* `_repr_html_`: return raw HTML as a string\n", "* `_repr_json_`: return raw JSON as a string\n", "* `_repr_jpeg_`: return raw JPEG data\n", "* `_repr_png_`: return raw PNG data\n", "* `_repr_svg_`: return raw SVG data as a string\n", "* `_repr_latex_`: return LaTeX commands in a string surrounded by \"$\"." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As an illustration, we build a class that holds data generated by sampling a Gaussian distribution with given mean and standard deviation. Here is the definition of the `Gaussian` class, which has a custom PNG and LaTeX representation." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.core.pylabtools import print_figure\n", "from IPython.display import Image, SVG, Math\n", "\n", "class Gaussian(object):\n", " \"\"\"A simple object holding data sampled from a Gaussian distribution.\n", " \"\"\"\n", " def __init__(self, mean=0.0, std=1, size=1000):\n", " self.data = np.random.normal(mean, std, size)\n", " self.mean = mean\n", " self.std = std\n", " self.size = size\n", " # For caching plots that may be expensive to compute\n", " self._png_data = None\n", " \n", " def _figure_data(self, format):\n", " fig, ax = plt.subplots()\n", " ax.hist(self.data, bins=50)\n", " ax.set_title(self._repr_latex_())\n", " ax.set_xlim(-10.0,10.0)\n", " data = print_figure(fig, format)\n", " # We MUST close the figure, otherwise IPython's display machinery\n", " # will pick it up and send it as output, resulting in a double display\n", " plt.close(fig)\n", " return data\n", " \n", " def _repr_png_(self):\n", " if self._png_data is None:\n", " self._png_data = self._figure_data('png')\n", " return self._png_data\n", " \n", " def _repr_latex_(self):\n", " return r'$\\mathcal{N}(\\mu=%.2g, \\sigma=%.2g),\\ N=%d$' % (self.mean,\n", " self.std, self.size)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 37 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create an instance of the Gaussian distribution and return it to display the default representation:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x = Gaussian(2.0, 1.0)\n", "x" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$\\mathcal{N}(\\mu=2, \\sigma=1),\\ N=1000$" ], "metadata": {}, "output_type": "pyout", "png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAENCAYAAAASUO4dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGolJREFUeJzt3XtwlNUdxvFnMUGhkgkpuKHANJoQIreQGEWttBvD4pWY\nWAdhOpgqOKJ26m2wQG0b6yhL1T9Q2k5FSrcyxeK0RmqRAQoLxVGDXOoFYqhEQbrZAkkwEDQmnP6B\nbBMgZHezm83ZfD8zmey+++77/rJsnhzOnnNehzHGCABgrT7xLgAA0DUEOQBYjiAHAMsR5ABgOYIc\nACxHkAOA5QhyALAcQQ4AliPIEZaampp4lxBTfr9fTU1N8S4DCAtBjnPaunWrcnNzde+996qmpkZv\nv/12vEuKqcGDB+tXv/pVvMsAwuJgij4kafbs2frOd76jGTNmtNt+77336tZbb9Xll1+uBQsWaOHC\nhTE5/5/+9Cf5/X5VVlaqtLRU06ZNi8l5Trdz504tX75czzzzTHDb1q1btXv3bt1xxx3dUkNHzlZb\nRUWFdu3apT59+mjo0KHBf69wtyPBGMAYc+WVV5rbbrut3bYPPvjArF692hhjzM6dO81zzz0Xk3Pv\n2bMneOyDBw+a1NRUs3fv3picq61nn33WlJaWmh/+8IdnPDZjxoyQj/P222+bkpISM3ToUPPVV18Z\nY4ypra01t99+u7npppvMm2++GZXaGhoaTH5+fvD+lVdeaQ4dOhTW9oMHD4ZdC3o+ulag1tZWTZo0\nSRs2bNAXX3wR3O7z+XTttddKkl5//fXg7Wj78MMPg90ZgwYNUlZWlrZt2xaTc7X18MMP65Zbbjnr\nY4MHD9a///3vkI4zYcIEXX/99crOztZf/vIXSZLT6dTNN9+sV155RVdffXVUatu8ebNGjRoVvJ+b\nm6sNGzaEtX3jxo1h14KeLyneBSD+PvzwQxUVFWnnzp164403VFpaKkk6fvy4zj//fEknuxvmz58f\n1nH37t2rJUuWdPj4lVdeqVtuuUU33nij3njjDUmSMUZ+v19ZWVkR/SyhnvMU00HPYm5urrZt2xZS\nHSdOnFBycrJ+/OMf6+mnn9btt98uSTp27Jj69esXtdo+++wzpaamBu+npqZqz549SktLC2s7Eg9B\nDlVWVmrGjBmaNm2aVqxYodLSUn355Zfq27dvcJ+mpiY5HI7g/dbWVn3ve9/Tli1bJEkzZ87UvHnz\n2gXfJZdcogULFnR6/uTkZI0ZM0aS9Pe//10FBQUaP378Wfetrq7WY489poMHD+rdd9+Vy+XSTTfd\npNmzZ4d1zlPa/kxtDRw4UNXV1SEdY/v27SooKNCYMWP08MMPa/v27crPzz/j2F2traGhQRdccEHw\nft++fXX06FE5HI6wtiPx0LUCHT16VOeff76Ki4u1du1a/fe//1VlZaUmTJgQ3Ke1tbXdc9566y19\n+9vflnSy5fjWW29F3Io+paGhQX/4wx+0fPnysz5eV1en2bNn649//KM2btyooqIiLV++PBjikeio\nRd6vXz81NzeHdIz33ntP48aNU58+fXTffffp+eef10cffaSRI0dGXNfZahswYEC7bcePH1daWlrY\n25F4aJH3ckeOHFH//v0lnQyK66+/XosXL9Y3v/lN3X///cH9kpLav1XWrFmj6667TpK0Y8cOjR07\n9oxjh9OVYIyRx+PRiy++qAsvvFCffvpp8A/FKb/+9a91//33B1uZX375ZbD2SM4pddwiP3LkSMih\nd+LEieDtWbNmKSsrS6NGjdIDDzwQ1doyMzP17rvvBu8fPnxY+fn5Sk1NDWn7oUOHlJ+fH9LPBMvE\n61NWxFdjY6PZuXOn+e1vf9tuJMO2bdtMSkqKmTdvXrv977jjDtPY2Bi8X1BQYN5//31jjDG//OUv\nze9+9zvz2muvRVzPokWLzLvvvmv8fr955513jM/nM8YYU11dbVpbW40xxsyZM8fs2rXLGHNyRM0j\njzwS8flOWbZs2VlHrTz//PNm/fr1wftt62irubnZeL3edtvuuecec8MNN0S9tqNHj5oxY8YE748b\nN84EAoGwtyPxnFdeXl4e7z8m6H4+n08TJ07UuHHjNGXKlOD2IUOG6IMPPlB+fn671lt9fb2OHTum\niy++WAcPHtSCBQs0cOBANTY26siRI/r888918cUX65JLLgm7li1btmjatGl64YUX9Oyzz2rp0qV6\n4oknlJKSomuuuUYjRoxQVlaWsrKytHr1ah04cEA7d+7U/Pnz1adP5L2Dixcv1vLly/Xee+/pyJEj\nys/PD364+8ILL2j27NnB/4m0reOUrVu36oEHHtC+ffs0YcIEpaSkSDrZF378+HFNnDgxqrUNGDBA\nAwYM0N/+9jf5fD5NmTJFV111lfr27RvWdiSgzpK+qqrKjB8/PviVkpJiFi1aZA4fPmwmTZpkRowY\nYdxut6mvr++OPzyIotra2pD3ra+vNz/96U+NMca89NJLZv78+bEqq50vv/zSbN68uVvOdcrx48fN\nQw89FPc6gFB12pwZOXKkduzYoR07dmjbtm3q37+/SktL5fF45Ha7VV1draKiInk8nu74u4Mocjqd\nIe+bmpqqQYMG6dChQ6qsrNStt94aw8r+79VXX41oHHZXvPzyy7rnnnviXgcQqrCm6K9du1ZPPPGE\n/vnPfyonJ0ebNm2S0+lUbW2tXC6XqqqqYlkr4swYoxdffFF33313vEuJmf3792v79u0dThQCeqKw\ngvyuu+5SQUGB7rvvPg0cOFD19fWSTv6Cp6WlBe8DALpPyEHe3NysoUOHateuXRo8eHC7IJektLQ0\n1dXVxaxQAMDZhTyO/I033tBll12mwYMHS1KwSyU9PV1+v18XXXTRGc/JysrSxx9/HL1qAaAXyMzM\nDHmtHymMmZ0rVqzQ9OnTg/eLi4vl9XolSV6vVyUlJWc85+OPP5Yxhq8ofP3iF7+Iew2J9MXryevZ\nk7/CbQCHFOTHjh3T+vXr241UmDt3rtatW6fs7Gxt2LBBc+fODevEAIDoCKlr5Rvf+IYOHTrUblta\nWprWr18fk6IAAKFj0SxLuFyueJeQUHg9o4vXM75ieqk3h8OhGB4eABJSuNlJixwALEeQA4DlCHIA\nsBxBDgCWI8gBwHIEOQBYjiAHAMsR5ABgOYIcACxHkAOA5QhyALAcQQ4AliPIAcByBDnQA6SkpMnh\ncCglJS3epcBCLGML9AAOh0OSkcTvDFjGFgB6HYIcACxHkAOA5QhyALAcQQ4AliPIAcByIQV5Q0OD\nbrvtNl166aUaNWqU3nnnHdXV1cntdis7O1uTJ09WQ0NDrGsFAJxFSEH+wAMP6MYbb9Tu3bv13nvv\nKScnRx6PR263W9XV1SoqKpLH44l1rQCAs+h0QtCRI0eUl5envXv3ttuek5OjTZs2yel0qra2Vi6X\nS1VVVe0PzoQgICRMCEJbUZ8QVFNTo8GDB+vOO+9Ufn6+7r77bh07dkyBQEBOp1OS5HQ6FQgEIq8a\nABCxpM52aGlp0fbt27V48WJdfvnlevDBB8/oRnE4HF+3KM5UXl4evO1yueRyubpUMAAkGp/PJ5/P\nF/HzO+1aqa2t1VVXXaWamhpJ0pYtW7RgwQLt3btXGzduVHp6uvx+vwoLC+laASJE1wrainrXSnp6\nuoYPH67q6mpJ0vr16zV69GhNmTJFXq9XkuT1elVSUhJhyQCArghp9cN//etfmjVrlpqbm5WZmall\ny5aptbVVU6dO1b59+5SRkaGVK1cqNTW1/cFpkQMhoUWOtsLNTpaxBXoAghxtsYwtAPQyBDkAWI4g\nBwDLEeQAYDmCHAAsR5ADgOUIcgCwHEEOAJYjyIE4SElJk8PhUEpKWrxLQQJgZicQB6fP5GRmJ9pi\nZicA9DIEOQBYjiAHAMsR5ABgOYIcACxHkAOA5QhyALAcQQ4AliPIAcByBDkAWI4gBwDLEeRAD8Si\nWggHi2YBcdDZolksotW7hZudSaHslJGRoZSUFJ133nlKTk5WZWWl6urqdPvtt+vTTz9VRkaGVq5c\nqdTU1IgLBwBEJqSuFYfDIZ/Ppx07dqiyslKS5PF45Ha7VV1draKiInk8npgWCgA4u5D7yE9v5q9a\ntUplZWWSpLKyMlVUVES3MgBASEJukU+aNEkFBQVasmSJJCkQCMjpdEqSnE6nAoFA7KoEAHQopD7y\nN998U0OGDNHBgwfldruVk5PT7nGHw/H1hzNnKi8vD952uVxyuVwRFwsAicjn88nn80X8/LBHrTz+\n+OO68MILtWTJEvl8PqWnp8vv96uwsFBVVVXtD86oFeCsGLWCc4n6pd6amprU2NgoSTp27JjWrl2r\nsWPHqri4WF6vV5Lk9XpVUlISYckAgK7otEVeU1Oj0tJSSVJLS4t+8IMfaN68eaqrq9PUqVO1b9++\nDocf0iIHzo4WOc4l3OxkQhAQBwQ5ziXqXSsAgJ6NIAcAyxHkAGA5ghwALEeQA4DlCHIgrpI6nBUN\nhIogB+KqRSeHGQKRI8gBwHIEORADXKoN3YmZnUAMdDYzs+3jp39nZieY2QkAvQxBDgCWI8gBwHIE\nOQBYjiAHAMsR5ABgOYIcACxHkAOA5QhyALAcQQ4AliPIAcByBDnQDVhEC7HEollADJy+6NW57rNo\nFk4Xk0WzWltblZeXpylTpkiS6urq5Ha7lZ2drcmTJ6uhoSGyagEAXRZSkC9atEijRo0KXpLK4/HI\n7XarurpaRUVF8ng8MS0SANCxToP8s88+0+rVqzVr1qxgU3/VqlUqKyuTJJWVlamioiK2VQIAOtRp\nkD/00EN6+umn1afP/3cNBAJyOp2SJKfTqUAgELsKAQDnlHSuB19//XVddNFFysvLk8/nO+s+Dofj\nnFcBLy8vD952uVxyuVyR1AkACcvn83WYsaE456iV+fPn66WXXlJSUpK++OILff7557r11lu1detW\n+Xw+paeny+/3q7CwUFVVVWcenFEr6KUYtYKuiOqolaeeekr79+9XTU2NXn75ZV177bV66aWXVFxc\nLK/XK0nyer0qKSnpWtUAgIiFNSHoVBfK3LlztW7dOmVnZ2vDhg2aO3duTIoD7Jd0zq7HUJ/vcPRl\nQhE6xIQgIAbC6TqJ5HEktphMCAIA9FwEOQBYjiAHAMsR5ABgOYIcACxHkAM9SmfDFZMYhogznHOK\nPoDu1qL/Dzfs+PHGxq6MTUeioUUOAJYjyIFu1dWZnsCZCHKgW53qOgGihyAHAMsR5ABgOYIcACxH\nkAOA5QhyALAcQQ4AliPIAcByBDkAWI4gB8KQkpLGolXocbhmJxCGttfSPNd7+1zX3IzWd363EhfX\n7ASAXoYgB7rgVFeLw9GXLhfEDV0rQBhO71o5WxdKR9vpWkGootq18sUXX2jChAkaP368Ro0apXnz\n5kmS6urq5Ha7lZ2drcmTJ6uhoaFrVQMAItZpi7ypqUn9+/dXS0uLrrnmGj3zzDNatWqVBg0apEcf\nfVQLFy5UfX29PB7PmQenRY4EQ4sc3SHqH3b2799fktTc3KzW1lYNHDhQq1atUllZmSSprKxMFRUV\nEZYLAOiqToP8xIkTGj9+vJxOpwoLCzV69GgFAgE5nU5JktPpVCAQiHmhAICz6/Tiy3369NHOnTt1\n5MgRXXfdddq4cWO7x09+Yt/xpavKy8uDt10ul1wuV8TFAj0Hl2xD9Ph8Pvl8voifH9aolSeeeEL9\n+vXTiy++KJ/Pp/T0dPn9fhUWFqqqqurMg9NHjgQTSt83feToqqj2kR86dCg4IuX48eNat26d8vLy\nVFxcLK/XK0nyer0qKSnpQskAgK44Z9eK3+9XWVmZTpw4oRMnTmjGjBkqKipSXl6epk6dqqVLlyoj\nI0MrV67srnqBHq67ulxOnmfAgIH6/PO6bjgfejImBAFh6I4uE7pYwForANDLEOQAYDmCHAAsR5AD\ngOUIcgCwHEEOAJYjyAHAcgQ5AFiOIAeslsQl5tD56ocAerIWSUaNjazE2JvRIgcAyxHkAGA5ghwA\nLEeQA4DlCHIggaSkpDGKpRdiPXIgDD1xPfKOLjHH7569WI8cAHoZghwALEeQA4DlCHIAsBxBDgCW\nI8iBhJD09YgV9EYEOZAQTi6ehd6p0yDfv3+/CgsLNXr0aI0ZM0bPPfecJKmurk5ut1vZ2dmaPHmy\nGhoaYl4sAOBMnU4Iqq2tVW1trcaPH6+jR4/qsssuU0VFhZYtW6ZBgwbp0Ucf1cKFC1VfXy+Px9P+\n4EwIQoLpyROCzjZBCHaK+oSg9PR0jR8/XpJ04YUX6tJLL9WBAwe0atUqlZWVSZLKyspUUVERYckA\ngK4Iq4/8k08+0Y4dOzRhwgQFAgE5nU5JktPpVCAQiEmBAIBzC/kKQUePHtX3v/99LVq0SAMGDGj3\nmMPh6PAT8/Ly8uBtl8sll8sVUaEAkKh8Pp98Pl/Ezw9p0ayvvvpKN998s2644QY9+OCDkqScnBz5\nfD6lp6fL7/ersLBQVVVV7Q9OHzkSDH3k6A5R7yM3xmjmzJkaNWpUMMQlqbi4WF6vV5Lk9XpVUlIS\nQbkAgK7qtEW+ZcsWffe739W4ceOC3ScLFizQFVdcoalTp2rfvn3KyMjQypUrlZqa2v7gtMhhuZSU\nNDU21ktKlvTV11t7RoubFnniCjc7WY8cOAebulII8sTBeuQA0MsQ5ABgOYIcACxHkAOA5QhyALAc\nQQ4AliPIAcByBDkAWI4gBwDLEeQAYDmCHAAsR5ADbaSkpMnhcCglJS3epXRR0tfXCeibID8PzoVF\ns4A22i6SZYyxetEsFtGyF4tmAUAvQ5ADgOUIcgCwHEEOAJYjyIFeJHFG5aCtpHgXAKD7nLz+qFFj\noyPepSCKaJEDgOUIcgCwHEEOAJYjyAHAcp0G+V133SWn06mxY8cGt9XV1cntdis7O1uTJ09WQ0ND\nTIsEAHSs0yC/8847tWbNmnbbPB6P3G63qqurVVRUJI/HE7MCge5walhe4kpK8J+vdwtp0axPPvlE\nU6ZM0fvvvy9JysnJ0aZNm+R0OlVbWyuXy6WqqqozD86iWbDE2RbHSrRFs1hEyx7dsmhWIBCQ0+mU\nJDmdTgUCgUgOAwCIgi5PCDq55nHH/2UrLy8P3na5XHK5XF09JdBlKSlpX0+OSZb0VbzLQS/n8/nk\n8/kifn7EXSs+n0/p6eny+/0qLCykawVWCaXLhK4VxEu3dK0UFxfL6/VKkrxer0pKSiI5DAAgCjoN\n8unTp+vqq6/WRx99pOHDh2vZsmWaO3eu1q1bp+zsbG3YsEFz587tjlqBiIW/WFTvGOXBIlqJgUu9\noVdI5Eu4daVr5fTXBT0Dl3oDgF6GIAcAyxHkAGA5ghwALEeQA4DlCHIAsBxBDgCWI8gBwHIEORJK\n5zMVe8eMzc6d/XVgpqedmNmJhNLRTEVmcjLT0ybM7ASAXoYgBwDLEeQAYDmCHAAsR5ADgOUIcgCw\nHEEOAJYjyJGgkpjYEpbwJkoxcahnSYp3AUBstEgyamxkFmdoTr5eJycIda6xsV68vj0HQQ7rtLa2\nqr6+XpKUlpamPn34jyV6N34DYJ3HHivXkCHfVnr6cP3mN7/pZG/WVolMqF1TdGH1BLTIYZ2jR5vU\n0vJLJSUF1NTU1Mne4XUZ4JRQu6bowuoJutQiX7NmjXJycjRixAgtXLgwWjUBAMIQcZC3trbqRz/6\nkdasWaNdu3ZpxYoV2r17dzRrQxs+ny/eJQDooSIO8srKSmVlZSkjI0PJycmaNm2aXnvttWjWhjYI\ncsTHyT5wh6Nvu+/oWSIO8gMHDmj48OHB+8OGDdOBAweiUhSAnuLUZwxfnfYdPUnEQc5fZcTLeef1\n0QUXLFVS0l8YegioC6NWhg4dqv379wfv79+/X8OGDWu3T2ZmJoEfRY8//ni8S+hx5syZozlz5py2\n1cH3OHzndz16MjMzw9o/4ku9tbS0aOTIkfrHP/6hb33rW7riiiu0YsUKXXrppZEcDgAQoYhb5ElJ\nSVq8eLGuu+46tba2aubMmYQ4AMRBTC++DACIvah/UvTKK69o9OjROu+887R9+/Z2jy1YsEAjRoxQ\nTk6O1q5dG+1TJ7zy8nINGzZMeXl5ysvL05o1a+JdkpWYyBZdGRkZGjdunPLy8nTFFVfEuxyr3HXX\nXXI6nRo7dmxwW11dndxut7KzszV58mQ1NDR0fiATZbt37zYfffSRcblcZtu2bcHtH374ocnNzTXN\nzc2mpqbGZGZmmtbW1mifPqGVl5ebZ599Nt5lWK2lpcVkZmaampoa09zcbHJzc82uXbviXZbVMjIy\nzOHDh+NdhpU2b95stm/fbsaMGRPcNmfOHLNw4UJjjDEej8f85Cc/6fQ4UW+R5+TkKDs7+4ztr732\nmqZPn67k5GRlZGQoKytLlZWV0T59wjP0hHUJE9lig/dlZCZOnKiBAwe227Zq1SqVlZVJksrKylRR\nUdHpcbptEO5//vOfdsMTmUAUmeeff165ubmaOXNmaP/lQjtMZIs+h8OhSZMmqaCgQEuWLIl3OdYL\nBAJyOp2SJKfTqUAg0OlzIhq14na7VVtbe8b2p556SlOmTAn5OIw7PVNHr+2TTz6pe++9Vz//+c8l\nST/72c/0yCOPaOnSpd1dotV4z0Xfm2++qSFDhujgwYNyu93KycnRxIkT411WQji5LELn79mIgnzd\nunVhP+f0CUSfffaZhg4dGsnpE1qor+2sWbPC+qOJk0KZyIbwDBkyRJI0ePBglZaWqrKykiDvAqfT\nqdraWqWnp8vv9+uiiy7q9Dkx7Vpp229WXFysl19+Wc3NzaqpqdGePXv4hDtMfr8/ePvVV19t90k3\nQlNQUKA9e/bok08+UXNzs/785z+ruLg43mVZq6mpSY2NjZKkY8eOae3atbwvu6i4uFher1eS5PV6\nVVJS0vmTov0p7F//+lczbNgwc8EFFxin02muv/764GNPPvmkyczMNCNHjjRr1qyJ9qkT3owZM8zY\nsWPNuHHjzC233GJqa2vjXZKVVq9ebbKzs01mZqZ56qmn4l2O1fbu3Wtyc3NNbm6uGT16NK9nmKZN\nm2aGDBlikpOTzbBhw8zvf/97c/jwYVNUVGRGjBhh3G63qa+v7/Q4TAgCAMuxdBwAWI4gBwDLEeQA\nYDmCHAAsR5ADgOUIcgCwHEEOAJYjyAHAcv8DUrLE4leGVckAAAAASUVORK5CYII=\n", "prompt_number": 43, "text": [ "<__main__.Gaussian at 0x108a39bd0>" ] } ], "prompt_number": 43 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can also pass the object to the `display` function to display the default representation:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "display(x)" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$\\mathcal{N}(\\mu=2, \\sigma=1),\\ N=1000$" ], "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAENCAYAAAASUO4dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGolJREFUeJzt3XtwlNUdxvFnMUGhkgkpuKHANJoQIreQGEWttBvD4pWY\nWAdhOpgqOKJ26m2wQG0b6yhL1T9Q2k5FSrcyxeK0RmqRAQoLxVGDXOoFYqhEQbrZAkkwEDQmnP6B\nbBMgZHezm83ZfD8zmey+++77/rJsnhzOnnNehzHGCABgrT7xLgAA0DUEOQBYjiAHAMsR5ABgOYIc\nACxHkAOA5QhyALAcQQ4AliPIEZaampp4lxBTfr9fTU1N8S4DCAtBjnPaunWrcnNzde+996qmpkZv\nv/12vEuKqcGDB+tXv/pVvMsAwuJgij4kafbs2frOd76jGTNmtNt+77336tZbb9Xll1+uBQsWaOHC\nhTE5/5/+9Cf5/X5VVlaqtLRU06ZNi8l5Trdz504tX75czzzzTHDb1q1btXv3bt1xxx3dUkNHzlZb\nRUWFdu3apT59+mjo0KHBf69wtyPBGMAYc+WVV5rbbrut3bYPPvjArF692hhjzM6dO81zzz0Xk3Pv\n2bMneOyDBw+a1NRUs3fv3picq61nn33WlJaWmh/+8IdnPDZjxoyQj/P222+bkpISM3ToUPPVV18Z\nY4ypra01t99+u7npppvMm2++GZXaGhoaTH5+fvD+lVdeaQ4dOhTW9oMHD4ZdC3o+ulag1tZWTZo0\nSRs2bNAXX3wR3O7z+XTttddKkl5//fXg7Wj78MMPg90ZgwYNUlZWlrZt2xaTc7X18MMP65Zbbjnr\nY4MHD9a///3vkI4zYcIEXX/99crOztZf/vIXSZLT6dTNN9+sV155RVdffXVUatu8ebNGjRoVvJ+b\nm6sNGzaEtX3jxo1h14KeLyneBSD+PvzwQxUVFWnnzp164403VFpaKkk6fvy4zj//fEknuxvmz58f\n1nH37t2rJUuWdPj4lVdeqVtuuUU33nij3njjDUmSMUZ+v19ZWVkR/SyhnvMU00HPYm5urrZt2xZS\nHSdOnFBycrJ+/OMf6+mnn9btt98uSTp27Jj69esXtdo+++wzpaamBu+npqZqz549SktLC2s7Eg9B\nDlVWVmrGjBmaNm2aVqxYodLSUn355Zfq27dvcJ+mpiY5HI7g/dbWVn3ve9/Tli1bJEkzZ87UvHnz\n2gXfJZdcogULFnR6/uTkZI0ZM0aS9Pe//10FBQUaP378Wfetrq7WY489poMHD+rdd9+Vy+XSTTfd\npNmzZ4d1zlPa/kxtDRw4UNXV1SEdY/v27SooKNCYMWP08MMPa/v27crPzz/j2F2traGhQRdccEHw\nft++fXX06FE5HI6wtiPx0LUCHT16VOeff76Ki4u1du1a/fe//1VlZaUmTJgQ3Ke1tbXdc9566y19\n+9vflnSy5fjWW29F3Io+paGhQX/4wx+0fPnysz5eV1en2bNn649//KM2btyooqIiLV++PBjikeio\nRd6vXz81NzeHdIz33ntP48aNU58+fXTffffp+eef10cffaSRI0dGXNfZahswYEC7bcePH1daWlrY\n25F4aJH3ckeOHFH//v0lnQyK66+/XosXL9Y3v/lN3X///cH9kpLav1XWrFmj6667TpK0Y8cOjR07\n9oxjh9OVYIyRx+PRiy++qAsvvFCffvpp8A/FKb/+9a91//33B1uZX375ZbD2SM4pddwiP3LkSMih\nd+LEieDtWbNmKSsrS6NGjdIDDzwQ1doyMzP17rvvBu8fPnxY+fn5Sk1NDWn7oUOHlJ+fH9LPBMvE\n61NWxFdjY6PZuXOn+e1vf9tuJMO2bdtMSkqKmTdvXrv977jjDtPY2Bi8X1BQYN5//31jjDG//OUv\nze9+9zvz2muvRVzPokWLzLvvvmv8fr955513jM/nM8YYU11dbVpbW40xxsyZM8fs2rXLGHNyRM0j\njzwS8flOWbZs2VlHrTz//PNm/fr1wftt62irubnZeL3edtvuuecec8MNN0S9tqNHj5oxY8YE748b\nN84EAoGwtyPxnFdeXl4e7z8m6H4+n08TJ07UuHHjNGXKlOD2IUOG6IMPPlB+fn671lt9fb2OHTum\niy++WAcPHtSCBQs0cOBANTY26siRI/r888918cUX65JLLgm7li1btmjatGl64YUX9Oyzz2rp0qV6\n4oknlJKSomuuuUYjRoxQVlaWsrKytHr1ah04cEA7d+7U/Pnz1adP5L2Dixcv1vLly/Xee+/pyJEj\nys/PD364+8ILL2j27NnB/4m0reOUrVu36oEHHtC+ffs0YcIEpaSkSDrZF378+HFNnDgxqrUNGDBA\nAwYM0N/+9jf5fD5NmTJFV111lfr27RvWdiSgzpK+qqrKjB8/PviVkpJiFi1aZA4fPmwmTZpkRowY\n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\nBAJyOp2SJKfTqUAg0OlzIhq14na7VVtbe8b2p556SlOmTAn5OIw7PVNHr+2TTz6pe++9Vz//+c8l\nST/72c/0yCOPaOnSpd1dotV4z0Xfm2++qSFDhujgwYNyu93KycnRxIkT411WQji5LELn79mIgnzd\nunVhP+f0CUSfffaZhg4dGsnpE1qor+2sWbPC+qOJk0KZyIbwDBkyRJI0ePBglZaWqrKykiDvAqfT\nqdraWqWnp8vv9+uiiy7q9Dkx7Vpp229WXFysl19+Wc3NzaqpqdGePXv4hDtMfr8/ePvVV19t90k3\nQlNQUKA9e/bok08+UXNzs/785z+ruLg43mVZq6mpSY2NjZKkY8eOae3atbwvu6i4uFher1eS5PV6\nVVJS0vmTov0p7F//+lczbNgwc8EFFxin02muv/764GNPPvmkyczMNCNHjjRr1qyJ9qkT3owZM8zY\nsWPNuHHjzC233GJqa2vjXZKVVq9ebbKzs01mZqZ56qmn4l2O1fbu3Wtyc3NNbm6uGT16NK9nmKZN\nm2aGDBlikpOTzbBhw8zvf/97c/jwYVNUVGRGjBhh3G63qa+v7/Q4TAgCAMuxdBwAWI4gBwDLEeQA\nYDmCHAAsR5ADgOUIcgCwHEEOAJYjyAHAcv8DUrLE4leGVckAAAAASUVORK5CYII=\n", "text": [ "<__main__.Gaussian at 0x108a39bd0>" ] } ], "prompt_number": 44 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Use `display_png` to view the PNG representation:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "display_png(x)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAENCAYAAAASUO4dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGolJREFUeJzt3XtwlNUdxvFnMUGhkgkpuKHANJoQIreQGEWttBvD4pWY\nWAdhOpgqOKJ26m2wQG0b6yhL1T9Q2k5FSrcyxeK0RmqRAQoLxVGDXOoFYqhEQbrZAkkwEDQmnP6B\nbBMgZHezm83ZfD8zmey+++77/rJsnhzOnnNehzHGCABgrT7xLgAA0DUEOQBYjiAHAMsR5ABgOYIc\nACxHkAOA5QhyALAcQQ4AliPIEZaampp4lxBTfr9fTU1N8S4DCAtBjnPaunWrcnNzde+996qmpkZv\nv/12vEuKqcGDB+tXv/pVvMsAwuJgij4kafbs2frOd76jGTNmtNt+77336tZbb9Xll1+uBQsWaOHC\nhTE5/5/+9Cf5/X5VVlaqtLRU06ZNi8l5Trdz504tX75czzzzTHDb1q1btXv3bt1xxx3dUkNHzlZb\nRUWFdu3apT59+mjo0KHBf69wtyPBGMAYc+WVV5rbbrut3bYPPvjArF692hhjzM6dO81zzz0Xk3Pv\n2bMneOyDBw+a1NRUs3fv3picq61nn33WlJaWmh/+8IdnPDZjxoyQj/P222+bkpISM3ToUPPVV18Z\nY4ypra01t99+u7npppvMm2++GZXaGhoaTH5+fvD+lVdeaQ4dOhTW9oMHD4ZdC3o+ulag1tZWTZo0\nSRs2bNAXX3wR3O7z+XTttddKkl5//fXg7Wj78MMPg90ZgwYNUlZWlrZt2xaTc7X18MMP65Zbbjnr\nY4MHD9a///3vkI4zYcIEXX/99crOztZf/vIXSZLT6dTNN9+sV155RVdffXVUatu8ebNGjRoVvJ+b\nm6sNGzaEtX3jxo1h14KeLyneBSD+PvzwQxUVFWnnzp164403VFpaKkk6fvy4zj//fEknuxvmz58f\n1nH37t2rJUuWdPj4lVdeqVtuuUU33nij3njjDUmSMUZ+v19ZWVkR/SyhnvMU00HPYm5urrZt2xZS\nHSdOnFBycrJ+/OMf6+mnn9btt98uSTp27Jj69esXtdo+++wzpaamBu+npqZqz549SktLC2s7Eg9B\nDlVWVmrGjBmaNm2aVqxYodLSUn355Zfq27dvcJ+mpiY5HI7g/dbWVn3ve9/Tli1bJEkzZ87UvHnz\n2gXfJZdcogULFnR6/uTkZI0ZM0aS9Pe//10FBQUaP378Wfetrq7WY489poMHD+rdd9+Vy+XSTTfd\npNmzZ4d1zlPa/kxtDRw4UNXV1SEdY/v27SooKNCYMWP08MMPa/v27crPzz/j2F2traGhQRdccEHw\nft++fXX06FE5HI6wtiPx0LUCHT16VOeff76Ki4u1du1a/fe//1VlZaUmTJgQ3Ke1tbXdc9566y19\n+9vflnSy5fjWW29F3Io+paGhQX/4wx+0fPnysz5eV1en2bNn649//KM2btyooqIiLV++PBjikeio\nRd6vXz81NzeHdIz33ntP48aNU58+fXTffffp+eef10cffaSRI0dGXNfZahswYEC7bcePH1daWlrY\n25F4aJH3ckeOHFH//v0lnQyK66+/XosXL9Y3v/lN3X///cH9kpLav1XWrFmj6667TpK0Y8cOjR07\n9oxjh9OVYIyRx+PRiy++qAsvvFCffvpp8A/FKb/+9a91//33B1uZX375ZbD2SM4pddwiP3LkSMih\nd+LEieDtWbNmKSsrS6NGjdIDDzwQ1doyMzP17rvvBu8fPnxY+fn5Sk1NDWn7oUOHlJ+fH9LPBMvE\n61NWxFdjY6PZuXOn+e1vf9tuJMO2bdtMSkqKmTdvXrv977jjDtPY2Bi8X1BQYN5//31jjDG//OUv\nze9+9zvz2muvRVzPokWLzLvvvmv8fr955513jM/nM8YYU11dbVpbW40xxsyZM8fs2rXLGHNyRM0j\njzwS8flOWbZs2VlHrTz//PNm/fr1wftt62irubnZeL3edtvuuecec8MNN0S9tqNHj5oxY8YE748b\nN84EAoGwtyPxnFdeXl4e7z8m6H4+n08TJ07UuHHjNGXKlOD2IUOG6IMPPlB+fn671lt9fb2OHTum\niy++WAcPHtSCBQs0cOBANTY26siRI/r888918cUX65JLLgm7li1btmjatGl64YUX9Oyzz2rp0qV6\n4oknlJKSomuuuUYjRoxQVlaWsrKytHr1ah04cEA7d+7U/Pnz1adP5L2Dixcv1vLly/Xee+/pyJEj\nys/PD364+8ILL2j27NnB/4m0reOUrVu36oEHHtC+ffs0YcIEpaSkSDrZF378+HFNnDgxqrUNGDBA\nAwYM0N/+9jf5fD5NmTJFV111lfr27RvWdiSgzpK+qqrKjB8/PviVkpJiFi1aZA4fPmwmTZpkRowY\nYdxut6mvr++OPzyIotra2pD3ra+vNz/96U+NMca89NJLZv78+bEqq50vv/zSbN68uVvOdcrx48fN\nQw89FPc6gFB12pwZOXKkduzYoR07dmjbtm3q37+/SktL5fF45Ha7VV1draKiInk8nu74u4Mocjqd\nIe+bmpqqQYMG6dChQ6qsrNStt94aw8r+79VXX41oHHZXvPzyy7rnnnviXgcQqrCm6K9du1ZPPPGE\n/vnPfyonJ0ebNm2S0+lUbW2tXC6XqqqqYlkr4swYoxdffFF33313vEuJmf3792v79u0dThQCeqKw\ngvyuu+5SQUGB7rvvPg0cOFD19fWSTv6Cp6WlBe8DALpPyEHe3NysoUOHateuXRo8eHC7IJektLQ0\n1dXVxaxQAMDZhTyO/I033tBll12mwYMHS1KwSyU9PV1+v18XXXTRGc/JysrSxx9/HL1qAaAXyMzM\nDHmtHymMmZ0rVqzQ9OnTg/eLi4vl9XolSV6vVyUlJWc85+OPP5Yxhq8ofP3iF7+Iew2J9MXryevZ\nk7/CbQCHFOTHjh3T+vXr241UmDt3rtatW6fs7Gxt2LBBc+fODevEAIDoCKlr5Rvf+IYOHTrUblta\nWprWr18fk6IAAKFj0SxLuFyueJeQUHg9o4vXM75ieqk3h8OhGB4eABJSuNlJixwALEeQA4DlCHIA\nsBxBDgCWI8gBwHIEOQBYjiAHAMsR5ABgOYIcACxHkAOA5QhyALAcQQ4AliPIAcByBDnQA6SkpMnh\ncCglJS3epcBCLGML9AAOh0OSkcTvDFjGFgB6HYIcACxHkAOA5QhyALAcQQ4AliPIAcByIQV5Q0OD\nbrvtNl166aUaNWqU3nnnHdXV1cntdis7O1uTJ09WQ0NDrGsFAJxFSEH+wAMP6MYbb9Tu3bv13nvv\nKScnRx6PR263W9XV1SoqKpLH44l1rQCAs+h0QtCRI0eUl5envXv3ttuek5OjTZs2yel0qra2Vi6X\nS1VVVe0PzoQgICRMCEJbUZ8QVFNTo8GDB+vOO+9Ufn6+7r77bh07dkyBQEBOp1OS5HQ6FQgEIq8a\nABCxpM52aGlp0fbt27V48WJdfvnlevDBB8/oRnE4HF+3KM5UXl4evO1yueRyubpUMAAkGp/PJ5/P\nF/HzO+1aqa2t1VVXXaWamhpJ0pYtW7RgwQLt3btXGzduVHp6uvx+vwoLC+laASJE1wrainrXSnp6\nuoYPH67q6mpJ0vr16zV69GhNmTJFXq9XkuT1elVSUhJhyQCArghp9cN//etfmjVrlpqbm5WZmall\ny5aptbVVU6dO1b59+5SRkaGVK1cqNTW1/cFpkQMhoUWOtsLNTpaxBXoAghxtsYwtAPQyBDkAWI4g\nBwDLEeQAYDmCHAAsR5ADgOUIcgCwHEEOAJYjyIE4SElJk8PhUEpKWrxLQQJgZicQB6fP5GRmJ9pi\nZicA9DIEOQBYjiAHAMsR5ABgOYIcACxHkAOA5QhyALAcQQ4AliPIAcByBDkAWI4gBwDLEeRAD8Si\nWggHi2YBcdDZolksotW7hZudSaHslJGRoZSUFJ133nlKTk5WZWWl6urqdPvtt+vTTz9VRkaGVq5c\nqdTU1IgLBwBEJqSuFYfDIZ/Ppx07dqiyslKS5PF45Ha7VV1draKiInk8npgWCgA4u5D7yE9v5q9a\ntUplZWWSpLKyMlVUVES3MgBASEJukU+aNEkFBQVasmSJJCkQCMjpdEqSnE6nAoFA7KoEAHQopD7y\nN998U0OGDNHBgwfldruVk5PT7nGHw/H1hzNnKi8vD952uVxyuVwRFwsAicjn88nn80X8/LBHrTz+\n+OO68MILtWTJEvl8PqWnp8vv96uwsFBVVVXtD86oFeCsGLWCc4n6pd6amprU2NgoSTp27JjWrl2r\nsWPHqri4WF6vV5Lk9XpVUlISYckAgK7otEVeU1Oj0tJSSVJLS4t+8IMfaN68eaqrq9PUqVO1b9++\nDocf0iIHzo4WOc4l3OxkQhAQBwQ5ziXqXSsAgJ6NIAcAyxHkAGA5ghwALEeQA4DlCHIgrpI6nBUN\nhIogB+KqRSeHGQKRI8gBwHIEORADXKoN3YmZnUAMdDYzs+3jp39nZieY2QkAvQxBDgCWI8gBwHIE\nOQBYjiAHAMsR5ABgOYIcACxHkAOA5QhyALAcQQ4AliPIAcByBDnQDVhEC7HEollADJy+6NW57rNo\nFk4Xk0WzWltblZeXpylTpkiS6urq5Ha7lZ2drcmTJ6uhoSGyagEAXRZSkC9atEijRo0KXpLK4/HI\n7XarurpaRUVF8ng8MS0SANCxToP8s88+0+rVqzVr1qxgU3/VqlUqKyuTJJWVlamioiK2VQIAOtRp\nkD/00EN6+umn1afP/3cNBAJyOp2SJKfTqUAgELsKAQDnlHSuB19//XVddNFFysvLk8/nO+s+Dofj\nnFcBLy8vD952uVxyuVyR1AkACcvn83WYsaE456iV+fPn66WXXlJSUpK++OILff7557r11lu1detW\n+Xw+paeny+/3q7CwUFVVVWcenFEr6KUYtYKuiOqolaeeekr79+9XTU2NXn75ZV177bV66aWXVFxc\nLK/XK0nyer0qKSnpWtUAgIiFNSHoVBfK3LlztW7dOmVnZ2vDhg2aO3duTIoD7Jd0zq7HUJ/vcPRl\nQhE6xIQgIAbC6TqJ5HEktphMCAIA9FwEOQBYjiAHAMsR5ABgOYIcACxHkAM9SmfDFZMYhogznHOK\nPoDu1qL/Dzfs+PHGxq6MTUeioUUOAJYjyIFu1dWZnsCZCHKgW53qOgGihyAHAMsR5ABgOYIcACxH\nkAOA5QhyALAcQQ4AliPIAcByBDkAWI4gB8KQkpLGolXocbhmJxCGttfSPNd7+1zX3IzWd363EhfX\n7ASAXoYgB7rgVFeLw9GXLhfEDV0rQBhO71o5WxdKR9vpWkGootq18sUXX2jChAkaP368Ro0apXnz\n5kmS6urq5Ha7lZ2drcmTJ6uhoaFrVQMAItZpi7ypqUn9+/dXS0uLrrnmGj3zzDNatWqVBg0apEcf\nfVQLFy5UfX29PB7PmQenRY4EQ4sc3SHqH3b2799fktTc3KzW1lYNHDhQq1atUllZmSSprKxMFRUV\nEZYLAOiqToP8xIkTGj9+vJxOpwoLCzV69GgFAgE5nU5JktPpVCAQiHmhAICz6/Tiy3369NHOnTt1\n5MgRXXfdddq4cWO7x09+Yt/xpavKy8uDt10ul1wuV8TFAj0Hl2xD9Ph8Pvl8voifH9aolSeeeEL9\n+vXTiy++KJ/Pp/T0dPn9fhUWFqqqqurMg9NHjgQTSt83feToqqj2kR86dCg4IuX48eNat26d8vLy\nVFxcLK/XK0nyer0qKSnpQskAgK44Z9eK3+9XWVmZTpw4oRMnTmjGjBkqKipSXl6epk6dqqVLlyoj\nI0MrV67srnqBHq67ulxOnmfAgIH6/PO6bjgfejImBAFh6I4uE7pYwForANDLEOQAYDmCHAAsR5AD\ngOUIcgCwHEEOAJYjyAHAcgQ5AFiOIAeslsQl5tD56ocAerIWSUaNjazE2JvRIgcAyxHkAGA5ghwA\nLEeQA4DlCHIggaSkpDGKpRdiPXIgDD1xPfKOLjHH7569WI8cAHoZghwALEeQA4DlCHIAsBxBDgCW\nI8iBhJD09YgV9EYEOZAQTi6ehd6p0yDfv3+/CgsLNXr0aI0ZM0bPPfecJKmurk5ut1vZ2dmaPHmy\nGhoaYl4sAOBMnU4Iqq2tVW1trcaPH6+jR4/qsssuU0VFhZYtW6ZBgwbp0Ucf1cKFC1VfXy+Px9P+\n4EwIQoLpyROCzjZBCHaK+oSg9PR0jR8/XpJ04YUX6tJLL9WBAwe0atUqlZWVSZLKyspUUVERYckA\ngK4Iq4/8k08+0Y4dOzRhwgQFAgE5nU5JktPpVCAQiEmBAIBzC/kKQUePHtX3v/99LVq0SAMGDGj3\nmMPh6PAT8/Ly8uBtl8sll8sVUaEAkKh8Pp98Pl/Ezw9p0ayvvvpKN998s2644QY9+OCDkqScnBz5\nfD6lp6fL7/ersLBQVVVV7Q9OHzkSDH3k6A5R7yM3xmjmzJkaNWpUMMQlqbi4WF6vV5Lk9XpVUlIS\nQbkAgK7qtEW+ZcsWffe739W4ceOC3ScLFizQFVdcoalTp2rfvn3KyMjQypUrlZqa2v7gtMhhuZSU\nNDU21ktKlvTV11t7RoubFnniCjc7WY8cOAebulII8sTBeuQA0MsQ5ABgOYIcACxHkAOA5QhyALAc\nQQ4AliPIAcByBDkAWI4gBwDLEeQAYDmCHAAsR5ADbaSkpMnhcCglJS3epXRR0tfXCeibID8PzoVF\ns4A22i6SZYyxetEsFtGyF4tmAUAvQ5ADgOUIcgCwHEEOAJYjyIFeJHFG5aCtpHgXAKD7nLz+qFFj\noyPepSCKaJEDgOUIcgCwHEEOAJYjyAHAcp0G+V133SWn06mxY8cGt9XV1cntdis7O1uTJ09WQ0ND\nTIsEAHSs0yC/8847tWbNmnbbPB6P3G63qqurVVRUJI/HE7MCge5walhe4kpK8J+vdwtp0axPPvlE\nU6ZM0fvvvy9JysnJ0aZNm+R0OlVbWyuXy6WqqqozD86iWbDE2RbHSrRFs1hEyx7dsmhWIBCQ0+mU\nJDmdTgUCgUgOAwCIgi5PCDq55nHH/2UrLy8P3na5XHK5XF09JdBlKSlpX0+OSZb0VbzLQS/n8/nk\n8/kifn7EXSs+n0/p6eny+/0qLCykawVWCaXLhK4VxEu3dK0UFxfL6/VKkrxer0pKSiI5DAAgCjoN\n8unTp+vqq6/WRx99pOHDh2vZsmWaO3eu1q1bp+zsbG3YsEFz587tjlqBiIW/WFTvGOXBIlqJgUu9\noVdI5Eu4daVr5fTXBT0Dl3oDgF6GIAcAyxHkAGA5ghwALEeQA4DlCHIAsBxBDgCWI8gBwHIEORJK\n5zMVe8eMzc6d/XVgpqedmNmJhNLRTEVmcjLT0ybM7ASAXoYgBwDLEeQAYDmCHAAsR5ADgOUIcgCw\nHEEOAJYjyJGgkpjYEpbwJkoxcahnSYp3AUBstEgyamxkFmdoTr5eJycIda6xsV68vj0HQQ7rtLa2\nqr6+XpKUlpamPn34jyV6N34DYJ3HHivXkCHfVnr6cP3mN7/pZG/WVolMqF1TdGH1BLTIYZ2jR5vU\n0vJLJSUF1NTU1Mne4XUZ4JRQu6bowuoJutQiX7NmjXJycjRixAgtXLgwWjUBAMIQcZC3trbqRz/6\nkdasWaNdu3ZpxYoV2r17dzRrQxs+ny/eJQDooSIO8srKSmVlZSkjI0PJycmaNm2aXnvttWjWhjYI\ncsTHyT5wh6Nvu+/oWSIO8gMHDmj48OHB+8OGDdOBAweiUhSAnuLUZwxfnfYdPUnEQc5fZcTLeef1\n0QUXLFVS0l8YegioC6NWhg4dqv379wfv79+/X8OGDWu3T2ZmJoEfRY8//ni8S+hx5syZozlz5py2\n1cH3OHzndz16MjMzw9o/4ku9tbS0aOTIkfrHP/6hb33rW7riiiu0YsUKXXrppZEcDgAQoYhb5ElJ\nSVq8eLGuu+46tba2aubMmYQ4AMRBTC++DACIvah/UvTKK69o9OjROu+887R9+/Z2jy1YsEAjRoxQ\nTk6O1q5dG+1TJ7zy8nINGzZMeXl5ysvL05o1a+JdkpWYyBZdGRkZGjdunPLy8nTFFVfEuxyr3HXX\nXXI6nRo7dmxwW11dndxut7KzszV58mQ1NDR0fiATZbt37zYfffSRcblcZtu2bcHtH374ocnNzTXN\nzc2mpqbGZGZmmtbW1mifPqGVl5ebZ599Nt5lWK2lpcVkZmaampoa09zcbHJzc82uXbviXZbVMjIy\nzOHDh+NdhpU2b95stm/fbsaMGRPcNmfOHLNw4UJjjDEej8f85Cc/6fQ4UW+R5+TkKDs7+4ztr732\nmqZPn67k5GRlZGQoKytLlZWV0T59wjP0hHUJE9lig/dlZCZOnKiBAwe227Zq1SqVlZVJksrKylRR\nUdHpcbptEO5//vOfdsMTmUAUmeeff165ubmaOXNmaP/lQjtMZIs+h8OhSZMmqaCgQEuWLIl3OdYL\nBAJyOp2SJKfTqUAg0OlzIhq14na7VVtbe8b2p556SlOmTAn5OIw7PVNHr+2TTz6pe++9Vz//+c8l\nST/72c/0yCOPaOnSpd1dotV4z0Xfm2++qSFDhujgwYNyu93KycnRxIkT411WQji5LELn79mIgnzd\nunVhP+f0CUSfffaZhg4dGsnpE1qor+2sWbPC+qOJk0KZyIbwDBkyRJI0ePBglZaWqrKykiDvAqfT\nqdraWqWnp8vv9+uiiy7q9Dkx7Vpp229WXFysl19+Wc3NzaqpqdGePXv4hDtMfr8/ePvVV19t90k3\nQlNQUKA9e/bok08+UXNzs/785z+ruLg43mVZq6mpSY2NjZKkY8eOae3atbwvu6i4uFher1eS5PV6\nVVJS0vmTov0p7F//+lczbNgwc8EFFxin02muv/764GNPPvmkyczMNCNHjjRr1qyJ9qkT3owZM8zY\nsWPNuHHjzC233GJqa2vjXZKVVq9ebbKzs01mZqZ56qmn4l2O1fbu3Wtyc3NNbm6uGT16NK9nmKZN\nm2aGDBlikpOTzbBhw8zvf/97c/jwYVNUVGRGjBhh3G63qa+v7/Q4TAgCAMuxdBwAWI4gBwDLEeQA\nYDmCHAAsR5ADgOUIcgCwHEEOAJYjyAHAcv8DUrLE4leGVckAAAAASUVORK5CYII=\n" } ], "prompt_number": 45 }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "It is important to note a subtle different between display and display_png. The former computes all representations of the object, and lets the notebook UI decide which to display. The later only computes the PNG representation.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Create a new Gaussian with different parameters:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "x2 = Gaussian(0, 2, 2000)\n", "x2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$\\mathcal{N}(\\mu=0, \\sigma=2),\\ N=2000$" ], "metadata": {}, "output_type": "pyout", "png": "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\n/xa6Y+R78p3rD0fthDTck5KSVFdX53ldV1en5ORkr2nS0tKi7kfgm2/e8nq9fXtXP2Sd2/ydrvfb\n+kod4WjrybIW/d8jVMvry//WcLQFvz39y4ngv3PRlkNpaWkBTR/SOzGdPn1aw4cP17vvvquhQ4dq\n4sSJWrlypUaMGBGqVQAA/BDSnntMTIyWLVumW265Re3t7ZozZw7BDgAREPZ7qAIAel/YzlB94403\nNHLkSF100UXavn2713slJSUaNmyYMjMztX79+nCVZIzi4mIlJydr3LhxGjdunCoqKiJdUtTh5LvQ\nSk1N1ZgxYzRu3DhNnDgx0uVEnfvvv192u12jR4/2tDU3N8vpdCojI0O5ublqaWnpfiFWmOzcudP6\n8ssvLYfDYW3bts3TvmPHDis7O9tqa2uzamtrrbS0NKu9vT1cZRmhuLjY+t3vfhfpMqLW6dOnrbS0\nNKu2ttZqa2uzsrOzraqqqkiXFdVSU1OtQ4cORbqMqPX+++9b27dvt0aNGuVpe/LJJ62lS5dalmVZ\npaWl1s9//vNulxG2nntmZqYyMjI6tZeXl6uwsFCxsbFKTU1Venq6Kisrw1WWMSxG14Jm2sl3fQWf\nyeBNnjxZgwYN8mpbu3atioqKJElFRUUqKyvrdhkRv3DY/v37vQ6XNOHEp0h44YUXlJ2drTlz5lz4\nzzV4MfHku0iz2Wy6+eabNWHCBL344ouRLscITU1NstvtkiS73a6mpqZupw/p0TJOp1ONjY2d2pcs\nWaJp06b5mMO3aDv+NBy62raLFy/Www8/rF//+teSpF/96ld64okn9PLLL4e7xKjF5y30PvjgA111\n1VU6cOCAnE6nMjMzNXny5EiXZQx/LlMS0nDfsGFDwPOcf+JTfX29kpKSQlmWEfzdtnPnzg3ohxT+\nnXyHwFx11VWSpMGDB2v69OmqrKwk3HvIbrersbFRiYmJamho0JAhvi+FclZEhmXOHYvLy8vTqlWr\n1NbWptraWu3evZu96wFqaGjwPH/zzTe99rDjwiZMmKDdu3drz549amtr0+rVq5WXlxfpsqLW8ePH\n1draKkk6duyY1q9fz2cyBPLy8uRyuSRJLpdL+fn53c/Qe/t7vf3973+3kpOTrUsuucSy2+3W1KlT\nPe8tXrzYSktLs4YPH25VVFSEqyRjzJo1yxo9erQ1ZswY684777QaGxsjXVLUWbdunZWRkWGlpaVZ\nS5YsiXQ5Ua2mpsbKzs62srOzrZEjR7I9gzBz5kzrqquusmJjY63k5GTrlVdesQ4dOmTl5ORYw4YN\ns5xOp3X48OFul8FJTABgoIgfLQMACD3CHQAMRLgDgIEIdwAwEOEOAAYi3AHAQIQ7ABiIcAcAA/1/\nt6/k+ndBNwkAAAAASUVORK5CYII=\n", "prompt_number": 48, "text": [ "<__main__.Gaussian at 0x108717a10>" ] } ], "prompt_number": 48 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can then compare the two Gaussians by displaying their histograms:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "display_png(x)\n", "display_png(x2)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAXIAAAENCAYAAAASUO4dAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAGolJREFUeJzt3XtwlNUdxvFnMUGhkgkpuKHANJoQIreQGEWttBvD4pWY\nWAdhOpgqOKJ26m2wQG0b6yhL1T9Q2k5FSrcyxeK0RmqRAQoLxVGDXOoFYqhEQbrZAkkwEDQmnP6B\nbBMgZHezm83ZfD8zmey+++77/rJsnhzOnnNehzHGCABgrT7xLgAA0DUEOQBYjiAHAMsR5ABgOYIc\nACxHkAOA5QhyALAcQQ4AliPIEZaampp4lxBTfr9fTU1N8S4DCAtBjnPaunWrcnNzde+996qmpkZv\nv/12vEuKqcGDB+tXv/pVvMsAwuJgij4kafbs2frOd76jGTNmtNt+77336tZbb9Xll1+uBQsWaOHC\nhTE5/5/+9Cf5/X5VVlaqtLRU06ZNi8l5Trdz504tX75czzzzTHDb1q1btXv3bt1xxx3dUkNHzlZb\nRUWFdu3apT59+mjo0KHBf69wtyPBGMAYc+WVV5rbbrut3bYPPvjArF692hhjzM6dO81zzz0Xk3Pv\n2bMneOyDBw+a1NRUs3fv3picq61nn33WlJaWmh/+8IdnPDZjxoyQj/P222+bkpISM3ToUPPVV18Z\nY4ypra01t99+u7npppvMm2++GZXaGhoaTH5+fvD+lVdeaQ4dOhTW9oMHD4ZdC3o+ulag1tZWTZo0\nSRs2bNAXX3wR3O7z+XTttddKkl5//fXg7Wj78MMPg90ZgwYNUlZWlrZt2xaTc7X18MMP65Zbbjnr\nY4MHD9a///3vkI4zYcIEXX/99crOztZf/vIXSZLT6dTNN9+sV155RVdffXVUatu8ebNGjRoVvJ+b\nm6sNGzaEtX3jxo1h14KeLyneBSD+PvzwQxUVFWnnzp164403VFpaKkk6fvy4zj//fEknuxvmz58f\n1nH37t2rJUuWdPj4lVdeqVtuuUU33nij3njjDUmSMUZ+v19ZWVkR/SyhnvMU00HPYm5urrZt2xZS\nHSdOnFBycrJ+/OMf6+mnn9btt98uSTp27Jj69esXtdo+++wzpaamBu+npqZqz549SktLC2s7Eg9B\nDlVWVmrGjBmaNm2aVqxYodLSUn355Zfq27dvcJ+mpiY5HI7g/dbWVn3ve9/Tli1bJEkzZ87UvHnz\n2gXfJZdcogULFnR6/uTkZI0ZM0aS9Pe//10FBQUaP378Wfetrq7WY489poMHD+rdd9+Vy+XSTTfd\npNmzZ4d1zlPa/kxtDRw4UNXV1SEdY/v27SooKNCYMWP08MMPa/v27crPzz/j2F2traGhQRdccEHw\nft++fXX06FE5HI6wtiPx0LUCHT16VOeff76Ki4u1du1a/fe//1VlZaUmTJgQ3Ke1tbXdc9566y19\n+9vflnSy5fjWW29F3Io+paGhQX/4wx+0fPnysz5eV1en2bNn649//KM2btyooqIiLV++PBjikeio\nRd6vXz81NzeHdIz33ntP48aNU58+fXTffffp+eef10cffaSRI0dGXNfZahswYEC7bcePH1daWlrY\n25F4aJH3ckeOHFH//v0lnQyK66+/XosXL9Y3v/lN3X///cH9kpLav1XWrFmj6667TpK0Y8cOjR07\n9oxjh9OVYIyRx+PRiy++qAsvvFCffvpp8A/FKb/+9a91//33B1uZX375ZbD2SM4pddwiP3LkSMih\nd+LEieDtWbNmKSsrS6NGjdIDDzwQ1doyMzP17rvvBu8fPnxY+fn5Sk1NDWn7oUOHlJ+fH9LPBMvE\n61NWxFdjY6PZuXOn+e1vf9tuJMO2bdtMSkqKmTdvXrv977jjDtPY2Bi8X1BQYN5//31jjDG//OUv\nze9+9zvz2muvRVzPokWLzLvvvmv8fr955513jM/nM8YYU11dbVpbW40xxsyZM8fs2rXLGHNyRM0j\njzwS8flOWbZs2VlHrTz//PNm/fr1wftt62irubnZeL3edtvuuecec8MNN0S9tqNHj5oxY8YE748b\nN84EAoGwtyPxnFdeXl4e7z8m6H4+n08TJ07UuHHjNGXKlOD2IUOG6IMPPlB+fn671lt9fb2OHTum\niy++WAcPHtSCBQs0cOBANTY26siRI/r888918cUX65JLLgm7li1btmjatGl64YUX9Oyzz2rp0qV6\n4oknlJKSomuuuUYjRoxQVlaWsrKytHr1ah04cEA7d+7U/Pnz1adP5L2Dixcv1vLly/Xee+/pyJEj\nys/PD364+8ILL2j27NnB/4m0reOUrVu36oEHHtC+ffs0YcIEpaSkSDrZF378+HFNnDgxqrUNGDBA\nAwYM0N/+9jf5fD5NmTJFV111lfr27RvWdiSgzpK+qqrKjB8/PviVkpJiFi1aZA4fPmwmTZpkRowY\n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\nBAJyOp2SJKfTqUAg0OlzIhq14na7VVtbe8b2p556SlOmTAn5OIw7PVNHr+2TTz6pe++9Vz//+c8l\nST/72c/0yCOPaOnSpd1dotV4z0Xfm2++qSFDhujgwYNyu93KycnRxIkT411WQji5LELn79mIgnzd\nunVhP+f0CUSfffaZhg4dGsnpE1qor+2sWbPC+qOJk0KZyIbwDBkyRJI0ePBglZaWqrKykiDvAqfT\nqdraWqWnp8vv9+uiiy7q9Dkx7Vpp229WXFysl19+Wc3NzaqpqdGePXv4hDtMfr8/ePvVV19t90k3\nQlNQUKA9e/bok08+UXNzs/785z+ruLg43mVZq6mpSY2NjZKkY8eOae3atbwvu6i4uFher1eS5PV6\nVVJS0vmTov0p7F//+lczbNgwc8EFFxin02muv/764GNPPvmkyczMNCNHjjRr1qyJ9qkT3owZM8zY\nsWPNuHHjzC233GJqa2vjXZKVVq9ebbKzs01mZqZ56qmn4l2O1fbu3Wtyc3NNbm6uGT16NK9nmKZN\nm2aGDBlikpOTzbBhw8zvf/97c/jwYVNUVGRGjBhh3G63qa+v7/Q4TAgCAMuxdBwAWI4gBwDLEeQA\nYDmCHAAsR5ADgOUIcgCwHEEOAJYjyAHAcv8DUrLE4leGVckAAAAASUVORK5CYII=\n" }, { "metadata": {}, "output_type": "display_data", "png": "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\n/xa6Y+R78p3rD0fthDTck5KSVFdX53ldV1en5ORkr2nS0tKi7kfgm2/e8nq9fXtXP2Sd2/ydrvfb\n+kod4WjrybIW/d8jVMvry//WcLQFvz39y4ngv3PRlkNpaWkBTR/SOzGdPn1aw4cP17vvvquhQ4dq\n4sSJWrlypUaMGBGqVQAA/BDSnntMTIyWLVumW265Re3t7ZozZw7BDgAREPZ7qAIAel/YzlB94403\nNHLkSF100UXavn2713slJSUaNmyYMjMztX79+nCVZIzi4mIlJydr3LhxGjdunCoqKiJdUtTh5LvQ\nSk1N1ZgxYzRu3DhNnDgx0uVEnfvvv192u12jR4/2tDU3N8vpdCojI0O5ublqaWnpfiFWmOzcudP6\n8ssvLYfDYW3bts3TvmPHDis7O9tqa2uzamtrrbS0NKu9vT1cZRmhuLjY+t3vfhfpMqLW6dOnrbS0\nNKu2ttZqa2uzsrOzraqqqkiXFdVSU1OtQ4cORbqMqPX+++9b27dvt0aNGuVpe/LJJ62lS5dalmVZ\npaWl1s9//vNulxG2nntmZqYyMjI6tZeXl6uwsFCxsbFKTU1Venq6Kisrw1WWMSxG14Jm2sl3fQWf\nyeBNnjxZgwYN8mpbu3atioqKJElFRUUqKyvrdhkRv3DY/v37vQ6XNOHEp0h44YUXlJ2drTlz5lz4\nzzV4MfHku0iz2Wy6+eabNWHCBL344ouRLscITU1NstvtkiS73a6mpqZupw/p0TJOp1ONjY2d2pcs\nWaJp06b5mMO3aDv+NBy62raLFy/Www8/rF//+teSpF/96ld64okn9PLLL4e7xKjF5y30PvjgA111\n1VU6cOCAnE6nMjMzNXny5EiXZQx/LlMS0nDfsGFDwPOcf+JTfX29kpKSQlmWEfzdtnPnzg3ohxT+\nnXyHwFx11VWSpMGDB2v69OmqrKwk3HvIbrersbFRiYmJamho0JAhvi+FclZEhmXOHYvLy8vTqlWr\n1NbWptraWu3evZu96wFqaGjwPH/zzTe99rDjwiZMmKDdu3drz549amtr0+rVq5WXlxfpsqLW8ePH\n1draKkk6duyY1q9fz2cyBPLy8uRyuSRJLpdL+fn53c/Qe/t7vf3973+3kpOTrUsuucSy2+3W1KlT\nPe8tXrzYSktLs4YPH25VVFSEqyRjzJo1yxo9erQ1ZswY684777QaGxsjXVLUWbdunZWRkWGlpaVZ\nS5YsiXQ5Ua2mpsbKzs62srOzrZEjR7I9gzBz5kzrqquusmJjY63k5GTrlVdesQ4dOmTl5ORYw4YN\ns5xOp3X48OFul8FJTABgoIgfLQMACD3CHQAMRLgDgIEIdwAwEOEOAAYi3AHAQIQ7ABiIcAcAA/1/\nt6/k+ndBNwkAAAAASUVORK5CYII=\n" } ], "prompt_number": 49 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Note that like `print`, you can call any of the `display` functions multiple times in a cell." ] }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "Adding IPython display support to existing objects" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "When you are directly writing your own classes, you can adapt them for display in IPython by following the above approach. But in practice, you often need to work with existing classes that you can't easily modify. We now illustrate how to add rich output capabilities to existing objects. We will use the NumPy polynomials and change their default representation to be a formatted LaTeX expression." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "First, consider how a NumPy polynomial object renders by default:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "p = np.polynomial.Polynomial([1,2,3], [-10, 10])\n", "p" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 51, "text": [ "Polynomial([ 1., 2., 3.], [-10., 10.], [-1., 1.])" ] } ], "prompt_number": 51 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Next, define a function that pretty-prints a polynomial as a LaTeX string:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "def poly_to_latex(p):\n", " terms = ['%.2g' % p.coef[0]]\n", " if len(p) > 1:\n", " term = 'x'\n", " c = p.coef[1]\n", " if c!=1:\n", " term = ('%.2g ' % c) + term\n", " terms.append(term)\n", " if len(p) > 2:\n", " for i in range(2, len(p)):\n", " term = 'x^%d' % i\n", " c = p.coef[i]\n", " if c!=1:\n", " term = ('%.2g ' % c) + term\n", " terms.append(term)\n", " px = '$P(x)=%s$' % '+'.join(terms)\n", " dom = r', $x \\in [%.2g,\\ %.2g]$' % tuple(p.domain)\n", " return px+dom" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 73 }, { "cell_type": "markdown", "metadata": {}, "source": [ "This produces, on our polynomial ``p``, the following:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "poly_to_latex(p)" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 62, "text": [ "'$P(x)=1+2 x+3 x^2$, $x \\\\in [-10,\\\\ 10]$'" ] } ], "prompt_number": 62 }, { "cell_type": "markdown", "metadata": {}, "source": [ "You can render this string using the `Latex` class:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.display import Latex\n", "Latex(poly_to_latex(p))" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$P(x)=1+2 x+3 x^2$, $x \\in [-10,\\ 10]$" ], "metadata": {}, "output_type": "pyout", "prompt_number": 63, "text": [ "" ] } ], "prompt_number": 63 }, { "cell_type": "markdown", "metadata": {}, "source": [ "However, you can configure IPython to do this automatically by registering the `Polynomial` class and the `plot_to_latex` function with an IPython display formatter. Let's look at the default formatters provided by IPython:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "ip = get_ipython()\n", "for mime, formatter in ip.display_formatter.formatters.items():\n", " print '%24s : %s' % (mime, formatter.__class__.__name__)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ " text/plain : PlainTextFormatter\n", " image/jpeg : JPEGFormatter\n", " text/html : HTMLFormatter\n", " image/svg+xml : SVGFormatter\n", " image/png : PNGFormatter\n", " application/javascript : JavascriptFormatter\n", " text/markdown : MarkdownFormatter\n", " text/latex : LatexFormatter\n", " application/json : JSONFormatter\n", " application/pdf : PDFFormatter\n" ] } ], "prompt_number": 64 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The `formatters` attribute is a dictionary keyed by MIME types. To define a custom LaTeX display function, you want a handle on the `text/latex` formatter:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "ip = get_ipython()\n", "latex_f = ip.display_formatter.formatters['text/latex']" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 74 }, { "cell_type": "markdown", "metadata": {}, "source": [ "The formatter object has a couple of methods for registering custom display functions for existing types." ] }, { "cell_type": "code", "collapsed": false, "input": [ "help(latex_f.for_type)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Help on method for_type in module IPython.core.formatters:\n", "\n", "for_type(self, typ, func=None) method of IPython.core.formatters.LatexFormatter instance\n", " Add a format function for a given type.\n", " \n", " Parameters\n", " -----------\n", " typ : type or '__module__.__name__' string for a type\n", " The class of the object that will be formatted using `func`.\n", " func : callable\n", " A callable for computing the format data.\n", " `func` will be called with the object to be formatted,\n", " and will return the raw data in this formatter's format.\n", " Subclasses may use a different call signature for the\n", " `func` argument.\n", " \n", " If `func` is None or not specified, there will be no change,\n", " only returning the current value.\n", " \n", " Returns\n", " -------\n", " oldfunc : callable\n", " The currently registered callable.\n", " If you are registering a new formatter,\n", " this will be the previous value (to enable restoring later).\n", "\n" ] } ], "prompt_number": 75 }, { "cell_type": "code", "collapsed": false, "input": [ "help(latex_f.for_type_by_name)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "Help on method for_type_by_name in module IPython.core.formatters:\n", "\n", "for_type_by_name(self, type_module, type_name, func=None) method of IPython.core.formatters.LatexFormatter instance\n", " Add a format function for a type specified by the full dotted\n", " module and name of the type, rather than the type of the object.\n", " \n", " Parameters\n", " ----------\n", " type_module : str\n", " The full dotted name of the module the type is defined in, like\n", " ``numpy``.\n", " type_name : str\n", " The name of the type (the class name), like ``dtype``\n", " func : callable\n", " A callable for computing the format data.\n", " `func` will be called with the object to be formatted,\n", " and will return the raw data in this formatter's format.\n", " Subclasses may use a different call signature for the\n", " `func` argument.\n", " \n", " If `func` is None or unspecified, there will be no change,\n", " only returning the current value.\n", " \n", " Returns\n", " -------\n", " oldfunc : callable\n", " The currently registered callable.\n", " If you are registering a new formatter,\n", " this will be the previous value (to enable restoring later).\n", "\n" ] } ], "prompt_number": 70 }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case, we will use `for_type_by_name` to register `poly_to_latex` as the display function for the `Polynomial` type:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "latex_formatter.for_type_by_name('numpy.polynomial.polynomial',\n", " 'Polynomial', poly_to_latex)" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 58 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Once the custom display function has been registered, all NumPy `Polynomial` instances will be represented by their LaTeX form instead:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "p" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$P(x)=1+2 x+3 x^2$, $x \\in [-10,\\ 10]$" ], "metadata": {}, "output_type": "pyout", "prompt_number": 71, "text": [ "Polynomial([ 1., 2., 3.], [-10., 10.], [-1., 1.])" ] } ], "prompt_number": 71 }, { "cell_type": "code", "collapsed": false, "input": [ "p2 = np.polynomial.Polynomial([-20, 71, -15, 1])\n", "p2" ], "language": "python", "metadata": {}, "outputs": [ { "latex": [ "$P(x)=-20+71 x+-15 x^2+x^3$, $x \\in [-1,\\ 1]$" ], "metadata": {}, "output_type": "pyout", "prompt_number": 72, "text": [ "Polynomial([-20., 71., -15., 1.], [-1., 1.], [-1., 1.])" ] } ], "prompt_number": 72 }, { "cell_type": "heading", "level": 2, "metadata": {}, "source": [ "More complex display with `_ipython_display_`" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Rich output special methods and functions can only display one object or MIME type at a time. Sometimes this is not enough if you want to display multiple objects or MIME types at once. An example of this would be to use an HTML representation to put some HTML elements in the DOM and then use a JavaScript representation to add events to those elements.\n", "\n", "**IPython 2.0** recognizes another display method, `_ipython_display_`, which allows your objects to take complete control of displaying themselves. If this method is defined, IPython will call it, and make no effort to display the object using the above described `_repr_*_` methods for custom display functions. It's a way for you to say \"Back off, IPython, I can display this myself.\" Most importantly, your `_ipython_display_` method can make multiple calls to the top-level `display` functions to accomplish its goals.\n", "\n", "Here is an object that uses `display_html` and `display_javascript` to make a plot using the [Flot](http://www.flotcharts.org/) JavaScript plotting library:" ] }, { "cell_type": "code", "collapsed": false, "input": [ "import json\n", "import uuid\n", "from IPython.display import display_javascript, display_html, display\n", "\n", "class FlotPlot(object):\n", " def __init__(self, x, y):\n", " self.x = x\n", " self.y = y\n", " self.uuid = str(uuid.uuid4())\n", " \n", " def _ipython_display_(self):\n", " json_data = json.dumps(zip(self.x, self.y))\n", " display_html('
'.format(self.uuid),\n", " raw=True\n", " )\n", " display_javascript(\"\"\"\n", " require([\"//cdnjs.cloudflare.com/ajax/libs/flot/0.8.2/jquery.flot.min.js\"], function() {\n", " var line = JSON.parse(\"%s\");\n", " console.log(line);\n", " $.plot(\"#%s\", [line]);\n", " });\n", " \"\"\" % (json_data, self.uuid), raw=True)\n" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 78 }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "x = np.linspace(0,10)\n", "y = np.sin(x)\n", "FlotPlot(x, np.sin(x))" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "
" ], "metadata": {}, "output_type": "display_data" }, { "javascript": [ "\n", " require([\"//cdnjs.cloudflare.com/ajax/libs/flot/0.8.2/jquery.flot.min.js\"], function() {\n", " var line = JSON.parse(\"[[0.0, 0.0], [0.20408163265306123, 0.20266793654820095], [0.40816326530612246, 0.39692414892492234], [0.61224489795918369, 0.57470604121617908], [0.81632653061224492, 0.72863478346935029], [1.0204081632653061, 0.85232156971961837], [1.2244897959183674, 0.94063278511248671], [1.4285714285714286, 0.98990307637212394], [1.6326530612244898, 0.99808748213471832], [1.8367346938775511, 0.96484630898376322], [2.0408163265306123, 0.89155923041100371], [2.2448979591836737, 0.7812680235262639], [2.4489795918367347, 0.63855032022660208], [2.6530612244897958, 0.46932961277720098], [2.8571428571428572, 0.28062939951435684], [3.0612244897959187, 0.080281674842813497], [3.2653061224489797, -0.12339813736217871], [3.4693877551020407, -0.32195631507261868], [3.6734693877551021, -0.50715170948451438], [3.8775510204081636, -0.67129779355193209], [4.0816326530612246, -0.80758169096833643], [4.2857142857142856, -0.91034694431078278], [4.4897959183673475, -0.97532828606704558], [4.6938775510204085, -0.99982866838408957], [4.8979591836734695, -0.98283120392563061], [5.1020408163265305, -0.92504137173820289], [5.3061224489795915, -0.82885773637304272], [5.5102040816326534, -0.69827239556539955], [5.7142857142857144, -0.53870528838615628], [5.9183673469387754, -0.35677924089893803], [6.1224489795918373, -0.16004508604325057], [6.3265306122448983, 0.043331733368683463], [6.5306122448979593, 0.24491007101197931], [6.7346938775510203, 0.43632342647181932], [6.9387755102040813, 0.6096271964908323], [7.1428571428571432, 0.75762841539272019], [7.3469387755102042, 0.87418429881973347], [7.5510204081632653, 0.95445719973875187], [7.7551020408163271, 0.99511539477766364], [7.9591836734693882, 0.99447136726361685], [8.1632653061224492, 0.95255184753146038], [8.3673469387755102, 0.87109670348232071], [8.5714285714285712, 0.75348672743963763], [8.7755102040816322, 0.60460331650615429], [8.979591836734695, 0.43062587038273736], [9.183673469387756, 0.23877531564403087], [9.387755102040817, 0.037014401485062368], [9.591836734693878, -0.16628279384875641], [9.795918367346939, -0.36267842882654883], [10.0, -0.54402111088936989]]\");\n", " console.log(line);\n", " $.plot(\"#7883353a-3200-411a-83e3-e2c57af1779b\", [line]);\n", " });\n", " " ], "metadata": {}, "output_type": "display_data" } ], "prompt_number": 79 }, { "cell_type": "code", "collapsed": false, "input": [], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }