{ "cells": [ { "cell_type": "markdown", "id": "350ab458", "metadata": {}, "source": [ "# Gait Plots" ] }, { "cell_type": "code", "execution_count": 1, "id": "4f10efa6", "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import matplotlib as mpl\n", "import numpy as np" ] }, { "cell_type": "code", "execution_count": 2, "id": "59c7e98e", "metadata": {}, "outputs": [], "source": [ "mpl.rcParams[\"text.usetex\"] = True\n", "mpl.rcParams[\"text.latex.preamble\"] = r\"\\usepackage{amsmath}\"\n", "plt.rcParams[\"font.size\"] = 18" ] }, { "cell_type": "code", "execution_count": 3, "id": "3e336bcd", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(1, 3, figsize=(15, 2.5))\n", "stance_color = \"black\"\n", "swing_color = \"white\"\n", "edge_color = \"black\"\n", "\n", "# Walking Gait\n", "axs[0].broken_barh(\n", " [(0, 10), (10, 10), (20, 10)],\n", " (13, 4),\n", " facecolors=stance_color,\n", " edgecolor=edge_color,\n", ")\n", "axs[0].broken_barh([(30, 10)], (13, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[0].broken_barh(\n", " [(0, 10), (20, 10), (30, 10)], (8, 4), facecolors=stance_color, edgecolor=edge_color\n", ")\n", "axs[0].broken_barh([(10, 10)], (8, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[0].broken_barh(\n", " [(10, 10), (20, 10), (30, 10)],\n", " (3, 4),\n", " facecolors=stance_color,\n", " edgecolor=edge_color,\n", ")\n", "axs[0].broken_barh([(0, 10)], (3, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[0].broken_barh(\n", " [(0, 10), (10, 10), (30, 10)],\n", " (-2, 4),\n", " facecolors=stance_color,\n", " edgecolor=edge_color,\n", ")\n", "axs[0].broken_barh([(20, 10)], (-2, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "\n", "axs[0].set_xticks([0, 40])\n", "axs[0].set_xticklabels(\n", " [\n", " r\"$\\textbf{Start}$\" + \"\\n\" + r\"$\\textbf{Cycle}$\",\n", " r\"$\\textbf{End}$\" + \"\\n\" + r\"$\\textbf{Cycle}$\",\n", " ]\n", ")\n", "axs[0].set_yticks([0, 5, 10, 15])\n", "axs[0].set_yticklabels(\n", " [r\"$\\textbf{HR}$\", r\"$\\textbf{HL}$\", r\"$\\textbf{FR}$\", r\"$\\textbf{FL}$\"]\n", ")\n", "axs[0].tick_params(left=False, bottom=False)\n", "axs[0].spines[\"top\"].set_visible(False)\n", "axs[0].spines[\"bottom\"].set_visible(False)\n", "axs[0].spines[\"left\"].set_visible(False)\n", "axs[0].spines[\"right\"].set_visible(False)\n", "axs[0].set_title(r\"$\\textbf{Walk Gait}$\", fontsize=16)\n", "axs[0].set_aspect(\"equal\")\n", "\n", "\n", "# Trotting Gait\n", "axs[1].broken_barh(\n", " [(0, 20)],\n", " (13, 4),\n", " facecolors=stance_color,\n", " edgecolor=edge_color,\n", " label=r\"$\\textbf{Stance Phase}$\",\n", ")\n", "axs[1].broken_barh(\n", " [(20, 20)],\n", " (13, 4),\n", " facecolors=swing_color,\n", " edgecolor=edge_color,\n", " label=r\"$\\textbf{Swing Phase}$\",\n", ")\n", "\n", "axs[1].broken_barh([(20, 20)], (8, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[1].broken_barh([(0, 20)], (8, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[1].broken_barh([(20, 20)], (3, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[1].broken_barh([(0, 20)], (3, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[1].broken_barh([(0, 20)], (-2, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[1].broken_barh([(20, 20)], (-2, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[1].set_xticks([0, 40])\n", "axs[1].set_xticklabels(\n", " [\n", " r\"$\\textbf{Start}$\" + \"\\n\" + r\"$\\textbf{Cycle}$\",\n", " r\"$\\textbf{End}$\" + \"\\n\" + r\"$\\textbf{Cycle}$\",\n", " ]\n", ")\n", "axs[1].set_yticks([0, 5, 10, 15])\n", "axs[1].set_yticklabels(\n", " [r\"$\\textbf{HR}$\", r\"$\\textbf{HL}$\", r\"$\\textbf{FR}$\", r\"$\\textbf{FL}$\"]\n", ")\n", "axs[1].tick_params(left=False, bottom=False)\n", "axs[1].spines[\"top\"].set_visible(False)\n", "axs[1].spines[\"bottom\"].set_visible(False)\n", "axs[1].spines[\"left\"].set_visible(False)\n", "axs[1].spines[\"right\"].set_visible(False)\n", "axs[1].set_title(r\"$\\textbf{Trot Gait}$\", fontsize=16)\n", "axs[1].set_aspect(\"equal\")\n", "\n", "handles, labels = axs[1].get_legend_handles_labels()\n", "fig.legend(\n", " handles,\n", " labels,\n", " loc=\"lower center\",\n", " bbox_to_anchor=(0.5, -0.35),\n", " frameon=False,\n", " ncol=2,\n", ")\n", "\n", "# Gallop Gait\n", "axs[2].broken_barh([(30, 10)], (13, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[2].broken_barh([(0, 30)], (13, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[2].broken_barh([(10, 10)], (8, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[2].broken_barh(\n", " [(0, 10), (20, 20)], (8, 4), facecolors=swing_color, edgecolor=edge_color\n", ")\n", "\n", "axs[2].broken_barh([(0, 10)], (3, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[2].broken_barh([(10, 30)], (3, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[2].broken_barh([(20, 10)], (-2, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[2].broken_barh(\n", " [(0, 20), (30, 10)], (-2, 4), facecolors=swing_color, edgecolor=edge_color\n", ")\n", "\n", "\n", "axs[2].set_xticks([0, 40])\n", "axs[2].set_xticklabels(\n", " [\n", " r\"$\\textbf{Start}$\" + \"\\n\" + r\"$\\textbf{Cycle}$\",\n", " r\"$\\textbf{End}$\" + \"\\n\" + r\"$\\textbf{Cycle}$\",\n", " ]\n", ")\n", "axs[2].set_yticks([0, 5, 10, 15])\n", "axs[2].set_yticklabels(\n", " [r\"$\\textbf{HR}$\", r\"$\\textbf{HL}$\", r\"$\\textbf{FR}$\", r\"$\\textbf{FL}$\"]\n", ")\n", "axs[2].tick_params(left=False, bottom=False)\n", "axs[2].spines[\"top\"].set_visible(False)\n", "axs[2].spines[\"bottom\"].set_visible(False)\n", "axs[2].spines[\"left\"].set_visible(False)\n", "axs[2].spines[\"right\"].set_visible(False)\n", "axs[2].set_title(r\"$\\textbf{Gallop Gait}$\", fontsize=16)\n", "axs[2].set_aspect(\"equal\")\n", "\n", "plt.savefig(\n", " \"../images/GaitPhasePlots.png\", dpi=200, transparent=False, bbox_inches=\"tight\"\n", ")" ] }, { "cell_type": "code", "execution_count": 4, "id": "743babe6", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "fig, axs = plt.subplots(1, 3, figsize=(20, 3))\n", "stance_color = \"black\"\n", "swing_color = \"white\"\n", "edge_color = \"black\"\n", "\n", "# Walking Gait\n", "axs[0].broken_barh([(0, 30)], (13, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[0].broken_barh([(30, 10)], (13, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[0].broken_barh([(-20, 30)], (8, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[0].broken_barh([(10, 10)], (8, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[0].broken_barh([(-30, 30)], (3, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[0].broken_barh([(0, 10)], (3, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[0].broken_barh([(-10, 30)], (-2, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[0].broken_barh([(20, 10)], (-2, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "\n", "axs[0].set_xticks([0])\n", "axs[0].set_xticklabels([r\"$\\textbf{Start}$\" + \"\\n\" + r\"$\\textbf{Cycle}$\"])\n", "axs[0].set_yticks([0, 5, 10, 15])\n", "axs[0].set_yticklabels(\n", " [r\"$\\textbf{HR}$\", r\"$\\textbf{HL}$\", r\"$\\textbf{FR}$\", r\"$\\textbf{FL}$\"]\n", ")\n", "axs[0].tick_params(left=False, bottom=False)\n", "axs[0].spines[\"top\"].set_visible(False)\n", "axs[0].spines[\"bottom\"].set_visible(False)\n", "axs[0].spines[\"left\"].set_visible(False)\n", "axs[0].spines[\"right\"].set_visible(False)\n", "axs[0].set_title(r\"$\\textbf{Walk Gait}$\", fontsize=16)\n", "axs[0].set_aspect(\"equal\")\n", "\n", "# Trotting Gait\n", "axs[1].broken_barh(\n", " [(0, 20)],\n", " (13, 4),\n", " facecolors=stance_color,\n", " edgecolor=edge_color,\n", " label=r\"$\\textbf{Stance Phase}$\",\n", ")\n", "axs[1].broken_barh(\n", " [(20, 20)],\n", " (13, 4),\n", " facecolors=swing_color,\n", " edgecolor=edge_color,\n", " label=r\"$\\textbf{Swing Phase}$\",\n", ")\n", "\n", "axs[1].broken_barh([(-20, 20)], (8, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[1].broken_barh([(0, 20)], (8, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[1].broken_barh([(-20, 20)], (3, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[1].broken_barh([(0, 20)], (3, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[1].broken_barh([(0, 20)], (-2, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[1].broken_barh([(20, 20)], (-2, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[1].set_xticks([0])\n", "axs[1].set_xticklabels([r\"$\\textbf{Start}$\" + \"\\n\" + r\"$\\textbf{Cycle}$\"])\n", "axs[1].set_yticks([0, 5, 10, 15])\n", "axs[1].set_yticklabels(\n", " [r\"$\\textbf{HR}$\", r\"$\\textbf{HL}$\", r\"$\\textbf{FR}$\", r\"$\\textbf{FL}$\"]\n", ")\n", "axs[1].tick_params(left=False, bottom=False)\n", "axs[1].spines[\"top\"].set_visible(False)\n", "axs[1].spines[\"bottom\"].set_visible(False)\n", "axs[1].spines[\"left\"].set_visible(False)\n", "axs[1].spines[\"right\"].set_visible(False)\n", "axs[1].set_title(r\"$\\textbf{Trot Gait}$\", fontsize=16)\n", "axs[1].set_aspect(\"equal\")\n", "\n", "handles, labels = axs[1].get_legend_handles_labels()\n", "fig.legend(\n", " handles,\n", " labels,\n", " loc=\"lower center\",\n", " bbox_to_anchor=(0.5, -0.1),\n", " frameon=False,\n", " ncol=2,\n", ")\n", "\n", "# Gallop Gait\n", "axs[2].broken_barh([(-10, 10)], (13, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[2].broken_barh([(0, 30)], (13, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[2].broken_barh([(-30, 10)], (8, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[2].broken_barh([(-20, 30)], (8, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[2].broken_barh([(0, 10)], (3, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[2].broken_barh([(10, 30)], (3, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "axs[2].broken_barh([(-20, 10)], (-2, 4), facecolors=stance_color, edgecolor=edge_color)\n", "axs[2].broken_barh([(-10, 30)], (-2, 4), facecolors=swing_color, edgecolor=edge_color)\n", "\n", "\n", "axs[2].set_xticks([0])\n", "axs[2].set_xticklabels([r\"$\\textbf{Start}$\" + \"\\n\" + r\"$\\textbf{Cycle}$\"])\n", "axs[2].set_yticks([0, 5, 10, 15])\n", "axs[2].set_yticklabels(\n", " [r\"$\\textbf{HR}$\", r\"$\\textbf{HL}$\", r\"$\\textbf{FR}$\", r\"$\\textbf{FL}$\"]\n", ")\n", "axs[2].tick_params(left=False, bottom=False)\n", "axs[2].spines[\"top\"].set_visible(False)\n", "axs[2].spines[\"bottom\"].set_visible(False)\n", "axs[2].spines[\"left\"].set_visible(False)\n", "axs[2].spines[\"right\"].set_visible(False)\n", "axs[2].set_title(r\"$\\textbf{Gallop Gait}$\", fontsize=16)\n", "axs[2].set_aspect(\"equal\")\n", "\n", "plt.savefig(\n", " \"../images/GaitPhaseOffsetPlots.png\",\n", " dpi=200,\n", " transparent=False,\n", " bbox_inches=\"tight\",\n", ")" ] }, { "cell_type": "code", "execution_count": null, "id": "f27ab10a", "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "mim_env", "language": "python", "name": "mim_env" }, "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.8.13 | packaged by conda-forge | (default, Mar 25 2022, 06:04:14) \n[Clang 12.0.1 ]" }, "vscode": { "interpreter": { "hash": "4f645a474884dbca16e72e44e8cd6743c90ca717ad3c67160fc7ac361c8ef869" } } }, "nbformat": 4, "nbformat_minor": 5 }