{ "cells": [ { "cell_type": "markdown", "id": "2533ac08-4579-4f44-b4e9-04cdf6b2ec0d", "metadata": {}, "source": [ "# Animations with Matplotlib\n", "\n", "This notebook shows how to use the `FuncAnimation` function from the `matplotlib.animation` module to create animated plots. " ] }, { "cell_type": "markdown", "id": "a25dfb9e-c13a-4368-b78e-99b21e8719d5", "metadata": {}, "source": [ "## Animation Basics\n", "\n", "Before we dive into more complex example. it is helpful to understand the basics of matplotlib animation." ] }, { "cell_type": "markdown", "id": "59f6a24c-aa0b-428e-987c-b8c6a5303344", "metadata": {}, "source": [ "Let's define 3 positions and we will create an animation of a point moving between them." ] }, { "cell_type": "code", "execution_count": 1, "id": "7352f24a-9346-472e-b0ff-82b5dd143f2d", "metadata": {}, "outputs": [], "source": [ "points = [(0.1, 0.5), (0.5, 0.5), (0.9, 0.5)]" ] }, { "cell_type": "markdown", "id": "dc5700d6-31c8-47ee-a839-ea33dde9776b", "metadata": {}, "source": [ "Then we use the `FuncAnimation` class which makes an animation by repeatedly calling a function and saving the output as a frame in the animation." ] }, { "cell_type": "code", "execution_count": 2, "id": "f525f5cb-52a4-411d-b80f-0a93f48ccb0b", "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "import matplotlib.pyplot as plt\n", "from matplotlib.animation import FuncAnimation" ] }, { "cell_type": "markdown", "id": "ee2b1f7e-7bea-49d9-97ea-f8624c1534fa", "metadata": {}, "source": [ "We need to define a function that takes the frame number and generates a plot from it. Here we define a function `animation` that takes the frame index and creates a plot from the point at the same index in the `points` list. So at frame 0, it will display the first point, frame 1 the second point and so on." ] }, { "cell_type": "code", "execution_count": 3, "id": "bccd980f-bcc8-40b7-978b-522460120499", "metadata": {}, "outputs": [], "source": [ "fig, ax = plt.subplots(1, 1)\n", "fig.set_size_inches(5,5)\n", "fig.tight_layout(rect=[0, 0.03, 1, 0.95])\n", "\n", "def animate(i):\n", " ax.clear()\n", " # Get the point from the points list at index i\n", " point = points[i]\n", " # Plot that point using the x and y coordinates\n", " ax.plot(point[0], point[1], color='green', \n", " label='original', marker='o')\n", " # Set the x and y axis to display a fixed range\n", " ax.set_xlim([0, 1])\n", " ax.set_ylim([0, 1])\n", "ani = FuncAnimation(fig, animate, frames=len(points),\n", " interval=500, repeat=False)\n", "plt.close()" ] }, { "cell_type": "markdown", "id": "3dbd4619-6dd3-4056-a4ed-75ae94fa6c68", "metadata": {}, "source": [ "The animation is now contained in the `ani` object. We can call `save()` and save the result as an animated GIF. We need to specify a `writer` that supports the output format." ] }, { "cell_type": "code", "execution_count": 4, "id": "fe9cf429-a1cd-4615-95c5-bed9acdc3896", "metadata": {}, "outputs": [], "source": [ "from matplotlib.animation import PillowWriter\n", "# Save the animation as an animated GIF\n", "ani.save(\"simple_animation.gif\", dpi=300,\n", " writer=PillowWriter(fps=1))" ] }, { "cell_type": "markdown", "id": "91491d39-2a07-4b37-8ee3-d229286efa9e", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "id": "728bd5c8-ddbc-46de-84ba-a05255341551", "metadata": {}, "source": [ "We can also use the `to_jshtml()` function to create an HTML representation of the animation and display in a Jupyter notebook." ] }, { "cell_type": "code", "execution_count": 5, "id": "065d909b-2c7a-441f-a9f7-cdfabc6be6cc", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import HTML\n", "HTML(ani.to_jshtml())" ] }, { "cell_type": "markdown", "id": "021098e4-3b86-42b9-a2c8-1092991831fe", "metadata": {}, "source": [ "## Animating Plots\n", "\n", "Now that you understand the basics, it's time to apply this technique to animate plots. I will show 2 different approaches for animating matplotlib plots. I find it very helpful in visualizing iterative algorithms. We will take examples of two popular geometry simplification algorithms and visualize how they work.\n", "\n", "1. Visvalingam and Whyatt algorithm\n", "2. Douglas-Peucker algorithm" ] }, { "cell_type": "markdown", "id": "6abf7288-f5be-49ae-8084-1ae8429753c3", "metadata": {}, "source": [ "Let's take a line segment defined by a list of (x,y) coordinates as below." ] }, { "cell_type": "code", "execution_count": 6, "id": "abc358a9-a854-4405-8f74-3aeb7b25656d", "metadata": {}, "outputs": [], "source": [ "point_list = [(0,3), (1,0), (2,1), (3, 2), (5, 3),\n", " (7,4), (8,4), (10,3), (11,1), (12,1),\n", " (15,2), (17, 3), (18, 3), (20, 2)]" ] }, { "cell_type": "markdown", "id": "499c3a5d-b1d7-4f64-aabd-ec2d8af4eb81", "metadata": {}, "source": [ "We will use the `shapely` library to create a `LineString` object and plot it." ] }, { "cell_type": "code", "execution_count": 7, "id": "9027c330-cf9d-4e51-8f31-ad93094486b1", "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "from shapely.geometry import LineString\n", "\n", "original = LineString(point_list)\n", "fig, ax = plt.subplots(1, 1)\n", "fig.set_size_inches(20,5)\n", "ax.plot(*original.xy, color='red', \n", " label='input', marker='o')\n", "ax.set_title('Original Line Segment', fontsize=20)\n", "ax.legend()\n", "plt.savefig('line.png', bbox_inches='tight', dpi=300)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "6d053b79-90dd-4155-a2c8-622fa92ac9cb", "metadata": {}, "source": [ "### Visualizing Visvalingam and Whyatt Algorithm\n", "\n", "This algorithm simplifies a line segment by successively removing vertices till the required number of vertices remain. It calculates the areas of triangle formed by three consecutive points and then removes the vertex with the smallest area. [Learn more](https://en.wikipedia.org/wiki/Visvalingam%E2%80%93Whyatt_algorithm)." ] }, { "cell_type": "markdown", "id": "df4ff442-7ac5-479e-a6cf-765c79b999fc", "metadata": {}, "source": [ "Below is a python implementation of this algorithm. We use the `shapely` library to calculate polygon areas. This implementation uses a recursive approach to achieve the result." ] }, { "cell_type": "code", "execution_count": 8, "id": "95db6f52-0338-4b24-a765-b41726a77aed", "metadata": {}, "outputs": [], "source": [ "import math\n", "from shapely.geometry import Polygon\n", "\n", "def visvalingam_whyatt_recursive(point_list, required_points):\n", " # Copy the original list since we will be modifying it\n", " points = point_list.copy()\n", " \n", " if len(points) == required_points:\n", " return points\n", " \n", " # Calculate traingle areas of each point\n", " areas = []\n", " for index, point in enumerate(points):\n", " if index == 0 or index == len(points)-1:\n", " areas.append(math.inf)\n", " else:\n", " p1 = points[index-1]\n", " p2 = point\n", " p3 = points[index+1]\n", " polygon = Polygon([p1, p2, p3])\n", " areas.append(polygon.area)\n", " min_area = min(areas)\n", " remove_index = areas.index(min_area)\n", " # Remove the vertex with smallest area\n", " points.pop(remove_index)\n", " if len(points) == required_points:\n", " return points\n", " else:\n", " # Call the function recursively with updated point list\n", " return visvalingam_whyatt_recursive(\n", " points, required_points)" ] }, { "cell_type": "markdown", "id": "98d9ddf1-8593-4813-a77c-8da7a8a3e4cc", "metadata": {}, "source": [ "Let's test the function and simplify the line to retain only 50% of the original vertices." ] }, { "cell_type": "code", "execution_count": 9, "id": "cc0117e1-6c38-42ad-b6fe-82bc45607bbb", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "n=7\n", "original=[(0, 3), (1, 0), (2, 1), (3, 2), (5, 3), (7, 4), (8, 4), (10, 3), (11, 1), (12, 1), (15, 2), (17, 3), (18, 3), (20, 2)]\n", "result=[(0, 3), (1, 0), (7, 4), (10, 3), (11, 1), (18, 3), (20, 2)]\n" ] } ], "source": [ "required_points = int(len(point_list)/2)\n", "simplified_list = visvalingam_whyatt_recursive(\n", " point_list, required_points)\n", "print('n={}'.format(required_points))\n", "print('original={}'.format(point_list))\n", "print('result={}'.format(simplified_list))" ] }, { "cell_type": "code", "execution_count": 10, "id": "6e849599-7bdc-4af6-a8b7-ebe19af2c4fd", "metadata": {}, "outputs": [ { "data": { "image/png": "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EZFMxHuP957hw4ef8NjnnnsuDSIKr2QlgZxzxYHLgB7A/Ukc0gr4zHvvgd+dc/mdc2d579eFL1QREZH/erxv6X8TQIftITeP9ylF2xofBhTVSXr00SMJoMP27IHHH1cSSERERDKnAQPstdDKlVCyJPToEZbXRW+++SYff/wxALfeeitXXXUVl156KRdeeCFTpkxhyJAhNG7cmNjYWAoVKsTzzz/PgAEDKFGiBIUKFaJWrVo8+OCDdOzYkcsvv5w2bdpQunRpOnTowA8//MDBgwf59ttvqVChAlOnTuXee+9l79695MyZk/79+1O+fPlT/hhOVnIrgd4GHgZOO8b+YsCqBI9Xh7b9JwnknOsMdAYoWbJkSuIUERE5ysq4oklvjy92pIomvVu5MugIRERERNJeKlVJT58+nf79+/PHH3/gvadu3bo0btyYRYsW0b9/f3r27Pmf42NjYxk0aBB//vknhw4dombNmtSqVSvJcxcqVIgZM2bQs2dPXn/9dfr160eFChUYP348WbJkYcyYMTz22GMMGjTopOM/VSdMAjnnLgc2eu+nO+eaHOuwJLb5ozZ43xfoCxATE3PUfhERkWSJj+dgv0/JwzXsTGKVcvGoddx87S5uuX4P58ccIF30H6xbF9asOXr7GWekfSwiIiIiqe3ee2HmzGPv//132L//v9v27IFbboEPj1HxXb06vP32cS87ceJEWrduTe7cVk1+9dVXM2HCBEqVKkW9evWSPL5Vq1bkzJkTgCuuuOKY57766qsBqFWrFt9//z0A27dvp0OHDvz111845zh48OBx40ttyakEagBc6ZxrCeQA8jrnvvDet0twzGqgRILHxYG14QtTREQkZNYs6NaNxZO3sZe2ZOEgh8j67+5c7KZTqy28/XMx+n+dm/POgy5doF07yJcvwLhP5JVX/nu3C8A52LABOnSAV1+FM88MLj4RERGRtJQ4AXSi7clkXWyOdjgplNzjk5I9e3YAoqOjOXToEABPPvkkF154IYMHD2b58uU0adIkZQGH2Qmng3nvu3vvi3vvSwPXA78mSgABDAPah6aE1QO2qx+QiIiE1Y4dcN99rKt5GSxeTOX+D7FkWRY+6foHpaJX44inVPRq+nb9k2e/r8ratdCvH+TIAXfeCUWLJl1oEzHatoW+faFUKUv+lCoFH30Ejz0GAwdChQrQqxfE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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1)\n", "fig.set_size_inches(20,5)\n", "\n", "original = LineString(point_list)\n", "simplified = LineString(simplified_list)\n", "ax.plot(*original.xy, color='red',\n", " label='original', marker='o')\n", "ax.plot(*simplified.xy, color='blue',\n", " linestyle='dashed', label='simplified', marker='o')\n", "ax.set_title('Visvalingam and Whyatt Simplification',\n", " fontsize=20)\n", "ax.legend()\n", "plt.savefig('visvalingam_whyatt.png',\n", " bbox_inches='tight', dpi=300)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "883d2dce-a667-4f37-82b9-7335c9823dc9", "metadata": {}, "source": [ "### Animating the Algorithm\n", "\n", "This algorithm removes 1 point at a time. We can visualize how the algorithm works by plotting the results of simplifying the original segment with successively smaller number of points. The `animate()` function gets input as the frame number `i` and we use it to calculate how many points to retain in each iteration. The resulting animation shows how the algorithm chooses the vertex with the smallest area first and removes it - continuing to do the same till only the start and end points remain." ] }, { "cell_type": "code", "execution_count": 11, "id": "5d25b501-a039-4b05-b89e-fdd09e040814", "metadata": {}, "outputs": [], "source": [ "fig, ax = plt.subplots(1, 1)\n", "fig.set_size_inches(20,5)\n", "fig.tight_layout(rect=[0, 0.03, 1, 0.95])\n", "\n", "def animate(i):\n", " ax.clear()\n", " simplified_list = visvalingam_whyatt_recursive(\n", " point_list, len(point_list)-i)\n", " original = LineString(point_list)\n", " simplified = LineString(simplified_list)\n", " ax.plot(*original.xy, color='red',\n", " label='original', marker='o')\n", " ax.plot(*simplified.xy, color='blue',\n", " linestyle='dashed', label='simplified', marker='o')\n", " ax.set_title(\n", " 'Visvalingam and Whyatt Algorithm - '\\\n", " 'Eliminated {} Points'.format(i), fontsize=20) \n", " ax.legend()\n", "\n", "ani = FuncAnimation(fig, animate, frames=len(point_list)-1, \n", " interval=500, repeat=False)\n", "plt.close()" ] }, { "cell_type": "code", "execution_count": 12, "id": "70d6e2dc-00af-4795-bea9-a002c4b21c8e", "metadata": {}, "outputs": [], "source": [ "from matplotlib.animation import PillowWriter\n", "# Save the animation as an animated GIF\n", "ani.save(\"visvalingam_whyatt.gif\",\n", " dpi=300, writer=PillowWriter(fps=2))" ] }, { "cell_type": "markdown", "id": "f2107273-3749-4a47-88f1-7deec55f732f", "metadata": {}, "source": [ "" ] }, { "cell_type": "markdown", "id": "41c2324c-54c5-4c89-b27c-c783bc2d399a", "metadata": {}, "source": [ "### Visualizing Douglas-Peucker Algorithm\n", "\n", "The Douglas-Peucker algorithm successively removes vertices from a segment using the distance between the original segment and simplified segment. It removes points whose distance is less than the specified threshold **e** [Learn more](https://en.wikipedia.org/wiki/Ramer%E2%80%93Douglas%E2%80%93Peucker_algorithm)." ] }, { "cell_type": "markdown", "id": "d673308d-e89b-4ec4-9ec5-2531bcd5e5d4", "metadata": {}, "source": [ "Below is a python implementation of this algorithm. We use the `shapely` library to calculate distance between a point and a line segment. This implementation uses a recursive approach to achieve the result. The implementation is adapted from https://github.com/fhirschmann/rdp" ] }, { "cell_type": "code", "execution_count": 13, "id": "e29b3ee6-3aab-4bfd-bce1-966381cfaef0", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "e=1\n", "original=[(0, 3), (1, 0), (2, 1), (3, 2), (5, 3), (7, 4), (8, 4), (10, 3), (11, 1), (12, 1), (15, 2), (17, 3), (18, 3), (20, 2)]\n", "result=LINESTRING (0 3, 1 0, 7 4, 10 3, 11 1, 18 3, 20 2)\n" ] } ], "source": [ "from shapely.geometry import Point, LineString\n", "\n", "def douglas_peuker_recursive(point_list, e):\n", " dmax = 0\n", " index = -1\n", " \n", " for i in range(1, len(point_list)):\n", " point = Point(point_list[i])\n", " line = LineString([point_list[0], point_list[-1]])\n", " d = point.distance(line)\n", " if d > dmax:\n", " index = i\n", " dmax = d\n", " if dmax > e:\n", " r1 = douglas_peuker_recursive(point_list[:index+1], e)\n", " r2 = douglas_peuker_recursive(point_list[index:], e)\n", " return r1[:-1] + r2\n", " else:\n", " return [point_list[0], point_list[-1]]\n", "e = 1\n", "simplified_list = douglas_peuker_recursive(point_list, e)\n", "print('e={}'.format(e))\n", "print('original={}'.format(point_list))\n", "print('result={}'.format(simplified))" ] }, { "cell_type": "code", "execution_count": 14, "id": "8c556442-1741-4814-84f5-02ff52f6ae41", "metadata": {}, "outputs": [ { "data": { "image/png": "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sAsOO2K+PxtitpcAbgGyYT9Po1NgX+djKvBuzEWPP7Dq3hbYwMCHEhmwl+I8zzsRM9DwR+Ab59wjWFVyVqAc0IC4851JWHL7mZgLOkuw381bgSkknCT+Gfvde8M5V56YFQae5/U+S0y/Ouf6As8DK5xzo4Ej2O9xeexn5O0Led0iIiIiaU0JZBEREUkvYnucnsCSiJuAodiS9h8TSnp5njffOXcNVu3aELgN2AMMB17zPG9VvMcfc841wJKejbBk7AqgDZb4/E8COeZzZjrn6gK9seQgWOK5PtA25uOD8T8vAS9hQ8HaA49gPVanxcTeK4HHd8MSs1WBJljybxPQFfgkZoBbivM87y3n3FxscF9tLLl+ABuENoj/thGJTTo3B3oCd2PJuGnAXST8uvA87zPn3AqgC5Zgbo5935YBnychxiHOuePYz0dsEnl9cmO/AO9iSe+G2MWEG7Gk6F4saf4N8M35DudLAfOBV4HXgMexiw8zgB6e5/2eloF4nrfQOVcZ+3m+Gbu4cAhLFr982uOOOOduAN7EfibqAOux19AP+3mK/9wrYy4idcEqrrPG3JVoAjnm87o655ZgX5v7sEGE67DfxXc9zztxni9XRERExBfOv+NOERERETmbmGTldUBuz/OO+B2PpG/OuXpYVW4vz/Ne8TUYEREREUkz6oEsIiIi4iPnXHbnXJ4EtrfDqil/VPJYRERERET8ohYWIiIiIv4qivXqnYYtu88IVMFaJOwHnvUvNBERERERSe+UQBYRERHx105gGDaErT6QBdgBDAb6eJ63zsfYREREREQknVMPZBERERERERERERFJkG8VyHnz5vWKFy/u1+5FREREREREREREJMaiRYv2eJ6XL/523xLIxYsXZ+HChX7tXkRERERERERERERiOOc2JbQ9LK0DEREREREREREREZHgoASyiIiIiIiIiIiIiCRICWQRERERERERERERSZBvPZBFREREREREREREzuXkyZNERERw7Ngxv0MJCVmzZqVIkSJkypQpSY9XAllEREREREREREQCVkREBLly5aJ48eI45/wOJ6h5nsfevXuJiIigRIkSSfoctbAQERERERERERGRgHXs2DEuvfRSJY9TgHOOSy+9NFnV3Eogi4iIiIiIiIiISEBT8jjlJPdrqQSyiIiIiIiIiIiIiCQoyQlk51wG59wS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Kxc8+SRMmBDXVFREJA2tX2/L3EuVgho1bFFegQI2EA9sTtYttwRQ8njGDKhZE267DQ4fhq+/tiTy7bcreSySDNmz24qCLVugXz8rSHr+eSviB/sbEDuML8liV1etX2+J45kz7fy7TRub7C5BQwnkYFGjBq/meIvOL6n6WOSCbdpkfSavusqqjl94ATZssAkfOXP6Hd15W7kSqle3PPh991lFn4hIIGvRwjo15M9vCWXNWYnx5JP2/+iNN/yORETSibVrYccOe3/ZMujbF8qUsWrjnTvtgl+ePH5GmIDffoMGDewtIgIGDbID4rZt1bNN5AIULmw1VfPn29+GO+6w7UOHQqFCNpBv8GBrc5xkuXLZCoH166FrV7tQXq4ctG9v7SMl4KmFRRB55KpfGLayKnv+yUjWPMFZHSniqx07bKLHp59aT4eOHa1MN39+vyO7YL//bqudc+a0Y+fbb/c7IhGRpDt8GI4dg7x5Yfduq2rLndvvqHz2/PPw7rvWhPCKK/yORkRC0Nat1i44tkXFK6/Ayy/bkLwDB6xNRUD64w9LRE2ebMfxL7wAjzwStCsIRYLF6tU2H2/4cKu/ypzZ5s6PHGmry5Jlxw67UD5woH38yCP2u1ygQIrHLcmjFhYhoOW9OThCTqa9u8zvUESCy969dpWzZEnrv/TAA7Zc5r33gj55HDstt0oVeOopW+2s5LGIBJucOS157HlWOBYeru4NPPOMrR19802/IxGREBMdDY0bW+/5Z5+1v71vv20L9MCSQgGZPF61Cu6+GypXtobMffrAunV2EKzksUiqK1067tdu/nzo1MkSx7HJ43feses6J04k4ckKFID+/e28/L77YMAA65vTvTvs25eqr0POjyqQg8iJwye47KJImpdazuA1miArck4HD8L771sF16FD1mfplVdCopLL8+zK76uvwuzZAXqQLyJyHmbPhjvvtD/hn31mf7rTrccft2Ul69ZpyqCInLdDh2wm59KldlgMtjz94ostH1u6tJ/RJcGmTdCrl5U+ZssGnTtDly4B2FNDJP06ftxmAO/cCZdcAi1b2t+XunWT2FFmzRo7Vx8+3NpddOliv+u51MY1rakCOQRkzpmZ20qsYOK6qzkZedLvcEQC19GjdvmzZElbh9eggTVz+/rrkEge79tn/4zbtrV/zkeP+h2RiEjKqVMHFi+2wXpt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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, ax = plt.subplots(1, 1)\n", "fig.set_size_inches(20,5)\n", "fig.tight_layout(rect=[0, 0.03, 1, 0.95])\n", "\n", "original = LineString(point_list)\n", "simplified = LineString(simplified_list)\n", "ax.plot(*original.xy, color='red',\n", " label='original', marker='o')\n", "ax.plot(*simplified.xy, color='blue', \n", " linestyle='dashed', label='simplified', marker='o')\n", "ax.set_title('Douglas-Peucker Simplification', fontsize=20)\n", "ax.legend()\n", "plt.savefig('douglas_peucker.png', \n", " bbox_inches='tight', dpi=300)\n", "plt.show()" ] }, { "cell_type": "markdown", "id": "8f4f989a-558d-4c81-8399-1699763dae81", "metadata": {}, "source": [ "### Animating the Algorithm\n", "\n", "The Douglas-Peucker algorithm is harder to visualize because each step is done recursively and you need to capture the result of it and plot it. Here I present another strategy to animate each step. We can capture the intermediate results in a separate list and use that list with the `animate()` function. To capture the output of each invocation of the function, we can use a decorator. Since our function is already defined, we can directly call the `track` function instead of the `@track` syntax for decorating the `douglas_peuker_recursive()` function.\n", "\n", "Remember that the recursive function may be called multiple times till it before it meets the condition to actually remove a point. So we save the input and output both to our temporary list." ] }, { "cell_type": "code", "execution_count": 15, "id": "bb943b72-3a47-4713-8fde-33bc173c4373", "metadata": {}, "outputs": [], "source": [ "steps_list = []\n", "\n", "# Decorator function to save the input/output from a function\n", "def track(func):\n", " def inner(*args, **kwargs):\n", " # Save the input to the function\n", " steps_list.append(\n", " {'type': 'input', 'line': args[0]})\n", " output = func(*args, **kwargs)\n", " # Save the output from the function\n", " steps_list.append({\n", " 'type': 'output', 'line': output\n", " })\n", " return output\n", " return inner\n", "\n", "# Decorate the function\n", "douglas_peuker_recursive = track(douglas_peuker_recursive)" ] }, { "cell_type": "code", "execution_count": 16, "id": "55f6db4f-7115-42dc-9c24-db5c485621b2", "metadata": {}, "outputs": [], "source": [ "simplified_list = douglas_peuker_recursive(point_list, e)" ] }, { "cell_type": "markdown", "id": "6ca08ec8-374f-478e-bb8f-bb121616ce3f", "metadata": {}, "source": [ "We have now captured each step of the algorithm in the `steps_list`. We can now write an animation function to display each step from it." ] }, { "cell_type": "code", "execution_count": 17, "id": "cc951eec-7076-4704-a032-291ea7241eae", "metadata": {}, "outputs": [], "source": [ "fig, ax = plt.subplots(1, 1)\n", "fig.set_size_inches(20,5)\n", "fig.tight_layout(rect=[0, 0.03, 1, 0.95])\n", "\n", "def animate(frame):\n", " ax.clear()\n", " step = steps_list[frame]\n", " original = LineString(point_list)\n", " ax.plot(*original.xy, color='red',\n", " label='original', marker='o')\n", " if step['type'] == 'input':\n", " part = LineString(step['line'])\n", " ax.plot(*part.xy, color='yellow',\n", " linestyle='dashed', label='_part', marker='x')\n", " elif step['type'] == 'output':\n", " simplified = LineString(step['line'])\n", " ax.plot(*simplified.xy, color='blue',\n", " label='simplified', marker='o')\n", " \n", " ax.set_title('Douglas-Peucker - Step {}'.format(frame),\n", " fontsize=20) \n", "ani = FuncAnimation(fig, animate, frames=len(steps_list),\n", " interval=500, repeat=False)\n", "plt.close()" ] }, { "cell_type": "code", "execution_count": 18, "id": "628a9619-92ab-465a-aa56-2de6871bbc75", "metadata": {}, "outputs": [], "source": [ "from matplotlib.animation import PillowWriter\n", "# Save the animation as an animated GIF\n", "ani.save(\"douglas_peucker.gif\",\n", " dpi=300, writer=PillowWriter(fps=1))" ] }, { "cell_type": "markdown", "id": "87a73bce-6bb1-44b7-90ee-9937ad1382bc", "metadata": {}, "source": [ "" ] }, { "cell_type": "code", "execution_count": 19, "id": "a89772c1-58b4-40ec-a589-d4bec31ae677", "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", "\n", "\n", "\n", "\n", "\n", "
\n", " \n", "
\n", " \n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", " \n", " \n", " \n", " \n", " \n", " \n", "
\n", "
\n", "
\n", "\n", "\n", "\n" ], "text/plain": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "from IPython.display import HTML\n", "HTML(ani.to_jshtml())" ] }, { "cell_type": "code", "execution_count": null, "id": "504dbfb0-261c-4999-a324-16f708700a31", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3 (ipykernel)", "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.9.7" } }, "nbformat": 4, "nbformat_minor": 5 }