Fixed animations.

Not sure why, but the two line title was being cut off when
displayed. I must have changed somethign in the matplotlib
sytle at some point that broke this.
This commit is contained in:
Roger Labbe committed 2015-11-25 12:01:32 -08:00
1 parent 6f6108780c
commit 7c9bedca38
3 files changed
+69 -261

No files matched your search

+69 -261
View File
@@ -6,252 +6,19 @@
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"text/html": [
"<style>\n",
"@import url('http://fonts.googleapis.com/css?family=Source+Code+Pro');\n",
"@import url('http://fonts.googleapis.com/css?family=Vollkorn');\n",
"@import url('http://fonts.googleapis.com/css?family=Arimo');\n",
"\n",
" div.cell{\n",
" width: 900px;\n",
" margin-left: 0% !important;\n",
" margin-right: auto;\n",
" }\n",
" div.text_cell code {\n",
" background: transparent;\n",
" color: #000000;\n",
" font-weight: 600;\n",
" font-size: 11pt;\n",
" font-style: bold;\n",
" font-family: 'Source Code Pro', Consolas, monocco, monospace;\n",
" }\n",
" h1 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
"\t}\n",
"\t\n",
" div.input_area {\n",
" background: #F6F6F9;\n",
" border: 1px solid #586e75;\n",
" }\n",
"\n",
" .text_cell_render h1 {\n",
" font-weight: 200;\n",
" font-size: 30pt;\n",
" line-height: 100%;\n",
" color:#c76c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 1em;\n",
" display: block;\n",
" white-space: wrap;\n",
" } \n",
" h2 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h2 {\n",
" font-weight: 200;\n",
" font-size: 16pt;\n",
" font-style: italic;\n",
" line-height: 100%;\n",
" color:#c76c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 1.5em;\n",
" display: inline;\n",
" white-space: wrap;\n",
" } \n",
" h3 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h3 {\n",
" font-weight: 200;\n",
" font-size: 14pt;\n",
" line-height: 100%;\n",
" color:#d77c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 2em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" h4 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h4 {\n",
" font-weight: 100;\n",
" font-size: 14pt;\n",
" color:#d77c0c;\n",
" margin-bottom: 0.5em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" h5 {\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" }\n",
" .text_cell_render h5 {\n",
" font-weight: 200;\n",
" font-style: normal;\n",
" color: #1d3b84;\n",
" font-size: 16pt;\n",
" margin-bottom: 0em;\n",
" margin-top: 0.5em;\n",
" display: block;\n",
" white-space: nowrap;\n",
" }\n",
" div.text_cell_render{\n",
" font-family: 'Arimo',verdana,arial,sans-serif;\n",
" line-height: 125%;\n",
" font-size: 120%;\n",
" text-align:justify;\n",
" text-justify:inter-word;\n",
" }\n",
" div.output_subarea.output_text.output_pyout {\n",
" overflow-x: auto;\n",
" overflow-y: scroll;\n",
" max-height: 50000px;\n",
" }\n",
" div.output_subarea.output_stream.output_stdout.output_text {\n",
" overflow-x: auto;\n",
" overflow-y: scroll;\n",
" max-height: 50000px;\n",
" }\n",
" div.output_wrapper{\n",
" margin-top:0.2em;\n",
" margin-bottom:0.2em;\n",
"}\n",
"\n",
" code{\n",
" font-size: 70%;\n",
" }\n",
" .rendered_html code{\n",
" background-color: transparent;\n",
" }\n",
" ul{\n",
" margin: 2em;\n",
" }\n",
" ul li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.5em; \n",
" }\n",
" ul li li{\n",
" padding-left: 0.2em; \n",
" margin-bottom: 0.2em; \n",
" margin-top: 0.2em; \n",
" }\n",
" ol{\n",
" margin: 2em;\n",
" }\n",
" ol li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.5em; \n",
" }\n",
" ul li{\n",
" padding-left: 0.5em; \n",
" margin-bottom: 0.5em; \n",
" margin-top: 0.2em; \n",
" }\n",
" a:link{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" a:visited{\n",
" font-weight: bold;\n",
" color: #1d3b84;\n",
" }\n",
" a:hover{\n",
" font-weight: bold;\n",
" color: #1d3b84;\n",
" }\n",
" a:focus{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" a:active{\n",
" font-weight: bold;\n",
" color:#447adb;\n",
" }\n",
" .rendered_html :link {\n",
" text-decoration: underline; \n",
" }\n",
" .rendered_html :hover {\n",
" text-decoration: none; \n",
" }\n",
" .rendered_html :visited {\n",
" text-decoration: none;\n",
" }\n",
" .rendered_html :focus {\n",
" text-decoration: none;\n",
" }\n",
" .rendered_html :active {\n",
" text-decoration: none;\n",
" }\n",
" .warning{\n",
" color: rgb( 240, 20, 20 )\n",
" } \n",
" hr {\n",
" color: #f3f3f3;\n",
" background-color: #f3f3f3;\n",
" height: 1px;\n",
" }\n",
" blockquote{\n",
" display:block;\n",
" background: #fcfcfc;\n",
" border-left: 5px solid #c76c0c;\n",
" font-family: 'Open sans',verdana,arial,sans-serif;\n",
" width:680px;\n",
" padding: 10px 10px 10px 10px;\n",
" text-align:justify;\n",
" text-justify:inter-word;\n",
" }\n",
" blockquote p {\n",
" margin-bottom: 0;\n",
" line-height: 125%;\n",
" font-size: 100%;\n",
" }\n",
"</style>\n",
"<script>\n",
" MathJax.Hub.Config({\n",
" TeX: {\n",
" extensions: [\"AMSmath.js\"]\n",
" },\n",
" tex2jax: {\n",
" inlineMath: [ ['$','$'], [\"\\\\(\",\"\\\\)\"] ],\n",
" displayMath: [ ['$$','$$'], [\"\\\\[\",\"\\\\]\"] ]\n",
" },\n",
" displayAlign: 'center', // Change this to 'center' to center equations.\n",
" \"HTML-CSS\": {\n",
" scale:100,\n",
" availableFonts: [\"Neo-Euler\"],\n",
" preferredFont: \"Neo-Euler\",\n",
" webFont: \"Neo-Euler\",\n",
" styles: {'.MathJax_Display': {\"margin\": 4}}\n",
" }\n",
" });\n",
"</script>\n"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"outputs": [],
"source": [
"from __future__ import division, print_function\n",
"%matplotlib inline\n",
"import sys\n",
"sys.path.insert(0,'..') # allow us to format the book\n",
"sys.path.insert(0,'../code') # allow us to format the book\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('..')"
"#import book_format\n",
"#book_format.load_style('..')"
]
},
{
@@ -279,15 +46,23 @@
},
{
"cell_type": "code",
"execution_count": 3,
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Anaconda3\\lib\\site-packages\\matplotlib\\collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" if self._edgecolors == str('face'):\n"
]
},
{
"data": {
"text/plain": [
"<matplotlib.figure.Figure at 0x7a0df98>"
"<matplotlib.figure.Figure at 0x7f9e208>"
]
},
"metadata": {},
@@ -295,9 +70,9 @@
},
{
"data": {
"image/png": "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 truncated
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x7a0df28>"
"<matplotlib.figure.Figure at 0x7f9e320>"
]
},
"metadata": {},
@@ -306,7 +81,7 @@
],
"source": [
"import numpy as np\n",
"import mkf_internal\n",
"#import mkf_internal\n",
"import matplotlib.pyplot as plt\n",
"from gif_animate import animate\n",
"\n",
@@ -318,7 +93,7 @@
" stats.plot_covariance_ellipse((2,7), cov=P, facecolor='g', alpha=0.2, \n",
" title='|2.0 {:.1f}|\\n|{:.1f} 2.0|'.format(cov, cov))\n",
"fig = plt.figure()\n",
"animate('multivariate_ellipse.gif', ellipse_animate, 30, 125, figsize=(3, 3))"
"animate('multivariate_ellipse.gif', ellipse_animate, 30, 125, figsize=(4, 4))"
]
},
{
@@ -330,16 +105,47 @@
},
{
"cell_type": "code",
"execution_count": 11,
"execution_count": 16,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x9986710>"
"array([[ 0.0025, 0.005 ],\n",
" [ 0.005 , 0.01 ]])"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"f.Q"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"C:\\Anaconda3\\lib\\site-packages\\matplotlib\\collections.py:590: FutureWarning: elementwise comparison failed; returning scalar instead, but in the future will perform elementwise comparison\n",
" if self._edgecolors == str('face'):\n"
]
},
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<matplotlib.figure.Figure at 0x842bda0>"
]
},
"metadata": {},
@@ -358,13 +164,15 @@
"import filterpy.stats\n",
"from filterpy.common import Q_discrete_white_noise\n",
"from filterpy.kalman import KalmanFilter\n",
"import book_format\n",
"book_format.load_style('..')\n",
"\n",
"def dog_tracking_filter(R,Q=0,cov=1.):\n",
" dog_filter = KalmanFilter (dim_x=2, dim_z=1)\n",
"def dog_tracking_filter(R, Q=0, cov=1.):\n",
" dog_filter = KalmanFilter(dim_x=2, dim_z=1)\n",
" dog_filter.x = np.array([0, 0]) # initial state (location and velocity)\n",
" dog_filter.F = np.array([[1,1],\n",
" dog_filter.F = np.array([[1.,1],\n",
" [0,1]]) # state transition matrix\n",
" dog_filter.H = np.array([[1,0]]) # Measurement function\n",
" dog_filter.H = np.array([[1.,0]]) # Measurement function\n",
" dog_filter.R *= R # measurement uncertainty\n",
" dog_filter.P *= cov # covariance matrix \n",
" if np.isscalar(Q):\n",
@@ -377,7 +185,7 @@
"Q = .01\n",
"noise = 2.\n",
"P = 20.\n",
"dog = DogSimulation(measurement_variance=R, process_variance=Q)\n",
"dog = DogSimulation(measurement_var=R, process_var=Q)\n",
"f = dog_tracking_filter(R=R, Q=Q, cov=P)\n",
"random.seed(200)\n",
"zs = []\n",
@@ -385,20 +193,20 @@
"def animate_track(frame):\n",
" if frame > 30: return\n",
" \n",
" plt.gca().set_xlim(-100,100)\n",
" if frame == 0:\n",
" stats.plot_covariance_ellipse ((0, f.x[0]), cov=f.P, axis_equal=True, \n",
" facecolor='g', edgecolor=None, alpha=0.2)\n",
" xs.append (f.x[0])\n",
" stats.plot_covariance_ellipse((0, f.x[0]), cov=f.P, axis_equal=True, \n",
" facecolor='g', edgecolor=None, alpha=0.2)\n",
" xs.append(f.x[0])\n",
" \n",
" z = dog.move_and_sense()\n",
" z = dog.move_and_sense()[1]\n",
"\n",
" zs.append(z)\n",
" f.update(z)\n",
" xs.append (f.x[0])\n",
" xs.append(f.x[0])\n",
" \n",
" stats.plot_covariance_ellipse ((frame+1, f.x[0]), cov=f.P, axis_equal=True, \n",
" facecolor='g', edgecolor=None, alpha=0.5,\n",
" xlim=(-5,30), ylim=(-5,30))\n",
" stats.plot_covariance_ellipse((frame+1, f.x[0]), cov=f.P, axis_equal=True, \n",
" facecolor='g', edgecolor=None, alpha=0.5,\n",
" xlim=(-5,40), ylim=(-5,40))\n",
" \n",
" plt.plot(zs, color='r', linestyle='dashed')\n",
" plt.plot(xs, color='b')\n",
@@ -438,7 +246,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.4.3"
"version": "3.5.0"
}
},
"nbformat": 4,
Binary file not shown.

Before

Width:  |  Height:  |  Size: 183 KiB

After

Width:  |  Height:  |  Size: 153 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 448 KiB

After

Width:  |  Height:  |  Size: 440 KiB