{ "metadata": { "name": "", "signature": "sha256:97ecd13824080429b51cddf328f1440206d788d48078730d445f25c679e6a7ff" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "A very incomplete example showing how to make some interactive and javascript widgets for examining parameter space" ] }, { "cell_type": "code", "collapsed": false, "input": [ "from IPython.html.widgets import interact, interactive, fixed\n", "from IPython.html import widgets\n", "from IPython.display import clear_output, display, HTML\n", "from ipywidgets import StaticInteract, RangeWidget, RadioWidget" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "%run ph2co_grid_computation.py" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/Users/adam/repos/astroquery/astroquery/lamda/__init__.py:21: UserWarning: Experimental: LAMDA has not yet been refactored to have its API match the rest of astroquery.\n", " warnings.warn(\"Experimental: LAMDA has not yet been refactored to have its API match the rest of astroquery.\")\n", "WARNING:astropy:AstropyDeprecationWarning: 'dtypes' has been renamed to the singular 'dtype'.\n" ] }, { "output_type": "stream", "stream": "stdout", "text": [ "WARNING: AstropyDeprecationWarning: 'dtypes' has been renamed to the singular 'dtype'. [astropy.table.table]\n", " Tex tau ... brightness T_B " ] }, { "output_type": "stream", "stream": "stdout", "text": [ "\n", " K ... erg / (cm2 Hz s sr) K \n", "---------------- ----------------- ... ------------------- ---------------\n", "-0.0817529700928 -0.0342780871976 ... 1.56037207206e-22 0.100352601934\n", " 6.09190527741 41.9634499416 ... 1.73595925381e-14 2.66518509246\n", " -0.171716538322 -0.00182074261889 ... 2.06896749361e-22 0.0053264336307\n" ] }, { "output_type": "stream", "stream": "stderr", "text": [ "/Users/adam/repos/astropy/astropy/units/quantity.py:608: RuntimeWarning: invalid value encountered in true_divide\n", " return np.true_divide(self, other)\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "import sys\n", "sys.path += ['/Users/adam/virtual-python/lib/python2.7/site-packages/mpld3-0.0.1-py2.7.egg']\n", "sys.path += ['/Users/adam/virtual-python/lib/python2.7/site-packages/JSAnimation-0.1-py2.7.egg-info']" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 53 }, { "cell_type": "code", "collapsed": false, "input": [ "class LinkedView(plugins.PluginBase):\n", " \"\"\"A simple plugin showing how multiple axes can be linked\"\"\"\n", " \n", " FIG_JS = jinja2.Template(\"\"\"\n", " var linedata{{ id }} = {{ linedata }};\n", "\n", " ax{{ axid }}.axes.selectAll(\".paths{{ collid }}\")\n", "\t .on(\"mouseover\", function(d, i){\n", " line{{ elid }}.data = linedata{{ id }}[i];\n", " line{{ elid }}.lineobj.transition()\n", " .attr(\"d\", line{{ elid }}.line(line{{ elid }}.data))\n", " .style(\"stroke\", this.style.fill);})\n", " \"\"\")\n", "\n", " def __init__(self, points, line, linedata):\n", " self.points = points\n", " self.line = line\n", " self.linedata = linedata\n", " self.id = self.generate_unique_id()\n", "\n", " def _fig_js_args(self):\n", " points = self._get_d3obj(self.points)\n", " line = self._get_d3obj(self.line)\n", " return dict(id=self.id,\n", " axid=points.axid,\n", " collid=points.collid,\n", " elid=line.elid,\n", " lineaxid=line.axid,\n", " lineid=line.lineid,\n", " linedata=json.dumps(self.linedata))\n", " \n", " \n", "class Slider(plugins.PluginBase):\n", " FIG_JS = jinja2.Template(\"\"\"\n", " fig.root.append(\"div\")\n", " .append(\"slider\")\n", " .on(\"slide\", function(evt,value) {\n", " d3.select('#slider3text').text(value);\n", " }\n", " );\n", " \"\"\")\n", " \n", " # line = ax{{ axid }}.axes.selectAll(\".line{{ elid }}\");\n", " # line.data = linedata{{ id }}[value];\n", " " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 34 }, { "cell_type": "code", "collapsed": false, "input": [ "fig, ((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2)\n", "d3fig = fig_to_d3(fig)\n", "\n", "#lines1 = ax1.plot(temperatures, taugrid_71M)\n", "points1 = ax1.scatter(temperatures, taugrid_71M[:,10])\n", "lines2 = ax2.plot(temperatures, texgrid_71M, 'w')\n", "ax2.set_ylim(0,50)\n", "lines3 = ax3.plot(densities, taugrid_71M.T,'w')\n", "lines4 = ax4.plot(densities, taugrid_71M.T,'w')\n", "\n", "linedata = np.array([(temperatures,tx) for tx in texgrid_71M]).swapaxes(1,2)\n", "plugins.connect(fig, LinkedView(points1, lines2[0], linedata.tolist()))\n", "\n", "linedata = np.array([(densities,tx) for tx in taugrid_71M]).swapaxes(1,2)\n", "plugins.connect(fig, LinkedView(points1, lines3[0], linedata.tolist()))\n", "\n", "linedata = np.array([(densities,tx) for tx in texgrid_71M]).swapaxes(1,2)\n", "plugins.connect(fig, LinkedView(points1, lines4[0], linedata.tolist()))\n", "\n", "plugins.connect(fig, plugins.ResetButton())\n", "#plugins.connect(fig, Slider())\n", "\n", "display_d3(fig)\n", "\n", "# transpose line data and add plugin\n", "#linedata = data.transpose(0, 2, 1).tolist()\n", "\n", "#show_d3()" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", "\n", "\n", "\n", " \n", "\n", "\n", "\n", "
\n", "
\n", " \n", "\n", "\n", "\n" ], "metadata": {}, "output_type": "pyout", "prompt_number": 129, "text": [ "" ] } ], "prompt_number": 129 }, { "cell_type": "code", "collapsed": false, "input": [ "pb = plugins.PluginBase()\n", "plugins.connect(fig, LinkedView(None,None,None))\n", "pb.figure = fig" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 16 }, { "cell_type": "code", "collapsed": false, "input": [ "pb._get_d3obj(lines1[0])" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "'AxesSubplot' object has no attribute 'objmap'", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mpb\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_d3obj\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlines1\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[0;32m/Users/adam/virtual-python/lib/python2.7/site-packages/mpld3-0.0.1-py2.7.egg/mpld3/plugins.pyc\u001b[0m in \u001b[0;36m_get_d3obj\u001b[0;34m(self, mplobj)\u001b[0m\n\u001b[1;32m 84\u001b[0m \u001b[0mobj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 85\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0max\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0maxes\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 86\u001b[0;31m \u001b[0mobj\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mobj\u001b[0m \u001b[0;32mor\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mobjmap\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mmplobj\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 87\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mobj\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 88\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mAttributeError\u001b[0m: 'AxesSubplot' object has no attribute 'objmap'" ] } ], "prompt_number": 17 }, { "cell_type": "code", "collapsed": false, "input": [ "densities.size" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 122, "text": [ "20" ] } ], "prompt_number": 122 }, { "cell_type": "code", "collapsed": false, "input": [ "styleargs = {'linewidth': 2, 'alpha': 0.5, 'color':'#5A228B'}\n", "\n", "def setup(tem=5,dens=5,show=False):\n", " fig, ((ax1,ax2),(ax3,ax4)) = plt.subplots(2,2, sharex='col', sharey='row', squeeze=True, figsize=(10,7))\n", " plt.subplots_adjust(hspace=0,wspace=0)\n", " lines1, = ax1.plot(temperatures, taugrid_71M[dens,:], **styleargs)\n", " ax1.set_ylim(-0.2,0.2)\n", " ax1.plot(temperatures[tem],taugrid_71M[dens,tem], 'o',alpha=0.5, markeredgecolor='none')\n", " lines2, = ax3.plot(temperatures, texgrid_71M[dens,:], **styleargs)\n", " ax3.set_ylim(0,50)\n", " ax3.plot(temperatures[tem],texgrid_71M[dens,tem], 'o',alpha=0.5, markeredgecolor='none')\n", "\n", " lines3, = ax2.semilogx(densities, taugrid_71M[:,tem], **styleargs)\n", " ax2.set_ylim(-0.2,0.2)\n", " ax2.plot(densities[dens],taugrid_71M[dens,tem], 'o',alpha=0.5, markeredgecolor='none')\n", " lines4, = ax4.semilogx(densities, texgrid_71M[:,tem], **styleargs)\n", " ax4.plot(densities[dens],texgrid_71M[dens,tem], 'o',alpha=0.5, markeredgecolor='none')\n", " ax4.set_ylim(0,50)\n", " plt.suptitle(\"$T=%i$ K, $n=10^{%0.1f}$ cm$^{-3}$\" % (temperatures[tem],np.log10(densities[dens])))\n", " ax4.set_xlabel('$n(H_2)$')\n", " ax3.set_xlabel(\"T\")\n", " ax1.set_ylabel(r\"$\\tau$\")\n", " ax3.set_ylabel(\"$T_{ex}$\")\n", " if show:\n", " plt.show()\n", " return fig,lines1,lines2,lines3,lines4\n", " #return ax1,ax2,ax3,ax4\n", "\n", "#ax1,ax2,ax3,ax4 = setup()\n", "#fig,lines1,lines2,lines3,lines4 = setup()\n", "\n", "def run_plot_temden():\n", " fig,lines1,lines2,lines3,lines4 = setup()\n", " \n", " #@interact(tem=(0,10),dens=(0,10))\n", " def plot_temden(tem,dens):\n", " lines1.set_data(temperatures, taugrid_71M[dens,:])\n", " lines2.set_data(temperatures, texgrid_71M[dens,:])\n", " lines3.set_data(densities, taugrid_71M[:,tem])\n", " lines4.set_data(densities, texgrid_71M[:,tem])\n", " plt.show()\n", " interact(plot_temden, tem=(0,temperatures.size),dens=(0,densities.size))\n", " \n", "def dumb_interact():\n", " interact(setup, tem=(0,temperatures.size),dens=(0,densities.size), show=True)\n", " " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 123 }, { "cell_type": "code", "collapsed": false, "input": [ "dumb_interact()" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "display_data", "png": "iVBORw0KGgoAAAANSUhEUgAAAnUAAAHlCAYAAACTeQqKAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz\nAAALEgAACxIB0t1+/AAAIABJREFUeJzs3Xl0XPd55vnvW1XYCYIESIIAF3FfRIlaqcW2ZMiyLFq2\nZTubR0nGjidJe07idOJJZqx0uiM6PT1tuztpdyZncpLYcSueTmzHbnu8S7QsxNoXihTFfV+xkARB\nEMReqHf+qAJYgIoglircqlvP55wS7v3d7b0AePHodzdzd0RERESksEWCLkBEREREZk6hTkRERCQE\nFOpEREREQkChTkRERCQEFOpEREREQkChTkRERCQEFOpEREREQkChTkQkS8ys1sz+ZzP7WIZpHzaz\nxiDqEpHioFAnIpI9/xvwDaA8vdHMFgOfAGy2CjGzm8ysycz+r9napogES6FORCR71gG3AFXpje7e\nBrw5y7WsAQ4Di2Z5uyISEIU6EZk2M1tnZj82s0+Z2U/N7Cup4R1mNunji5nNN7MvpI3/FzMrNbPf\nMbP6DPNfSRt+xMwOmtmyme/RhDVGzOwvxrX9OzN71Mz+Taqpzd1fAxabWXUu67ked/8uUA28FmQd\nIjJ7FOpEZCZuBR51978B4sAXU8P/yd0TU1jPrzK2R+njwHFgyN3bM8zvAGb2IPBfga3ufno6OzAZ\nZjYf+APg3Wlt7wXM3b8HlJjZfcA/pmo6CtxoZjen5l0ErAceyEFtjWb2cNrn3lT7/wGcBtaY2bps\nb1dE8k8s6AJEpKAddveh1PA6dz+YGj4w2RWY2VqSAe7OtOZ/7e7//TrL3Q/8LfB+dz8+hZqnzN07\ngb8wsw+lNb8DeCM1vBN4j7t/7hrLnyMZXK/JzD4O/CHJwPom8KfAU8BLqW29DjwJPAEsBH7N3V9z\n9xagJcMqXwBuBwaAk5PYTREpcAp1IjJt7r4TRoPZ0bT2XVNYzU0kw9Evp7WtMrOtwCZ3//MMy5QD\n3wHe7e6HrreBVC/aLwL/kmra5O7/5xRqzGQR0Jsa7gEWT3dFZrYJ+BPgXne/aGbzgHnAapJ17yN5\nGvVj7v5OM3sU+DfAR6+1Tnd/ITX43HTrEpHColAnItlwF/BqeoOZ3Qg8dI35n3T3S2b2DpI9SpXp\nE93936fWsdrMHnb3p8YtP5ha7rdInha9Hk99PePur5nZh6dS5zWmRYDh1HA0bXg63gN8090vAqS+\nN/OA4+6+N1XnXuCnqfn3ACtmsD0RCSGFOhHJhi3AM+kN7r6PZA/TRNYDa4EFJK/9ujfVFnP3LwN9\nwGaSpyHTJYBfAX5mZn/s7v9xoo24+/Nm9tlUoKtJrXcqdWbSztW7XOcC56exjtEyyPy4k4G04QTJ\nMDsyrOO3iIyhg4KIZMMW4PPpDdfpAfsHd+9096+m5l0B3OTuL5nZApLXj0GyN6o50wrcvd/MPgA8\nZ2bt7v73ZvYM8Ovu3jqulgqgPzX6fuBHZvZOd39hMnVeY9rzqf3+ERlC7RT9DPiOmf1F6vTr/Bms\nS0SKlEKdiEybmd0CvI9kb9pHzezbqZsCJt0DZmblwO8BW1I3P/wA+H0z6yJ5uvRnGRbz1DY6U9fe\n/dzMzpO8Bu1ihvk3cfV6uivADSRPYU6qTjOrAv4VsNHM/gD4O5JB7BEz+6Xkavzp6+3rtbj7PjP7\nD8C/mNkwyWsMP8fV08ajs15jWEQEc9dxQUQKX+pmg0+6+x8FXYuISBAU6kRERERCQA8fFhEREQkB\nhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREFCoExER\nEQkBhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREFCo\nExEREQkBhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREAg01JnZVjM7YGaHzeyz\nGab/mpm9aWa7zewFM9s82WVFREREiom5ezAbNosCB4H3AmeB14DH3H1/2jz3AvvcvcvMtgLb3P2e\nySwrIiIiUkyC7Km7Czji7ifcfQj4OvDh9Bnc/SV370qNvgIsneyyIiIiIsUkyFC3BDidNn4m1XYt\nvwn8aJrLioiIiIRaLMBtT/q8r5k9APwvwDunsqyZBXNuWURERGQa3N2mu2yQPXVngWVp48tI9riN\nkbo54u+AR929cyrLArh7XnyeeOKJwGtQLYVRS77UoVqu/cnGsWWy+zPRfJmmXa9tqsNB7d9k2yca\nz9X+jSw/NBhn58+O8q0vPT/6+fZfvsCOnx6h53L/lH922di/fPjZTeb3sBj3bzL7OlNB9tS9Dqw1\nsxVAC/Ax4LH0GcxsOfA/gF939yNTWVZEJJ81NTXNeL5M067XNpnhbJjp/k22faLxXO1fU1MTXRd6\n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\nUKgTERERCQGFOhEREZEQUKgTERERCYFAQp2Z1ZrZdjM7ZGZPm9m8a8z392bWbmZvjWvfZmZnzGxn\n6rN1dioXERERyU9B9dQ9Dmx393XAM6nxTL4KZApsDvyFu9+W+vwkR3WKiIiIFISgQt2jwJOp4SeB\nj2Sayd2fAzqvsQ7dfC8iIiKSElSoq3f39tRwO1A/jXX8npm9aWZfudbpWxEREZFikbNQl7pm7q0M\nn0fT50u98mGqj2b/a2AlcCvQCvx5dqoWERERKUw5e6OEuz90rWmpmx8Wu3ubmTUA56a47tH5zezL\nwPevNe+2bdtGh5uammhqaprKpkREaG5uprm5eUybji0iMlOZji0zEci7X83si0CHu3/BzB4H5rl7\nxpslzGwF8H13vzmtrcHdW1PDnwG2uPuvZlhW734VkawL47tfRSR4M333a1Chrhb4JrAcOAH8irtf\nMrNG4O/c/QOp+f4JeDdQR7I370/d/atm9g8kT706cBz4VNo1eunbUagTkaxTqBORXCjIUDdbFOpE\nJBcU6kQkF2Ya6vRGCREREZEQUKgTERERCQGFOhEREZEQUKgTERERCQGFOhEREZEQUKgTERERCQGF\nOhEREZEQUKgTERERCQGFOhEREZEQUKgTERERCQGFOhEREZEQUKgTERERCQGFOhEREZEQUKgTERER\nCQGFOhEREZEQUKgTERERCYFAQp2Z1ZrZdjM7ZGZPm9m8DPMsM7NnzWyvmQ2a2Vkz22lmr6aWf9bM\nelKfn2Vah4iIiEixCKqn7nFgu7uvA55JjY83BHzG3TcBLUAv8Ji735Wa34DPAX+WGs60jrzR3Nwc\ndAmjVEtm+VJLvtQBqqVYhf17Heb9C/O+Qfj3b6aCCnWPAk+mhp8EPjJ+Bndvc/ddI6PAIWBJ2vJL\nUss+CSzNtI58kk+/iKols3ypJV/qANVSrML+vQ7z/oV53yD8+zdTQYW6endvTw23A/XXmT8KPAT8\nJzP77dT8C1LraAcWTGIdIiJ5Y7J/nCaaL9O067VNZjgbZrp/k22faDxX+5ern12m9jDt32Tawrx/\nk93XmchZqEtdM/dWhs+j6fO5u5PsibvWeuYAncCvAA8DvwvEMix/zXWIiOSbfPjDolA3PQp1159P\noe7tbbMR6iyZiWaXmR0Amty9zcwagGfdfUOG+UqAHwA/dvcvpdqeAH4HuAzcR/J6up8Dw+PXYWYK\neiIiIlIw3N2mu2xQp1+/B3wiNfwJ4LvjZzAzA75C8lq6r6TaqoD3Af8CnE0t+4nU8NvWAeDuefF5\n4oknAq9BtRRGLflSh2q59icbx5bJ7s9E82Wadr22qQ4HtX+TbZ9oPFf7l6ufXTb2Lx9+dteaNpm2\nMO/fZPZ1poIKdZ8HHjKzQ8B7UuOYWaOZ/TA1zzuBXwceBNrNrBfYS7Ln7n9NzfOnwL8DEiPrEBEp\nBE1NTTOeL9O067VNZjgbZrp/k22faDxX+5ern12m9jDt32Tawrx/k93XGZlp4s3nT3L38sMTTzwR\ndAmjVEtm+VJLvtThrlquJZ+OLbmQT9/rXAjz/oV539zDv3+pY8u0c4/eKDFLsv1/wTOhWjLLl1ry\npQ5QLcUq7N/rMO9fmPcNwr9/MxXIjRKzxcw8zPsnIsEws6xc/yIiki51bCm4GyVEREREJIsU6kRE\nRERCQKFOREREJAQU6kRERERCQKFOREREJAQU6kRERERCQKFOREREJAQU6kRERERCQKFOREREJAQU\n6kRERERCQKFOREREJAQU6kRERERCQKFOREREJAQU6kRERERCQKFOREREJAQU6kRERERCQKFORERE\nJAQU6kRERERCQKFOREREJAQU6kRERERCQKFOREREJAQU6kRERERCQKFOREREJAQU6kRERERCQKFO\nREREJAQU6kRERERCQKFOREREJAQU6kRERERCoGBCnZlFzWynmX0/NV5rZtvN7JCZPW1m84KuUURE\nRCQoBRPqgN8H9gGeGn8c2O7u64BnUuMiIiIiRakgQp2ZLQUeAb4MWKr5UeDJ1PCTwEcCKE1EREQk\nLxREqAP+C/C/A4m0tnp3b08NtwP1s16ViIiISJ7I+1BnZh8Ezrn7Tq720o3h7s7V07IiIiIiRScW\ndAGT8A7gUTN7BCgH5prZ14B2M1vs7m1m1gCcy7Twtm3bRoebmppoamrKfcUiEirNzc00NzePadOx\nRURmKtOxZSYs2clVGMzs3cAfufuHzOyLQIe7f8HMHgfmufvj4+b3Qto/ESkMZoaOLSKSbaljS8az\nkpOR96dfMxg5kn4eeMjMDgHvSY2LiIiIFKWC6qmbKvXUiUguqKdORHKhGHvqRERERGQchToRERGR\nEFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToR\nERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREFCoExEREQkB\nhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREFCoExER\nEQkBhToRERGREFCoExEREQkBhToRERGREFCoExEREQkBhToRERGREMj7UGdm5Wb2ipntMrN9ZvYf\nU+21ZrbdzA6Z2dNmNi/oWkVERESCYu4edA3XZWaV7t5rZjHgeeCPgEeBC+7+RTP7LDDf3R8ft5wX\nwv6JSGExM3RsEZFsSx1bbLrL531PHYC796YGS4Eo0Eky1D2Zan8S+EgApYmIiIjkhYIIdWYWMbNd\nQDvwrLvvBerdvT01SztQH1iBIiIiIgGLBV3AZLh7ArjVzGqAp8zsgXHT3cx0LkRERESKVkGEuhHu\n3mVmPwTuANrNbLG7t5lZA3Au0zLbtm0bHW5qaqKpqWk2ShWREGlubqa5uXlMm44tIjJTmY4tM5H3\nN0qY2QIg7u6XzKwCeAr4HPAw0OHuXzCzx4F5ulFCRGaDbpQQkVyY6Y0ShdBT1wA8aWYRktcAfs3d\nnzGzncA3zew3gRPArwRYo4iIiEig8r6nbibUUyciuaCeOhHJhaJ4pImIiIiITEyhTkRERCQEFOpE\nREREQkChTkRERCQEFOpEREREQkChTkRERCQEFOpEREREQkChTkRERCQEFOpEREREQkChTkRERCQE\nZj3UmdknzSxqZitme9siIiIiYRVET10pcAuwNIBti4iIiIRSEKHuFNAI3BfAtkVERERCKRbANk8C\nB4DlAWxbREREJJTM3YOuIWfMzMO8fyISDDNDxxYRybbUscWmu3xOTr+a2TXXa2aPmNl6M7stF9vO\nht7uAeJDw0GXISIiIjJpubqm7jUz+5/M7NYM0xYBc4BpJ9Fc6u7s46n/9gYv//Bg0KWIiIiITFqu\nQt3fuvvX3X1XhmmvAJ8GNuVo2zNy7vQlEokE7Sc76Wi5HHQ5IiIiIpOSq1B3l5mtv8a0Dnf/pLt/\nLUfbnpGLrd2jw4d2tARYiYiIiMjk5SrU3QD8VzM7Zmbbzew/mNmHzGwx8Is52mZWdLReGR1uOdbB\n5Y7eAKsRERERmZxchbp/dvet7r4K+B1gH/Ag8G3gizna5owN9A3R09VHNBZlxaZ6AA69od46ERER\n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\n", "text": [ "" ] } ], "prompt_number": 124 }, { "cell_type": "code", "collapsed": false, "input": [ "from JSAnimation import IPython_display\n", "from matplotlib import animation" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 57 }, { "cell_type": "code", "collapsed": false, "input": [ "fig,lines1,lines2,lines3,lines4 = setup()\n", "\n", "def plot_temden(dens,tem=5):\n", " lines1.set_data(temperatures, taugrid_71M[dens,:])\n", " lines2.set_data(temperatures, texgrid_71M[dens,:])\n", " lines3.set_data(densities, taugrid_71M[:,tem])\n", " lines4.set_data(densities, texgrid_71M[:,tem])\n", " plt.suptitle(\"$T=%i$ K, $n=10^{%0.1f}$ cm$^{-3}$\" % (temperatures[tem],np.log10(densities[dens])))\n", " return lines1,lines2,lines3,lines4\n", "\n", "animation.FuncAnimation(fig, plot_temden, frames=10, interval=1, blit=True)" ], "language": "python", "metadata": {}, "outputs": [ { "html": [ "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", " Once \n", " Loop \n", " Reflect \n", "
\n", "
\n", "\n", "\n", "\n" ], "metadata": {}, "output_type": "pyout", "prompt_number": 78, "text": [ "" ] }, { "metadata": {}, "output_type": "display_data", "text": [ "" ] } ], "prompt_number": 78 } ], "metadata": {} } ] }