Put GIF animation code into py script.
The animation script used in the KF chapter is general enough to be used by the entire book, so I removed it from the notebook and put it in gif_animate.py
This commit is contained in:
1 parent
5e3a14a33e
commit
b4e991b783
3 files changed
+63
-47
No files matched your search
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"metadata": {
|
||||
"name": "",
|
||||
"signature": "sha256:93eea406145c65de7a62ec1f5ec3c4d26d16c2116b86fa6bd9e80589122ce2c7"
|
||||
"signature": "sha256:1ca55361c7aabbb0d220744306919e1ec1a557e86f8de4612e37ee74aa2390ae"
|
||||
},
|
||||
"nbformat": 3,
|
||||
"nbformat_minor": 0,
|
||||
@@ -12,11 +12,14 @@
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"\n",
|
||||
"from __future__ import division, print_function\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"%matplotlib inline\n",
|
||||
"import sys\n",
|
||||
"sys.path.insert(0,'../code') # allow us to format the book\n",
|
||||
"\n",
|
||||
"# use same formatting as rest of book so that the plots are\n",
|
||||
"# consistant with that look and feel.\n",
|
||||
"import book_format\n",
|
||||
"book_format.load_style()"
|
||||
],
|
||||
@@ -241,50 +244,24 @@
|
||||
],
|
||||
"metadata": {},
|
||||
"output_type": "pyout",
|
||||
"prompt_number": 64,
|
||||
"prompt_number": 1,
|
||||
"text": [
|
||||
"<IPython.core.display.HTML at 0x7fc93575a438>"
|
||||
"<IPython.core.display.HTML at 0x7f829807fa58>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 64
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from matplotlib import animation\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"\n",
|
||||
"def animate(filename, func, frames, interval, figsize=(6.5, 6.5)):\n",
|
||||
" def forward(frame):\n",
|
||||
" # I don't know if it is a bug or what, but FuncAnimation calls twice\n",
|
||||
" # with the first frame number. That breaks any animation that uses\n",
|
||||
" # the frame number in computations\n",
|
||||
" if forward.first:\n",
|
||||
" forward.first = False\n",
|
||||
" return\n",
|
||||
" func(frame)\n",
|
||||
" \n",
|
||||
" fig = plt.figure(figsize=figsize)\n",
|
||||
" forward.first = True\n",
|
||||
" anim = animation.FuncAnimation(fig, forward, frames=frames, interval=interval)\n",
|
||||
" anim.save(filename, writer='imagemagick')"
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [],
|
||||
"prompt_number": 65
|
||||
"prompt_number": 1
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"collapsed": false,
|
||||
"input": [
|
||||
"from __future__ import print_function, division\n",
|
||||
"\n",
|
||||
"import matplotlib.pyplot as plt\n",
|
||||
"import numpy.random as random\n",
|
||||
"import math\n",
|
||||
"import stats\n",
|
||||
"from gif_animate import animate\n",
|
||||
"\n",
|
||||
"def update(mu1, var1, mu2, var2):\n",
|
||||
" mean = (var1*mu2 + var2*mu1) / (var1+var2)\n",
|
||||
@@ -349,13 +326,13 @@
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fc93575a240>"
|
||||
"<matplotlib.figure.Figure at 0x7f82796e75c0>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 69
|
||||
"prompt_number": 2
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
@@ -414,17 +391,7 @@
|
||||
],
|
||||
"language": "python",
|
||||
"metadata": {},
|
||||
"outputs": [
|
||||
{
|
||||
"metadata": {},
|
||||
"output_type": "display_data",
|
||||
"png": "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 truncated
|
||||
"text": [
|
||||
"<matplotlib.figure.Figure at 0x7fc93cd99278>"
|
||||
]
|
||||
}
|
||||
],
|
||||
"prompt_number": 73
|
||||
"outputs": []
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 465 KiB After Width: | Height: | Size: 481 KiB |
@@ -0,0 +1,49 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
"""
|
||||
Created on Sun Sep 14 12:41:24 2014
|
||||
|
||||
@author: rlabbe
|
||||
"""
|
||||
|
||||
from matplotlib import animation
|
||||
import matplotlib.pyplot as plt
|
||||
|
||||
def animate(filename, func, frames, interval, figsize=(6.5, 6.5)):
|
||||
""" Creates an animated GIF of a matplotlib.
|
||||
|
||||
Parameters
|
||||
----------
|
||||
filename : string
|
||||
name of the file. E.g 'foo.GIF' or '\home\monty\parrots\fjords.gif'
|
||||
|
||||
func : function
|
||||
function that will be called once per frame. Must have signature of
|
||||
def fun_name(frame_num)
|
||||
|
||||
frames : int
|
||||
number of frames to animate. The current frame number will be passed
|
||||
into func at each call.
|
||||
|
||||
interval : float
|
||||
Milliseconds to pause on each frame in the animation. E.g. 500 for half
|
||||
a second.
|
||||
|
||||
figsize : (float, float) optional
|
||||
size of the figure in inches. Defaults to 6.5" by 6.5"
|
||||
"""
|
||||
|
||||
|
||||
|
||||
def forward(frame):
|
||||
# I don't know if it is a bug or what, but FuncAnimation calls twice
|
||||
# with the first frame number. That breaks any animation that uses
|
||||
# the frame number in computations
|
||||
if forward.first:
|
||||
forward.first = False
|
||||
return
|
||||
func(frame)
|
||||
|
||||
fig = plt.figure(figsize=figsize)
|
||||
forward.first = True
|
||||
anim = animation.FuncAnimation(fig, forward, frames=frames, interval=interval)
|
||||
anim.save(filename, writer='imagemagick')
|
||||
Reference in new issue
Block a user