{ "cells": [ { "cell_type": "code", "execution_count": 88, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: matplotlib in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (3.5.2)\n", "Requirement already satisfied: numpy in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (1.22.4)\n", "Requirement already satisfied: ipywidgets in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (7.7.0)\n", "Requirement already satisfied: ipympl in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (0.9.1)\n", "Collecting seaborn\n", " Using cached seaborn-0.11.2-py3-none-any.whl (292 kB)\n", "Requirement already satisfied: cycler>=0.10 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from matplotlib) (0.11.0)\n", "Requirement already satisfied: kiwisolver>=1.0.1 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from matplotlib) (1.4.3)\n", "Requirement already satisfied: fonttools>=4.22.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from matplotlib) (4.33.3)\n", "Requirement already satisfied: pyparsing>=2.2.1 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from matplotlib) (3.0.6)\n", "Requirement already satisfied: pillow>=6.2.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from matplotlib) (9.1.1)\n", "Requirement already satisfied: packaging>=20.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from matplotlib) (21.3)\n", "Requirement already satisfied: python-dateutil>=2.7 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from matplotlib) (2.8.2)\n", "Requirement already satisfied: ipython>=4.0.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipywidgets) (8.0.0)\n", "Requirement already satisfied: traitlets>=4.3.1 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipywidgets) (5.1.1)\n", "Requirement already satisfied: jupyterlab-widgets>=1.0.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipywidgets) (1.1.0)\n", "Requirement already satisfied: nbformat>=4.2.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipywidgets) (5.1.3)\n", "Requirement already satisfied: ipykernel>=4.5.1 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipywidgets) (6.7.0)\n", "Requirement already satisfied: ipython-genutils~=0.2.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipywidgets) (0.2.0)\n", "Requirement already satisfied: widgetsnbextension~=3.6.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipywidgets) (3.6.0)\n", "Collecting pandas>=0.23\n", " Downloading pandas-1.4.2-cp310-cp310-macosx_10_9_x86_64.whl (11.1 MB)\n", " |████████████████████████████████| 11.1 MB 417 kB/s \n", "\u001b[?25hCollecting scipy>=1.0\n", " Downloading scipy-1.8.1-cp310-cp310-macosx_12_0_universal2.macosx_10_9_x86_64.whl (55.7 MB)\n", " |████████████████████████████████| 55.7 MB 179 kB/s | 41.5 MB 17.2 MB/s eta 0:00:013 MB 3.4 MB/s eta 0:00:04 B/s eta 0:00:02 \n", "\u001b[?25hRequirement already satisfied: debugpy<2.0,>=1.0.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipykernel>=4.5.1->ipywidgets) (1.5.1)\n", "Requirement already satisfied: nest-asyncio in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipykernel>=4.5.1->ipywidgets) (1.5.4)\n", "Requirement already satisfied: appnope in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.2)\n", "Requirement already satisfied: jupyter-client<8.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipykernel>=4.5.1->ipywidgets) (7.1.1)\n", "Requirement already satisfied: matplotlib-inline<0.2.0,>=0.1.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipykernel>=4.5.1->ipywidgets) (0.1.3)\n", "Requirement already satisfied: tornado<7.0,>=4.2 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipykernel>=4.5.1->ipywidgets) (6.1)\n", "Requirement already satisfied: black in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipython>=4.0.0->ipywidgets) (21.12b0)\n", "Requirement already satisfied: pygments in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipython>=4.0.0->ipywidgets) (2.11.2)\n", "Requirement already satisfied: pickleshare in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipython>=4.0.0->ipywidgets) (0.7.5)\n", "Requirement already satisfied: pexpect>4.3 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipython>=4.0.0->ipywidgets) (4.8.0)\n", "Requirement already satisfied: stack-data in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipython>=4.0.0->ipywidgets) (0.1.4)\n", "Requirement already satisfied: backcall in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipython>=4.0.0->ipywidgets) (0.2.0)\n", "Requirement already satisfied: setuptools>=18.5 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipython>=4.0.0->ipywidgets) (60.5.0)\n", "Requirement already satisfied: jedi>=0.16 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipython>=4.0.0->ipywidgets) (0.18.1)\n", "Requirement already satisfied: decorator in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipython>=4.0.0->ipywidgets) (5.1.1)\n", "Requirement already satisfied: prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from ipython>=4.0.0->ipywidgets) (3.0.24)\n", "Requirement already satisfied: jsonschema!=2.5.0,>=2.4 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from nbformat>=4.2.0->ipywidgets) (4.4.0)\n", "Requirement already satisfied: jupyter-core in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from nbformat>=4.2.0->ipywidgets) (4.9.1)\n", "Collecting pytz>=2020.1\n", " Downloading pytz-2022.1-py2.py3-none-any.whl (503 kB)\n", " |████████████████████████████████| 503 kB 20.5 MB/s \n", "\u001b[?25hRequirement already satisfied: six>=1.5 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from python-dateutil>=2.7->matplotlib) (1.16.0)\n", "Requirement already satisfied: notebook>=4.4.1 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from widgetsnbextension~=3.6.0->ipywidgets) (6.4.7)\n", "Requirement already satisfied: parso<0.9.0,>=0.8.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from jedi>=0.16->ipython>=4.0.0->ipywidgets) (0.8.3)\n", "Requirement already satisfied: attrs>=17.4.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets) (21.4.0)\n", "Requirement already satisfied: pyrsistent!=0.17.0,!=0.17.1,!=0.17.2,>=0.14.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from jsonschema!=2.5.0,>=2.4->nbformat>=4.2.0->ipywidgets) (0.18.0)\n", "Requirement already satisfied: pyzmq>=13 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets) (22.3.0)\n", "Requirement already satisfied: entrypoints in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from jupyter-client<8.0->ipykernel>=4.5.1->ipywidgets) (0.3)\n", "Requirement already satisfied: nbconvert in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (6.4.0)\n", "Requirement already satisfied: terminado>=0.8.3 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (0.12.1)\n", "Requirement already satisfied: jinja2 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (3.0.3)\n", "Requirement already satisfied: prometheus-client in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (0.12.0)\n", "Requirement already satisfied: Send2Trash>=1.8.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (1.8.0)\n", "Requirement already satisfied: argon2-cffi in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (21.3.0)\n", "Requirement already satisfied: ptyprocess>=0.5 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from pexpect>4.3->ipython>=4.0.0->ipywidgets) (0.7.0)\n", "Requirement already satisfied: wcwidth in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from prompt-toolkit!=3.0.0,!=3.0.1,<3.1.0,>=2.0.0->ipython>=4.0.0->ipywidgets) (0.2.5)\n", "Requirement already satisfied: click>=7.1.2 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from black->ipython>=4.0.0->ipywidgets) (8.0.3)\n", "Requirement already satisfied: pathspec<1,>=0.9.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from black->ipython>=4.0.0->ipywidgets) (0.9.0)\n", "Requirement already satisfied: mypy-extensions>=0.4.3 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from black->ipython>=4.0.0->ipywidgets) (0.4.3)\n", "Requirement already satisfied: typing-extensions!=3.10.0.1 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from black->ipython>=4.0.0->ipywidgets) (4.0.1)\n", "Requirement already satisfied: tomli<2.0.0,>=0.2.6 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from black->ipython>=4.0.0->ipywidgets) (1.2.2)\n", "Requirement already satisfied: platformdirs>=2 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from black->ipython>=4.0.0->ipywidgets) (2.3.0)\n", "Requirement already satisfied: executing in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from stack-data->ipython>=4.0.0->ipywidgets) (0.8.2)\n", "Requirement already satisfied: asttokens in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from stack-data->ipython>=4.0.0->ipywidgets) (2.0.5)\n", "Requirement already satisfied: pure-eval in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from stack-data->ipython>=4.0.0->ipywidgets) (0.2.1)\n", "Requirement already satisfied: argon2-cffi-bindings in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (21.2.0)\n", "Requirement already satisfied: MarkupSafe>=2.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from jinja2->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (2.0.1)\n", "Requirement already satisfied: bleach in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (4.1.0)\n", "Requirement already satisfied: jupyterlab-pygments in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (0.1.2)\n", "Requirement already satisfied: mistune<2,>=0.8.1 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (0.8.4)\n", "Requirement already satisfied: pandocfilters>=1.4.1 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (1.5.0)\n", "Requirement already satisfied: nbclient<0.6.0,>=0.5.0 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (0.5.10)\n", "Requirement already satisfied: testpath in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (0.5.0)\n", "Requirement already satisfied: defusedxml in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (0.7.1)\n", "Requirement already satisfied: cffi>=1.0.1 in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (1.15.0)\n", "Requirement already satisfied: webencodings in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from bleach->nbconvert->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (0.5.1)\n", "Requirement already satisfied: pycparser in /Users/sebastian/opt/anaconda3/envs/robotics/lib/python3.10/site-packages (from cffi>=1.0.1->argon2-cffi-bindings->argon2-cffi->notebook>=4.4.1->widgetsnbextension~=3.6.0->ipywidgets) (2.21)\n", "Installing collected packages: pytz, scipy, pandas, seaborn\n", "Successfully installed pandas-1.4.2 pytz-2022.1 scipy-1.8.1 seaborn-0.11.2\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "###### Install those packages (simply change cell type to code and run)\n", "%pip install matplotlib numpy ipywidgets ipympl seaborn pandas" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "%matplotlib widget\n", "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "import matplotlib.pyplot as plt\n" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def values():\n", " return np.linspace(0.0, 40.0, 41)**2 / 100" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def error(values, mean=0, sigma=1.0, seed=0):\n", " np.random.RandomState(seed)\n", " values += np.random.normal(loc=mean, scale=sigma, size=values.shape)\n", " return values" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [], "source": [ "def mean_filter(x, filter_len=4):\n", " filtered = np.zeros_like(x)\n", " for t in range(len(x)):\n", " lower_bound = max([0, t-filter_len])\n", " filtered[t] = np.mean(x[lower_bound:t+1])\n", " return filtered" ] }, { "cell_type": "code", "execution_count": 46, "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", " \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", " \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", " \n", "
ttrutherrorvaluefilter
000.000.0000000.000000perfect
110.010.0000000.010000perfect
220.040.0000000.040000perfect
330.090.0000000.090000perfect
440.160.0000000.160000perfect
..................
1183612.96-1.44880511.511195meanfilter
1193713.69-1.41288912.277111meanfilter
1203814.44-1.66900712.770993meanfilter
1213915.21-1.62962713.580373meanfilter
1224016.00-1.47045514.529545meanfilter
\n", "

123 rows × 5 columns

\n", "
" ], "text/plain": [ " t truth error value filter\n", "0 0 0.00 0.000000 0.000000 perfect\n", "1 1 0.01 0.000000 0.010000 perfect\n", "2 2 0.04 0.000000 0.040000 perfect\n", "3 3 0.09 0.000000 0.090000 perfect\n", "4 4 0.16 0.000000 0.160000 perfect\n", ".. .. ... ... ... ...\n", "118 36 12.96 -1.448805 11.511195 meanfilter\n", "119 37 13.69 -1.412889 12.277111 meanfilter\n", "120 38 14.44 -1.669007 12.770993 meanfilter\n", "121 39 15.21 -1.629627 13.580373 meanfilter\n", "122 40 16.00 -1.470455 14.529545 meanfilter\n", "\n", "[123 rows x 5 columns]" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "def make_df(truth, filtered,name):\n", " return pd.DataFrame({'t': list(range(len(truth))), 'truth': truth, 'error': filtered-truth, 'value': filtered, 'filter': name})\n", "\n", "frames = [make_df(values(), values(), 'perfect'),\n", " make_df(values(), error(values()), 'nofilter'),\n", " make_df(values(), mean_filter(error(values())), 'meanfilter')\n", "]\n", "df = pd.concat(frames, ignore_index=True)\n", "df\n" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "3beaaa5cc748462b95c7a874012a359e", "version_major": 2, "version_minor": 0 }, "image/png": "iVBORw0KGgoAAAANSUhEUgAAAoAAAAHgCAYAAAA10dzkAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8qNh9FAAAACXBIWXMAAA9hAAAPYQGoP6dpAAB9aElEQVR4nO3dd3zTdeLH8VeSNkl3ugeUvfdQhhMFZSjLgeJgqHh64MlxnIp3KuideN7peZ6e8ye4N0VFRREFFzJFQQQBgTLa0gLdI22S3x9faQlNGd1t3s/HIw+az/ebbz5fAuTNZ5o8Ho8HEREREfEb5oaugIiIiIjULwVAERERET+jACgiIiLiZxQARURERPyMAqCIiIiIn1EAFBEREfEzCoAiIiIifkYBUERERMTPKACKiIiI+BkFQBERERE/owAoIiIi4mcUAEVERET8jAKgiIiIiJ9RABQRERHxMwqAIiIiIn5GAVBERETEzygAioiIiPgZBUARERERP6MAKCIiIuJnFABFRERE/IwCoIiIiIifUQAUERER8TMKgCIiIiJ+RgFQRERExM8oAIqIiIj4GQVAERERET+jACgiIiLiZxQARURERPyMAqCIiIiIn1EAFBEREfEzCoAiIiIifkYBUERERMTPKACKiIiI+BkFQBERERE/owAoIiIi4mcUAEVERET8jAKgiIiIiJ9RABQRERHxMwqAIiIiIn5GAVBERETEzygAioiIiPgZBUARERERP6MAKCIiIuJnFABFRERE/IwCoIiIiIifUQAUERER8TMKgCIiIiJ+RgFQRERExM8oAIqIiIj4GQVAERERET+jACgiIiLiZxQARURERPyMAqCIiIiIn1EAFBEREfEzCoAiIiIifkYBUERERMTPBDR0BZoyt9vNgQMHCAsLw2QyNXR1RERE5BR4PB7y8vJISkrCbPbPtjAFwBo4cOAAycnJDV0NERERqYa9e/fSsmXLhq5Gg1AArIGwsDDA+AMUHh7ewLURERGRU5Gbm0tycnL597g/UgCsgaPdvuHh4QqAIiIiTYw/D9/yz45vERERET+mACgiIiLiZxQARURERPyMxgDWMY/HQ1lZGS6Xq6GrIrXMYrEQEBDg12NIRESkaVIArENOp5O0tDQKCwsbuipSR4KDg0lMTMRqtTZ0VURERE6ZAmAdcbvd7Nq1C4vFQlJSElar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6zyDBw/2DB48uAFrfXpOdo87duzw3H///Z5169Z5du3a5Xnvvfc87dq185x33nkNXPNTc9ddd3lWrlzp2bVrl+fHH3/03HXXXR6TyeT59NNPPR5P0//8TnR/Tf2zq8rxM5ub+mfYWCkANkL//e9/Pa1atfJYrVbPgAEDPN99911DV6nWXHXVVZ7ExESP1Wr1tGjRwnPVVVd5duzY0dDVqrYvvvjCA1R6TJ482ePxGEvB3HPPPZ74+HiPzWbzDB061LNt27aGrfRpONH9FRYWei6++GJPbGysJzAw0NO6dWvPtGnTmtR/VnzdG+BZsGBB+TlFRUWe3//+957IyEhPcHCwZ/z48Z60tLSGq/RpOtk9pqames477zxPVFSUx2azeTp06OD585//7MnJyWnYip+iG264wdO6dWuP1Wr1xMbGeoYOHVoe/jyepv/5nej+mvpnV5XjA2BT/wwbK5PH4/HUX3ujiIiIiDQ0jQEUERER8TMKgCIiIiJ+RgFQRERExM8oAIqIiIj4GQVAERERET+jACgiIiLiZxQARURERPyMAqCIiIiIn1EAFBHxYciQIcycObOhqyEiUicUAEVERET8jLaCExE5zpQpU3jxxRe9ynbt2kWbNm0apkIiIrVMAVBE5Dg5OTmMHDmSHj16cP/99wMQGxuLxWJp4JqJiNSOgIaugIhIYxMREYHVaiU4OJiEhISGro6ISK3TGEARERERP6MAKCIiIuJnFABFRHywWq24XK6GroaISJ1QABQR8aFNmzasXr2a3bt3k5WVhdvtbugqiYjUGgVAEREfZs+ejcVioVu3bsTGxpKamtrQVRIRqTVaBkZERETEz6gFUERERMTPKACKiIiI+BkFQBERERE/owAoIiIi4mcUAEVERET8jAKgiIiIiJ9RABQRERHxMwqAIiIiIn5GAVBERETEzygAioiIiPgZBUARERERP6MAKCIiIuJn/h+xOq77SO0w2QAAAABJRU5ErkJggg==", "text/html": [ "\n", "
\n", "
\n", " Figure\n", "
\n", " \n", "
\n", " " ], "text/plain": [ "Canvas(toolbar=Toolbar(toolitems=[('Home', 'Reset original view', 'home', 'home'), ('Back', 'Back to previous …" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.figure()\n", "sns.scatterplot(data=df, x='t', y='value', hue='filter', style=\"filter\")\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3.10.2 ('robotics')", "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.10.2" }, "orig_nbformat": 4, "vscode": { "interpreter": { "hash": "eb6c4675634aadac0eb17e8d586a18bfe83b6ceac5f4512f9cf408e3359b4c1c" } } }, "nbformat": 4, "nbformat_minor": 2 }