benchmark-results/better-plotting.ipynb

579 lines
1.1 MiB
Plaintext
Raw Normal View History

2020-04-20 11:37:08 +00:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"from pandas import DataFrame, Series\n",
"from numpy import nan\n",
"import pathlib\n",
"import matplotlib.pyplot as plt\n",
"plt.rcParams[\"figure.figsize\"] = (30,5)\n",
"import seaborn as sns\n",
"sns.set()"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>TEST</th>\n",
" <th>MAP</th>\n",
" <th>50000</th>\n",
" <th>100000</th>\n",
" <th>150000</th>\n",
" <th>200000</th>\n",
" <th>250000</th>\n",
" <th>300000</th>\n",
" <th>350000</th>\n",
" <th>400000</th>\n",
" <th>...</th>\n",
" <th>9000000</th>\n",
" <th>10000000</th>\n",
" <th>15000000</th>\n",
" <th>20000000</th>\n",
" <th>25000000</th>\n",
" <th>30000000</th>\n",
" <th>35000000</th>\n",
" <th>40000000</th>\n",
" <th>45000000</th>\n",
" <th>50000000</th>\n",
" </tr>\n",
" <tr>\n",
" <th>Unnamed: 0</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>int_delete</td>\n",
" <td>absl::flat_hash_map</td>\n",
" <td>9</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>12</td>\n",
" <td>13</td>\n",
" <td>15</td>\n",
" <td>...</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>24</td>\n",
" <td>28</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>26</td>\n",
" <td>25</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>int_delete</td>\n",
" <td>absl::flat_hash_map</td>\n",
" <td>9</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>12</td>\n",
" <td>13</td>\n",
" <td>16</td>\n",
" <td>...</td>\n",
" <td>20</td>\n",
" <td>23</td>\n",
" <td>24</td>\n",
" <td>23</td>\n",
" <td>27</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>int_delete</td>\n",
" <td>absl::flat_hash_map</td>\n",
" <td>9</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>12</td>\n",
" <td>13</td>\n",
" <td>15</td>\n",
" <td>...</td>\n",
" <td>20</td>\n",
" <td>21</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>25</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>30</td>\n",
" <td>26</td>\n",
" <td>27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>int_delete</td>\n",
" <td>absl::flat_hash_map</td>\n",
" <td>9</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>12</td>\n",
" <td>13</td>\n",
" <td>15</td>\n",
" <td>...</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>25</td>\n",
" <td>25</td>\n",
" <td>26</td>\n",
" <td>29</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>int_delete</td>\n",
" <td>absl::flat_hash_map</td>\n",
" <td>9</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>14</td>\n",
" <td>11</td>\n",
" <td>12</td>\n",
" <td>13</td>\n",
" <td>15</td>\n",
" <td>...</td>\n",
" <td>20</td>\n",
" <td>20</td>\n",
" <td>24</td>\n",
" <td>24</td>\n",
" <td>25</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>26</td>\n",
" <td>27</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>5 rows × 33 columns</p>\n",
"</div>"
],
"text/plain": [
" TEST MAP 50000 100000 150000 200000 \\\n",
"Unnamed: 0 \n",
"0 int_delete absl::flat_hash_map 9 14 11 14 \n",
"1 int_delete absl::flat_hash_map 9 14 11 14 \n",
"2 int_delete absl::flat_hash_map 9 14 11 14 \n",
"3 int_delete absl::flat_hash_map 9 14 11 14 \n",
"4 int_delete absl::flat_hash_map 9 14 11 14 \n",
"\n",
" 250000 300000 350000 400000 ... 9000000 10000000 15000000 \\\n",
"Unnamed: 0 ... \n",
"0 11 12 13 15 ... 21 21 24 \n",
"1 11 12 13 16 ... 20 23 24 \n",
"2 11 12 13 15 ... 20 21 24 \n",
"3 11 12 13 15 ... 21 21 24 \n",
"4 11 12 13 15 ... 20 20 24 \n",
"\n",
" 20000000 25000000 30000000 35000000 40000000 45000000 \\\n",
"Unnamed: 0 \n",
"0 28 25 25 26 25 26 \n",
"1 23 27 26 26 26 26 \n",
"2 24 25 26 26 30 26 \n",
"3 24 25 25 26 29 26 \n",
"4 24 25 26 26 26 26 \n",
"\n",
" 50000000 \n",
"Unnamed: 0 \n",
"0 26 \n",
"1 26 \n",
"2 27 \n",
"3 26 \n",
"4 27 \n",
"\n",
"[5 rows x 33 columns]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"cols = [\n",
"\"TEST\",\"MAP\",\n",
"50000, 100000, 150000, 200000, 250000, 300000, 350000, 400000, 500000,\n",
"600000, 700000, 800000, 900000, 1000000,\n",
"2000000, 3000000, 4000000, 5000000, 6000000, 7000000, 8000000, 9000000, 10000000,\n",
"15000000, 20000000, 25000000, 30000000, 35000000, 40000000, 45000000, 50000000\n",
"]\n",
"if not pathlib.Path(\"./sorted.csv\").is_file():\n",
" data = pd.read_csv(\"results.csv\", quotechar=\"'\", header=None)\n",
" data.columns= cols\n",
" data = data.sort_values(by=['TEST', 'MAP'], ignore_index=True)\n",
" data.to_csv(\"sorted.csv\")\n",
"\n",
"else:\n",
" data = pd.read_csv(\"sorted.csv\")\n",
" data.set_index(\"Unnamed: 0\", inplace=True)\n",
"data.head()"
]
},
{
"cell_type": "code",
2020-04-20 16:57:40 +00:00
"execution_count": 5,
2020-04-20 11:37:08 +00:00
"metadata": {},
"outputs": [],
"source": [
"def remove_with_modified_z_score(data, treshold=3.5):\n",
2020-04-20 16:57:40 +00:00
" # https://www.itl.nist.gov/div898/handbook/eda/section3/eda35h.htm\n",
" data = data.astype(int)\n",
2020-04-20 11:37:08 +00:00
" stats = data.describe()\n",
" median_absolute_deviation = abs(data - data.median()).median()\n",
" if not median_absolute_deviation:\n",
" return data\n",
" modified_z_scores = abs(0.6745 * (data - data.median()) / median_absolute_deviation)\n",
" cutoff = modified_z_scores <= treshold\n",
" data = data * cutoff\n",
" data = data.replace(0, nan)\n",
" return data\n",
"\n",
"def max_val(hmap, test):\n",
" return groups_mean.loc[test, hmap].max()\n",
"\n",
"def sort_maps(test):\n",
" maps = list(groups_mean.loc[test].index)\n",
" new = [(max_val(i, test), i) for i in maps]\n",
" new.sort()\n",
" new = [i[1] for i in new]\n",
" return new\n",
"\n",
"def plot_test(test, include_error=True):\n",
" sizes = [50000, 100000, 150000, 200000, 250000, 300000, 350000, 400000, 500000,\n",
" 600000, 700000, 800000, 900000, 1000000,\n",
" 2000000, 3000000, 4000000, 5000000, 6000000, 7000000, 8000000, 9000000, 10000000,\n",
" 15000000, 20000000, 25000000, 30000000, 35000000, 40000000, 45000000, 50000000]\n",
" maps = sort_maps(test)\n",
" count = 16\n",
" repeats = [0, 5, 11]\n",
" while count > -1:\n",
" if not count and count not in repeats:\n",
" break\n",
" mp = maps[count]\n",
2020-04-20 16:57:40 +00:00
"\n",
" sns.lineplot(x=sizes, y=groups_mean.loc[test, mp], label=mp, order=2)\n",
2020-04-20 11:37:08 +00:00
" if count in repeats:\n",
" plt.xscale(\"log\")\n",
" plt.ylabel(\"{} time (ns)\".format(test))\n",
" plt.legend()\n",
" plt.title(test)\n",
" plt.show()\n",
" repeats.pop(repeats.index(count))\n",
" else:\n",
" count -=1"
]
},
{
"cell_type": "code",
2020-04-20 16:57:40 +00:00
"execution_count": 10,
2020-04-20 11:37:08 +00:00
"metadata": {},
"outputs": [],
"source": [
2020-04-20 16:57:40 +00:00
"\n",
"modz_data = data.copy(True)\n"
2020-04-20 11:37:08 +00:00
]
},
{
"cell_type": "code",
2020-04-20 16:57:40 +00:00
"execution_count": 11,
2020-04-20 11:37:08 +00:00
"metadata": {},
"outputs": [],
"source": [
"for col in range(2,33):\n",
" for row in range(8 * 17):\n",
" start = row * 30\n",
" end = (row + 1 ) * 30\n",
" temp = data.iloc[start : end,col]\n",
2020-04-20 16:57:40 +00:00
" modz_data.iloc[start : end,col] = remove_with_modified_z_score(temp)"
2020-04-20 11:37:08 +00:00
]
},
{
"cell_type": "code",
2020-04-20 16:57:40 +00:00
"execution_count": 18,
2020-04-20 11:37:08 +00:00
"metadata": {},
2020-04-20 16:57:40 +00:00
"outputs": [],
2020-04-20 11:37:08 +00:00
"source": [
2020-04-20 16:57:40 +00:00
"tester = modz_data # use removed outliers data\n",
"groups = tester.groupby([\"TEST\", \"MAP\"])\n",
"groups_mean = groups.mean()\n",
"groups_std = groups.std()\n",
2020-04-20 11:37:08 +00:00
"groups_std.columns = [int(i) for i in groups_std.columns]\n",
2020-04-20 16:57:40 +00:00
"groups_mean.columns = groups_std.columns"
2020-04-20 11:37:08 +00:00
]
},
{
"cell_type": "code",
2020-04-20 16:57:40 +00:00
"execution_count": null,
2020-04-20 11:37:08 +00:00
"metadata": {},
2020-04-20 16:57:40 +00:00
"outputs": [],
"source": []
2020-04-20 11:37:08 +00:00
},
{
"cell_type": "code",
2020-04-20 16:57:40 +00:00
"execution_count": 19,
2020-04-20 11:37:08 +00:00
"metadata": {},
"outputs": [
{
2020-04-20 16:57:40 +00:00
"ename": "AttributeError",
"evalue": "'Line2D' object has no property 'order'",
"output_type": "error",
"traceback": [
"\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)",
"\u001b[0;32m<ipython-input-19-13516985816d>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[0mtests\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"TEST\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0munique\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 2\u001b[0;31m \u001b[0mplot_test\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mtests\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[0;32m<ipython-input-5-06054482d361>\u001b[0m in \u001b[0;36mplot_test\u001b[0;34m(test, include_error)\u001b[0m\n\u001b[1;32m 35\u001b[0m \u001b[0mmp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmaps\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mcount\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 36\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 37\u001b[0;31m \u001b[0msns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mlineplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0msizes\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mgroups_mean\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mloc\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mtest\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmp\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlabel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mmp\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0morder\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m2\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 38\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mcount\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mrepeats\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 39\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mxscale\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"log\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/seaborn/relational.py\u001b[0m in \u001b[0;36mlineplot\u001b[0;34m(x, y, hue, size, style, data, palette, hue_order, hue_norm, sizes, size_order, size_norm, dashes, markers, style_order, units, estimator, ci, n_boot, seed, sort, err_style, err_kws, legend, ax, **kwargs)\u001b[0m\n\u001b[1;32m 1135\u001b[0m \u001b[0max\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mgca\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1136\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1137\u001b[0;31m \u001b[0mp\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0max\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1138\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1139\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/seaborn/relational.py\u001b[0m in \u001b[0;36mplot\u001b[0;34m(self, ax, kws)\u001b[0m\n\u001b[1;32m 777\u001b[0m \u001b[0;31m# function will advance the axes property cycle.\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 778\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 779\u001b[0;31m \u001b[0mscout\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0max\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkws\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 780\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 781\u001b[0m \u001b[0morig_color\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mkws\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpop\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"color\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mscout\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_color\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/matplotlib/axes/_axes.py\u001b[0m in \u001b[0;36mplot\u001b[0;34m(self, scalex, scaley, data, *args, **kwargs)\u001b[0m\n\u001b[1;32m 1644\u001b[0m \"\"\"\n\u001b[1;32m 1645\u001b[0m \u001b[0mkwargs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnormalize_kwargs\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmlines\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mLine2D\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1646\u001b[0;31m \u001b[0mlines\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_get_lines\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m*\u001b[0m\u001b[0margs\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mdata\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1647\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mline\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mlines\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1648\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0madd_line\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mline\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m__call__\u001b[0;34m(self, *args, **kwargs)\u001b[0m\n\u001b[1;32m 214\u001b[0m \u001b[0mthis\u001b[0m \u001b[0;34m+=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 215\u001b[0m \u001b[0margs\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0margs\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 216\u001b[0;31m \u001b[0;32myield\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_plot_args\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mthis\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 217\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 218\u001b[0m \u001b[0;32mdef\u001b[0m \u001b[0mget_next_color\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_plot_args\u001b[0;34m(self, tup, kwargs)\u001b[0m\n\u001b[1;32m 361\u001b[0m \u001b[0;34m\"2.2\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"cycling among columns of inputs with \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 362\u001b[0m \"non-matching shapes is deprecated.\")\n\u001b[0;32m--> 363\u001b[0;31m return [func(x[:, j % ncx], y[:, j % ncy], kw, kwargs)\n\u001b[0m\u001b[1;32m 364\u001b[0m for j in range(max(ncx, ncy))]\n\u001b[1;32m 365\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 361\u001b[0m \u001b[0;34m\"2.2\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mmessage\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"cycling among columns of inputs with \"\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 362\u001b[0m \"non-matching shapes is deprecated.\")\n\u001b[0;32m--> 363\u001b[0;31m return [func(x[:, j % ncx], y[:, j % ncy], kw, kwargs)\n\u001b[0m\u001b[1;32m 364\u001b[0m for j in range(max(ncx, ncy))]\n\u001b[1;32m 365\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/matplotlib/axes/_base.py\u001b[0m in \u001b[0;36m_makeline\u001b[0;34m(self, x, y, kw, kwargs)\u001b[0m\n\u001b[1;32m 253\u001b[0m \u001b[0mdefault_dict\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getdefaults\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mset\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 254\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_setdefaults\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdefault_dict\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mkw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 255\u001b[0;31m \u001b[0mseg\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mmlines\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mLine2D\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m**\u001b[0m\u001b[0mkw\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 256\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mseg\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 257\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/matplotlib/lines.py\u001b[0m in \u001b[0;36m__init__\u001b[0;34m(self, xdata, ydata, linewidth, linestyle, color, marker, markersize, markeredgewidth, markeredgecolor, markerfacecolor, markerfacecoloralt, fillstyle, antialiased, dash_capstyle, solid_capstyle, dash_joinstyle, solid_joinstyle, pickradius, drawstyle, markevery, **kwargs)\u001b[0m\n\u001b[1;32m 398\u001b[0m \u001b[0;31m# update kwargs before updating data to give the caller a\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 399\u001b[0m \u001b[0;31m# chance to init axes (and hence unit support)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m--> 400\u001b[0;31m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mupdate\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 401\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mpickradius\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpickradius\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 402\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mind_offset\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m0\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36mupdate\u001b[0;34m(self, props)\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1005\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_setattr_cm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0meventson\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1006\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0m_update_property\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mprops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1007\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1008\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mret\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36m<listcomp>\u001b[0;34m(.0)\u001b[0m\n\u001b[1;32m 1004\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1005\u001b[0m \u001b[0;32mwith\u001b[0m \u001b[0mcbook\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_setattr_cm\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0meventson\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;32mFalse\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1006\u001b[0;31m \u001b[0mret\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0m_update_property\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mv\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mprops\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 1007\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1008\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mlen\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mret\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;32m~/.local/lib/python3.8/site-packages/matplotlib/artist.py\u001b[0m in \u001b[0;36m_update_property\u001b[0;34m(self, k, v)\u001b[0m\n\u001b[1;32m 999\u001b[0m \u001b[0mfunc\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgetattr\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mself\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m'set_'\u001b[0m \u001b[0;34m+\u001b[0m \u001b[0mk\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 1000\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0mcallable\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfunc\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 1001\u001b[0;31m raise AttributeError('{!r} object has no property {!r}'\n\u001b[0m\u001b[1;32m 1002\u001b[0m .format(type(self).__name__, k))\n\u001b[1;32m 1003\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mfunc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mv\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",
"\u001b[0;31mAttributeError\u001b[0m: 'Line2D' object has no property 'order'"
]
2020-04-20 11:37:08 +00:00
},
{
"data": {
2020-04-20 16:57:40 +00:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAABrsAAAE1CAYAAABX6Fs1AAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAaqklEQVR4nO3dXWje9f3/8VcTp5NfI5qQxqt2UuqkBlEPFDzRIb0x3Uytm9NAHMyJEeaY0AOxu7FpVTYi7EBrh3jg3erAdQdqs9IW8aCraGVDaDGoUFs69epd8iv1ZqP1Sv4Hsv7X1f1yXTVN8pmPB/Qg8MnlOydvgs98P98ZY2NjYwEAAAAAAIACNU31AAAAAAAAAHCqxC4AAAAAAACKJXYBAAAAAABQLLELAAAAAACAYoldAAAAAAAAFEvsAgAAAAAAoFjjxq6BgYEsWLAg8+fPz7vvvvuFZ2q1WlavXp1FixZl8eLFWb9+/YQPCgAAAAAAAP9u3Ni1cOHCPPfcc7ngggv+45kNGzZk79692bJlS55//vmsWbMm77///oQOCgAAAAAAAP9u3Nh11VVXpVKp/J9nNm7cmFtuuSVNTU1pbW3NokWLsmnTpgkbEgAAAAAAAL7IhLyzq1qtZvbs2ce/rlQq2bdv30R8NAAAAAAAAPxHExK7AAAAAAAAYCqcMREfUqlU8uGHH+byyy9PcvKTXvX63//9JKOjYxMxEsBXQlvbzAwPfzzVYwAUxe4EaIy9CdA4uxOgMU1NM3Leef9zyt8/IbFryZIlWb9+fa6//vocPnw4L7/8cp577rmGP2d0dEzsAmiQvQnQOLsToDH2JkDj7E6AyTPuNYYPPfRQvvWtb2Xfvn350Y9+lBtuuCFJ0tfXl507dyZJli1bljlz5uT666/Prbfemp/85Cf5xje+cXonBwAAAAAA4CtvxtjY2LT5E4Ph4Y/9xQNAA9rbW3Lw4EdTPQZAUexOgMbYmwCNszsBGtPUNCNtbTNP/fsncBYAAAAAAACYVGIXAAAAAAAAxRK7AAAAAAAAKJbYBQAAAAAAQLHELgAAAAAAAIoldgEAAAAAAFAssQsAAAAAAIBiiV0AAAAAAAAUS+wCAAAAAACgWGIXAAAAAAAAxRK7AAAAAAAAKJbYBQAAAAAAQLHELgAAAAAAAIoldgEAAAAAAFAssQsAAAAAAIBiiV0AAAAAAAAUS+wCAAAAAACgWGIXAAAAAAAAxRK7AAAAAAAAKJbYBQAAAAAAQLHELgAAAAAAAIoldgEAAAAAAFAssQsAAAAAAIBiiV0AAAAAAAAUS+wCAAAAAACgWGIXAAAAAAAAxRK7AAAAAAAAKJbYBQAAAAAAQLHELgAAAAAAAIoldgEAAAAAAFAssQsAAAAAAIBiiV0AAAAAAAAUS+wCAAAAAACgWGIXAAAAAAAAxRK7AAAAAAAAKJbYBQAAAAAAQLHELgAAAAAAAIoldgEAAAAAAFAssQsAAAAAAIBiiV0AAAAAAAAUS+wCAAAAAACgWGIXAAAAAAAAxRK7AAAAAAAAKJbYBQAAAAAAQLHELgAAAAAAAIoldgEAAAAAAFCsM+o5tHv37qxYsSKHDx/Oueeem4GBgcydO/eEM8PDw/nZz36WarWazz77LFdffXV++ctf5owz6vpPAAAAAAAAQMPqerKrv78/vb292bx5c3p7e7Ny5cqTzjz++OO56KKLsmHDhrz00kt56623smXLlgkfGAAAAAAAAP5p3Ng1PDycoaGhdHd3J0m6u7szNDSUkZGRE87NmDEjn3zySUZHR3P06NEcO3YsHR0dp2dqAAAAAAAASB3XGFar1XR0dKS5uTlJ0tzcnFmzZqVaraa1tfX4ubvvvjs//elPc8011+Tvf/97brvttlx55ZUNDdPWNrPB8QFob2+Z6hEAimN3AjTG3gRonN0JMHkm7IVamzZtyvz58/PMM8/kk08+SV9fXzZt2pQlS5bU/RnDwx9ndHRsokYC+K/X3t6Sgwc/muoxAIpidwI0xt4EaJzdCdCYpqYZX+qBqHGvMaxUKtm/f39qtVqSpFar5cCBA6lUKiecW7duXW688cY0NTWlpaUlCxYsyPbt2095MAAAAAAAABjPuLGrra0tnZ2dGRwcTJIMDg6ms7PzhCsMk2TOnDnZunVrkuTo0aN57bXXcvHFF5+GkQEAAAAAAOBz48auJFm1alXWrVuXrq6urFu3LqtXr06S9PX1ZefOnUmSn//85/nrX/+apUuX5qabbsrcuXNz6623nr7JAQAAAAAA+MqbMTY2Nm1ekuWdXQCNcQc4QOPsToDG2JsAjbM7ARpz2t/ZBQAAAAAAANOV2AUAAAAAAECxxC4AAAAAAACKJXYBAAAAAABQLLELAAAAAACAYoldAAAAAAAAFEvsAgAAAAAAoFhiFwAAAAAAAMUSuwAAAAAAACiW2AUAAAAAAECxxC4AAAAAAACKJXYBAAAAAABQLLELAAAAAACAYoldAAAAAAAAFEvsAgAAAAAAoFhiFwAAAAAAAMUSuwAAAAAAACiW2AUAAAAAAECxxC4AAAAAAACKJXYBAAAAAABQLLELAAAAAACAYoldAAAAAAAAFEvsAgAAAAAAoFhiFwAAAAAAAMUSuwAAAAAAACiW2AUAAAAAAECxxC4AAAAAAACKJXYBAAAAAABQLLELAAAAAACAYoldAAAAAAAAFEvsAgAAAAAAoFhiFwAAAAAAAMUSuwAAAAAAACiW2AUAAAAAAECxxC4AAAAAAACKJXYBAAAAAABQLLELAAAAAACAYoldAAAAAAAAFEvsAgAAAAAAoFhiFwAAAAAAAMUSuwAAAAAAACiW2AUAAAAAAECxxC4AAAAAAACKJXYBAAAAAABQLLELAAAAAACAYtUVu3bv3p2enp50dXWlp6cne/bs+cJzGzduzNKlS9Pd3Z2lS5fm0KFDEzkrAAAAAAAAnOCMeg719/ent7c3y5Yty4svvpiVK1fm2WefPeHMzp0789hjj+WZZ55Je3t7Pvroo5x55pmnZWgAAAAAAABI6niya3h4OENDQ+nu7k6SdHd3Z2hoKCMjIyece/rpp3PHHXekvb09SdLS0pKzzjrrNIwMAAAAAAAAnxv3ya5qtZqOjo40NzcnSZqbmzNr1qxUq9W0trYeP7dr167MmTMnt912Wz799NMsXrw4P/7xjzNjxoy6h2lrm3kKPwLAV1t7e8tUjwBQHLsToDH2JkDj7E6AyVPXNYb1qNVqeeedd/LUU0/l6NGjufPOOzN79uzcdNNNdX/G8PDHGR0dm6iRAP7rtbe35ODBj6Z6DICi2J0AjbE3ARpndwI0pqlpxpd6IGrcawwrlUr279+fWq2W5POodeDAgVQqlRPOzZ49O0uWLMmZZ56ZmTNnZuHChdmxY8cpDwYAAAAAAADjGTd2tbW1pbOzM4ODg0mSwcHBdHZ2nnCFYfL5u7y2bduWsbGxHDt2LK+//nouueSS0zM1AAAAAAAApI7YlSSrVq3KunXr0tXVlXXr1mX16tVJkr6+vuzcuTNJcsMNN6StrS3f+c53ctNNN+Wb3/xmvv/975++yQEAAAAAAPjKmzE2NjZtXpLlnV0AjXEHOEDj7E6AxtibAI2zOwEac9rf2QUAAAAAAADTldgFAAAAAABAscQuAAAAAAAAiiV2AQAAAAAAUCyxCwAAAAAAgGKJXQAAAAAAABRL7AIAAAAAAKBYYhcAAAAAAADFErsAAAAAAAAoltgFAAAAAABAscQuAAAAAAAAiiV2AQAAAAAAUCyxCwAAAAAAgGKJXQAAAAAAABRL7AIAAAAAAKBYYhcAAAAAAADFErsAAAAAAAAoltgFAAAAAABAscQuAAAAAAAAiiV2AQAAAAAAUCyxCwAAAAAAgGKJXQAAAAAAABRL7AIAAAAAAKBYYhcAAAAAAADFErsAAAAAAAAoltgFAAAAAABAscQuAAAAAAAAiiV2AQAAAAAAUCyxCwAAAAAAgGKJXQAAAAAAABRL7AIAAAAAAKBYYhcAAAAAAADFErsAAAAAAAAoltgFAAAAAAB
2020-04-20 11:37:08 +00:00
"text/plain": [
"<Figure size 2160x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"tests = data[\"TEST\"].unique()\n",
"plot_test(tests[1])\n"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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e4sWLaJUqVKPOCIREREREZFHQxVnIiIiIiIiIiIiIiIiIoCxsAMQEREREREREREREREReRwocSYiIiIiIiIiIiIiIiKCEmciIiIiIiIiIiIiIiIigBJnIiIiIiIiIiIiIiIiIgCYCjuAwnTtWhJms6WwwxD5y6tQoRRXrtws7DBERESkAGm/FxERKdq014uIyJPEaDRQrlzJe773l06cmc0WJc5EHhP6LoqIiBR92u9FRESKNu31IiJSFOioRhERERERERERERERERGUOBMREREREREREREREREBlDgTERERERERERERERERAf7izzgTEREREREREREREXkSZGZmcO1aPBkZaYUdisgTw2QqRrly9lhZ5T0dpsSZiIiIiIiIiIiIiMhj7tq1eIoXL0HJkg4YDIbCDkfksWexWEhKSuDatXjs7Bzz3E9HNYqIiIiIiIiIiIiIPOYyMtIoWbK0kmYieWQwGChZsnS+qzSVOBMREREREREREREReQI8SNJs4qJ9TFy0rwCiEXn8Pch3RokzERERERERERERERH5U6KjZ/DTT/vvuh4Xd55u3ToWQkR3mzBhDGvWrHro40ZHzyA6esZDH1cKR4Enzm7evEmHDh04e/YsADt27KBjx4688sorfPzxx9ntjh49SteuXWndujXDhw8nIyMDgPPnz9OrVy/atGnDwIEDSUpKAiAhIYH+/fvTtm1bevXqRXx8fEEvRURERERERERERERE7mH//r1kZmYWdhgif5qpIAf/6aefGDFiBKdOnQIgJSWFsLAwFixYgKOjI4GBgWzZsoVmzZoRHBzM+PHjadCgAWFhYSxbtgwfHx/Cw8Px8fGhffv2TJkyhalTpxIcHMwnn3yCu7s7M2fOZOXKlUyYMIFPPvmkIJcjIiIiIiIiIiIiIvKXd+nSRcaOHUlycjJGo4HGjb2JjT3KxInjee+9SDIzM/jXv8YBUK1ajex+MTFbiInZSkjISH7++QizZ08nMjKKNWtWsX//XoYPHwPA4MH96devPwALFsylePHinDp1kuefr8bo0ROwtrbm66+/YunShRgMBpydX+Dtt9+hRIkSdOjQCmfnWly5cpnZs+czbVoU27fHYGdnh9lsxsXFDYC1a1fz+edLMJstODvX5J//fBcbG5u7+i9ZspBNm74lM9NMw4aeDBwYhMFgYPHi+Xz11X8oU6Ystra2vPBC7fves27dOtKqVWt2796FlZUVfn4BLF26kLNnzzBo0FBatnyZEyeO8/HHH5CcnMy1a1fx9fWjS5duREfP4OLFC5w6dZIbN67TuXNXfHz6FMAnK1DAibNly5YxevRo3nnnHQAOHDiAk5MTVapUAaBjx46sW7eOatWqkZKSQoMGDQDo2rUrUVFRdO/end27dzNlypTs67179yY4OJjNmzezaNEiADp06MDYsWNJT0/H2tq6IJckIiIiIiIiIiIiIlKoth+MI+ZAXJ7anr6UCHDf55xZMtIAMJiK4VXPkSZ1He875urVX9K4sRc+Pn34/vsdnDjxK87OL9CvX3+ef74affq8zpAhb+Ph4cm8ebPZt28PAF5ezfDyagZAzZq1iIyMyjX+Q4cOsGjRcuzs7AkM9GPXrp04OlZm/vw5zJw5jzJlyvLhhxOZO3cWgwb9g+vXr9OrVx9cXd3ZtGk
"text/plain": [
"<Figure size 2160x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABsgAAAFHCAYAAAAMfMlkAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdeViV1drH8e9mThFUwFBTlBBwTBFNc+pojjmFmuWcklqiqak5T4ikoh2145BjTvl2zJynbNAwM0Erp5wTEEVQQRAU2Xu/f3DcSaig4fz7XFdX8jxr3etea296zulurcdgNpvNiIiIiIiIiIiIiIiIiDwjrB51AiIiIiIiIiIiIiIiIiIPkwpkIiIiIiIiIiIiIiIi8kxRgUxERERERERERERERESeKSqQiYiIiIiIiIiIiIiIyDNFBTIRERERERERERERERF5pqhAJiIiIiIiIiIiIiIiIs8UFchERERERETu4MCBA/Tr1++ubT799FO2b9/+kDJ6eFavXk2vXr3uu//MmTMZP358HmYkIiIiIiKSd1QgExERERERuYOKFSsyY8aMu7bZs2cPGRkZDykjERERERERyQs2jzoBERERERGRx9WePXsIDg6mQoUKODo6cvToUc6fP4+Pjw+TJk1izZo1HDx4kMmTJ2NtbU3Dhg3vGKtixYr07NmTXbt2ceHCBQIDA+nQoQMA//nPf9i4cSPW1taULl2aUaNG4ebmxrZt25g9ezYGgwFra2uGDBlCtWrV6Ny5Mx07dqRJkyYAWX7+7bffmDBhAmlpadja2jJkyBBq1qx5x+u5cf78ecaOHcvZs2cxm820bt2awMBAALZv386nn36KyWQif/78DBs2jEqVKmXpv3jxYlavXs2CBQtYuXIlly9fZvTo0UDmTrObP3fu3Jly5coRGRnJ5cuXadWqVY47+ERERERERO6HCmQiIiIiIiK5cPDgQZYsWYLBYODNN99ky5YtdOzY0fL3uxXHANLT0ylUqBArV67k4MGDvP3227Rp04YNGzbw448/smrVKvLly8fMmTMZOnQoCxYsYPLkyYSFhVG5cmXCw8PZs2cP1apVu+MYN27coE+fPkyYMIFXX32VgwcPMmzYML766qvbXl+7di1WVjkfLDJo0CAaNGjAO++8Q3JyMh07dqRo0aL4+voyZswY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
"text/plain": [
"<Figure size 2160x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABsIAAAFHCAYAAAAbXlmtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3gU5drH8e/sbgoptCSQQOgtlFASUEroFiwgIlIFERDwiKDvAaUpoCAWPB4BFZQmRRGBAyKCCFaKSJMeQHoJIRDSe3bePwKRAAkhJASS3+e6cHdmnnmee2bdbLn3fsYwTdNEREREREREREREREREpICx5HcAIiIiIiIiIiIiIiIiInlBiTAREREREREREREREREpkJQIExERERERERERERERkQJJiTAREREREREREREREREpkJQIExERERERERERERERkQJJiTAREREREREREREREREpkJQIExERERGRQm3Pnj0MGTIkyzbTpk1j3bp1dyiiO2fZsmUMHDgwx/tPnTqVN998MxcjEhERERERyV1KhImIiIiISKHm7+/PlClTsmyzZcsWUlJS7lBEIiIiIiIiklts+R2AiIiIiIhIftqyZQtvvfUWderUwc3NjYMHD3Lu3Dlq1KjBu+++y/Lly9m7dy/vvfceVquVBx98MNO+/P39GTBgABs3buT8+fP079+fHj16APDxxx+zatUqrFYrlSpV4vXXX8fLy4u1a9fy6aefYhgGVquVV199lUaNGtGrVy969uxJu3btADIs79q1iwkTJhAfH4+DgwOvvvoqTZo0yXR9dpw7d45x48Zx5swZTNOkY8eO9O/fH4B169Yxbdo07HY7rq6ujBw5krp162bYf+7cuSxbtoxZs2axaNEiLl26xBtvvAGkVY5dWe7Vqxe1atVi+/btXLp0iSeeeOKmFXkiIiIiIiI5pUSYiIiIiIjIZXv37mXevHkYhkGXLl1Ys2YNPXv2TL/NKgkGkJSURIkSJVi0aBF79+6le/fuPPXUU3z33Xf8/vvvLFmyBBcXF6ZOncqIESOYNWsW7733HpMnT6Z+/fps2LCBLVu20KhRo0zHSE5O5sUXX2TChAm0atWKvXv3MnLkSJYuXXrD9StWrMBiuflkIMOGDaNt27Y899xzREdH07NnT3x8fPDz82Ps2LEsWrSIcuXKsXnzZv71r3+xZs2a9H0///xz1q9fz4IFCyhatOhNxzp27BhfffUV8fHxdOnSBX9/f1q3bn3T/URERERERG6VEmEiIiIiIiKXNW/eHEdHRwCqV69OZGTkLffRtm1bAGrXrk1SUhJxcXH89ttvdOrUCRcXFwB69+7N9OnTSUpK4rHHHmPw4MG0bNmSZs2a8fzzz2fZ/6FDh7BYLLRq1QqAOnXqsHLlSvbt23fD9dkRFxfHjh07mD17NgDu7u506tSJ3377jYiICBo3bky5cuUAaNKkCSVLlmTv3r0ArF27lrCwMKZPn56tJBhA165dcXBwwMHBgXbt2rFhwwYlwkREREREJE/oGmEiIiIiIiKXOTs7p983DAPTNG+5Dycnp/T9AUzTxG63py8D2O329GuOvfLKK3z55ZfUqVOHZcuW0bNnz/R2V4+fnJwMgNVqzdAXpCXHMlufnWub2e326471SozXxn4lriv9VqhQgSlTpjB+/HiioqLSj/1GsV9hs9ky9JWdijUREREREZGc0KcNERERERGRm7BardlKKGWmefPmLF26lLi4OADmz59Po0aNsFgstGnThvj4eLp3787YsWM5ePAgSUlJGaqu/v77bw4ePAhA5cqVMQyDjRs3ArBv3z6effbZTNfb7fabxufm5ka9evVYuHAhANHR0SxfvpymTZvSpEkTNmzYwKlTpwDYvHkzISEh1KtXD4AaNWrw8MMP06RJE8aPHw9AiRIl2LdvH6ZpEhMTw88//5xhvG+//Ra73U5kZCSrV6+mTZs2OT63IiIiIiIiWdHUiCIiIiIiIjfRpk0b/vOf/5CcnMyTTz55y/t37tyZkJAQnn76aex2OxUqVGDy5MnYbDZGjRrFsGHDsNlsGIbB22+/jaOjIy+88AIjRozg119/pXLlyjRs2BAAR0dHpk6dyttvv817772Hg4MDU6dOzXJ9dkyePJk333yTZcuWkZSURPv27enUqROGYTB27FgGDx5Mamoqzs7OTJ8+HXd39wz7jxo1iscff5zvv/+eDh068Pvvv/PQQw9RunRp7rvvvgwVYgkJCXTu3JnY2Fh69OhBkyZNbvmcioiIiIiIZIdh5mSuDxEREREREZEc6NWrFz179qRdu3b5HYqIiIiIiBQCqggTERERERHJppkzZ7Jy5cobbuvXrx8dOnS4wxHdXI8ePYiNjb3htoULF+Lm5naHIxIREREREblzVBEmIiIiIiIiIiIiIiIiBZIlvwMQERERERERERERERERyQtKhImIiIiIiIiIiIiIiEiBpESYiIiIiIiIiIiIiIiIFEhKhImIiIiIiIiIiIiIiEiBZMvvAHLLpUux2O1mfochIoCHhxsXL8bkdxgiIiKSR/RaLyIiUrDptV5ERO4lFotBiRKumW4vMIkwu91UIkzkLqLno4iISMGm13oREZGCTa/1IiJSUGhqRBERERERERERERERESmQlAgTERERERERERERERGRAkmJMBERERERERERERERESmQCsw1wkREREREJH+kpqZw6VIYKSlJ+R2KSL6w2RwpUcILq1UfsUVERERE7jZ6ly4iIiIiIrfl0qUwnJ1dcHX1xjCM/A5H5I4yTZPY2CguXQrD09Mnv8MREREREZFraGpEERERERG5LSkpSbi6FlUSTAolwzBwdS2qikgRERERkbuUEmEiIiIiInLbcpoEe3fhDt5duCOXoxG5s5QEFhERERG5eykRJiIiIiIiBV5IyFk6d26f32HkmauPb+LEcXz//cos2wcFNcxye2pqKv/3f4Pp3r0TO3ZsY/DgAVm237jxdxYtWpBlm++/X8nEieOybJMdgwcPYMeObbfdj4iIiIiIFA5KhImIiIiIiEgGYWFhHDnyN199tSxb7YOD9xMbG5vHUYmIiIiIiNw6W34HICIiIiIikpt27NjGF1/Mwmq1ERJyhlq1avPss/1ITExk7NiRHD16BHf3okyaNJlixYrTocPDNG/ekv3791KypCePPdaBJUsWERZ2nlGjxtKgQSA7d27ns88+ITExgejoGIYMeYXmzVsxceI4nJycOHAgLRHUp08/2rV7jODg/cycOZ3Jk6dw4UIYw4YNZe7cL28Y22uvvY6joyMzZnzM9u1biYqKwtPTkzffnETJkh48/vgD1KhRi4sXLzBz5jw++OAdjh49Qnh4OFWrVmXcuImZnovVq7/jm2++wm43qVHDj//7v9dwcnK66Tl87bWXiYyMoF+/Xrz44tD09Tc6D76+5VmxIi1h5u3tw2OPdci039OnTzF48ABCQ0Np2LARr702hpSUlBseU0pKCuPGjebixYsA9O37PEFBLQFYtWoF06Z9SHR0DEOH/pugoBaZjjlr1gxCQ89x6tRJIiIu0bt3X7Zv38r+/XupWrU648e/TWpq6g1jCA8PZ8SI/6N8+YocO3YUb29v3njjLYoWLXbTcygiIiIiIncHJcJERERERCRXbdwTwobdIdlqe/J8NEC2rxMWVNeHZv4+N223Z89u5s5dSLlyFXj99RFs2rSBiIhLdO3ak1q16jBmzKusW7eWp57qQnj4RRo3bsrw4aN46aWB/Pbbz3zyyUxWr/6OxYu/okGDQJYu/ZoRI16nQoWKbN++lY8+mkzz5q0AOHPmNDNmzCE8/CL9+vWiUaP78fOrxeTJUwDw9PRi7twvM41t2bLFBAW15OTJ40yfPhuLxcJbb73BDz+spnv3Z4iIiKBnz94EBDTkr792YLM5MGPGHOx2O0OGDGLz5o3UqFHzunNw9OgRVq5czqefzsbJyYnp06fx1Vfz6dOn/03P3zvv/IeXXhrIrFnzM0xDeKPzMG/e1zzxRCeALJNgAKGh55g790ucnYv
"text/plain": [
"<Figure size 2160x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_test(tests[2])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABsIAAAFHCAYAAAAbXlmtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3yN5//H8dcZGSIDSWQYsRObDFISWtVlVVFVRWkUrVHtt2q3FFX96q+tao1aNTqUfttGdWmVmkXU3rEFQfbOOef3B1JKCJWE5P18PProOfe5rvt63/c5Jzf5uK7bYLPZbIiIiIiIiIiIiIiIiIgUMcbCDiAiIiIiIiIiIiIiIiKSH1QIExERERERERERERERkSJJhTAREREREREREREREREpklQIExERERERERERERERkSJJhTAREREREREREREREREpklQIExERERERERERERERkSJJhTAREREREZFc7Nixg0GDBt2wzdSpU1mxYkUBJbo9w4YNY/bs2bfdv3v37vz44493MJGIiIiIiEjBUCFMREREREQkF3Xr1mXKlCk3bLNx40ays7MLKJGIiIiIiIjcChXCREREREREcrFx40batGnDsGHDGD9+PN27d+ehhx5iwIABpKSksGjRInbu3Mk777zDL7/8csN9TZkyhbZt29KhQwciIiI4e/YsAP7+/ly4cCGn3ZXPlyxZQuvWrWnbti09evQgJibmhtvzYvPmzXTu3Dkny+rVq3Ne++ijj2jVqhVt27Zl0KBBxMbGXtU3Ozubl156if/85z9kZ2dfM1Psyue1atXivffeo0OHDjz66KP8/PPPec4oIiIiIiJyp6gQJiIiIiIikgc7d+5k9uzZLF++nJMnT/Ljjz/yzDPPUKdOHV577TUeeuihXPvGxMTw6aefsnTpUr7++muaNm3K9u3bbzje3r17mTx5MrNmzSIyMpIWLVowbdq0XLfnRVxcHIMGDWLkyJFERkYyadIkhgwZwvHjx1m6dCl//PEHS5YsITIykurVqzNs2LCcvllZWbz00ku4u7szefJkzGbzDceyWCyUKFGCr7/+mvfff58RI0ZcVfATEREREREpCDf+m4uIiIiIiIgAEB4ejr29PQA1atQgISEhz329vLwICAjgiSeeoFmzZjRr1oz77rvvhn3Wr19PWFgYPj4+APTs2ROAuXPnXnd7Xmzfvp2KFStSv359AKpXr05gYCB//vknq1evpkOHDjg5OQHQo0cPpk+fTmZmJgCTJk0iJSWFX375BYPBkKfxunXrBkBAQAA1atRg06ZNPPLII3nOKyIiIiIi8m9pRpiIiIiIiEgeODo65jw2GAzYbLY89zUajSxcuJCJEydSqlQp3nrrLd55551r2l0uOgGYTKarCk7p6ekcOnQo1+15YbFYrili2Ww2srOzsVqtV71mtVqvuvdZu3bt6NKlC6NGjbqm/2VZWVlXvWYyma7a35XPRURERERECoIKYSIiIiIiIv+CyWS6qmB0PXv37qVNmzZUrVqVvn370rNnT3bs2AFAmTJlch4vW7Ysp0/jxo1Zv359zr3EvvjiC/773//muj0vGjRoQHR0dM6yjAcOHGDTpk00atSI8PBwli5dSmpqKgALFiwgJCQkZxZcvXr1GDx4MMeOHWPx4sU52Xfu3AnAwYMH2bdv31XjffPNNwDs2rWLw4cPExISkqecIiIiIiIid4qWRhQREREREfkXWrRowf/93/+RlZXFE088cd02AQEBPPbYY3Ts2BEnJyccHR1zZlaNGjWKN998E1dXV5o0aYKnpycA/v7+DBkyhN69ewPg6enJW2+9hZeX13W350WZMmX44IMPGDduHOnp6RgMBiZOnEjlypXx8/MjJiaGJ598EqvVip+fH5MnT76qv4ODA2+//TbPPfccoaGhvPDCCwwbNoxVq1ZRpUoVgoODr2ofFRXF4sWLsVqtvPfee7i5ueX9xIqIiIiIiNwBBtutrOchIiIiIiIikgf+/v6sX7+eMmXKFHYUEREREREpxjQjTERERERE5A6YNWsWkZGR130tIiKCdu3a5dvY0dHRvPzyy9d9rXLlyrz//vv5NraIiIiIiMjdTDPCREREREREREREREREpEgyFnYAERERERERERERERERkfygQpiIiIiIiIiIiIiIiIgUSSqEiYiIiIiIiIiIiIiISJGkQpiIiIiIiIiIiIiIiIgUSebCDnCnxMWlYLXaCjuGiADu7s6cP59c2DFEREQkn+haLyIiUrTpWi8iIvcSo9FA6dIlc329yBTCrFabCmEidxF9H0VERIo2XetFRESKNl3rRUSkqNDSiCIiIiIiIiIiIiIiIlIkqRAmIiIiIiIiIiIiIiIiRZIKYSIiIiIiIiIiIiIiIlIkFZl7hF2PxZJNXFws2dmZhR1F5J5jNttTurQnJlOR/jEhIiIiIiIiIiIiIkVYkf4Nd1xcLI6OTpQs6Y3BYCjsOCL3DJvNRkpKInFxsXh4+BR2HBERERERERERERGR21Kkl0bMzs6kZElXFcFEbpHBYKBkSVfNphQRERERERERERGRe1qRLoQBt1UEm7QoikmLovIhjci9QwVkEREREREREREREbnXFflCWHExYEAfoqI2F3aMO65Tp7bExJz6V/uIitrMgAF97lAiERERERERERERERG5V6gQJiIiIiIiIiIiIiIiIkWSubADFCfTp0/l999/xc2tFO7uHoSFNcNms/HFFwsxGAz4+9fk5Zdfw8nJibVr/+CTT6Zhs1nx9S3HkCEjKFPGnaiozbz//n8xmUzUrl2PI0eimTp15lXjLFgwj5Urf8FisdK4cSgvvDAIg8HAq68OonfvfgQE1OLtt8cRFtaMsLDmTJ36Pps2bcRoNBAefj/PPdeH2bNncObMaY4cOUxCQjyPP96Brl17kJKSzMSJ44iNPcu5c7EEBzdi2LDRbN26hWnTpmCxWKlSpSqPPtqajz+egsFgwMXFhTFj3qJUqVL88MMyvvrqc6xWG/7+AbzyylAcHBxueN7mzv2EAwf2kZ6ezqhRb1K7dh22bt3CzJkfk5GRTlJSMoMGvUx4+P38/POPfPbZfIxGI76+vowePQ6A+Ph4Xn11ECdPnqBiRT/GjZuEvb19rmO2a/cI4eHN2b17J2XKeNC6dTuWLPmC2NizjBjxBg0bBuWaYcKEMTg4OLBnz25SUlLo2TOCRx9t/e8/QCIiIiIiIiIiIiIickuKTSFs7Y4Y1myPyVPbY2eTAPJ8n7Cwej40retzwzZr1qxm+/a/WLBgMWlpaUREdCMwMIivvvqCmTPn4eZWinffncTcuZ/QtWt3/vvft5g2bTY+Pr589tl8/u//3mHMmAmMH/8G77zzPtWqVef99ydfM86GDevYt28Pn3wyH4PBwLhxr/Pzzz/wyCOtmDx5Sk67YcNGA3D6dAwbNqxj4cLFpKen89ZbY8nIyABg3749TJs2B6vVSkREN4KCGnHs2BGqV6/B+PGTyMrKolu3J9m3by8Ax48fY8mSZTg7OzNwYF+GDBlOzZq1WbToU/bv34uHhyeRkd8wbdocHBwcmD59Kp9/voCePXvf8NxVqlSFESPeYOnSL/n88wWMHz+JpUu/ZNiw0fj5VWLLlk188MFkwsPv55NPpjFz5lxKly7DRx99wLFjRwA4c+Y077zzHt7ePvTt25PNm/+kSZOwXMe8cOE8oaFNGDJkBAMH9mX16pV8/PEsfvhhGYsXf07DhkG5ZgA4efIEM2bM5cKF80REdCckpDHu7h43PE4RERERERERERERkcu1iaHPBBZykqKh2BTCCtvmzRtp0aIldnZ22NnZER7eHIPBQNOm4bi5lQKgXbsnmDhxLA0aBFKzZm18fHwvbe/AggXzOHToIKVKlaZateoAtG7djg8+mPyPcf5k9+6dRER0ByAjIx0vL+9cc3l4eOLg4MALLzxHkybhvPDCwJwZWi1bPoKTkxMAYWHN2LJlE127dmf37p0sXvzZpdliCaSlpQJQoYIfzs7OOe1HjBhCeHhzwsObExISytK
"text/plain": [
"<Figure size 2160x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABrwAAAFHCAYAAADz3uyGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3hU1dbH8e+UFEIKqSSEGkoQaQmgSFUsdERExQIioOCl6hUFK4iIXrFhRWkKetULNkQEuRakXKW+0lsoSQgphFRImTnn/SNhINJCTAgJv8/z8BDm7LP3OuckDM5yrW0xTdNEREREREREREREREREpIKylncAIiIiIiIiIiIiIiIiIn+HEl4iIiIiIiIiIiIiIiJSoSnhJSIiIiIiIiIiIiIiIhWaEl4iIiIiIiIiIiIiIiJSoSnhJSIiIiIiIiIiIiIiIhWaEl4iIiIiIiIiIiIiIiJSoSnhJSIiIiIiV7wtW7YwZsyY8455++23WbFixSWKqGQmTJjA7NmzS3z+wIED+eGHH0oxIhERERERkUtDCS8REREREbniNWvWjBkzZpx3zO+//47D4bhEEYmIiIiIiMjFUMJLRERERESueL///ju9evViwoQJvPDCCwwcOJCbb76ZUaNGkZ2dzSeffMLWrVv517/+xY8//njeuWbMmEHv3r3p168fQ4cOJSkpCYDIyEhSU1Nd407/88KFC+nZsye9e/dm0KBBJCQknPf14li/fj133nmnK5aVK1e6jr3zzjv06NGD3r17M2bMGJKTk4uc63A4GDt2LP/85z9xOBxnVH6d/ucmTZrw+uuv069fP7p168by5cuLHaOIiIiIiEhpUcJLRERERETkNFu3bmX27Nl8//33xMfH88MPP3DvvffStGlTHn/8cW6++eZznpuQkMBHH33EokWL+PLLL2nfvj1//vnnedfbuXMn06dPZ9asWSxevJguXbrw3nvvnfP14jh27BhjxozhqaeeYvHixbz88suMHz+e2NhYFi1axG+//cbChQtZvHgxDRs2ZMKECa5z8/PzGTt2LIGBgUyfPh273X7etZxOJ1WqVOHLL7/kjTfe4MknnyyS2BMREREREbkUzv9fLiIiIiIiIleYjh074u7uDkCjRo1IT08v9rnVq1encePG3HbbbXTq1IlOnTpx3XXXnfectWvX0qFDB8LCwgAYPHgwAHPnzj3r68Xx559/Urt2bVq0aAFAw4YNiY6O5o8//mDlypX069cPLy8vAAYNGsT7779PXl4eAC+//DLZ2dn8+OOPWCyWYq133333AdC4cWMaNWrEunXr6Nq1a7HjFRERERER+btU4SUiIiIiInIaT09P19cWiwXTNIt9rtVqZcGCBUybNo1q1arx4osv8q9//euMcSeTSwA2m61IYiknJ4d9+/ad8/XicDqdZySrTNPE4XBgGEaRY4ZhFNmbrE+fPgwYMICnn376jPNPys/PL3LMZrMVme/0P4uIiIiIiFwKSniJiIiIiIgUg81mK5IYOpudO3fSq1cv6tevz/Dhwxk8eDBbtmwBICAgwPX1d9995zrn2muvZe3ata69vj777DNeeeWVc75eHC1btiQmJsbVTnHPnj2sW7eOa665ho4dO7Jo0SKOHz8OwPz582nTpo2rqq158+aMGzeOQ4cO8cUXX7hi37p1KwB79+5l165dRdb7+uuvAdi2bRv79++nTZs2xYpTRERERESktKiloYiIiIiISDF06dKF1157jfz8fG677bazjmncuDHdu3fn9ttvx8vLC09PT1el1NNPP83zzz+Pr68v7dq1Izg4GIDIyEjGjx/PsGHDAAgODubFF1+kevXqZ329OAICAnjzzTeZMmUKOTk5WCwWpk2bRr169ahTpw4JCQnccccdGIZBnTp1mD59epHzPTw8eOmllxgyZAht27bl4YcfZsKECfz6669ERETQunXrIuM3btzIF198gWEYvP766/j5+RX/xoqIiIiIiJQCi3kx/TlEREREREREThMZGcnatWsJCAgo71BEREREROQKpgovERERERGRizBr1iwWL1581mNDhw6lT58+ZbZ2TEwMjzzyyFmP1atXjzfeeKPM1hYREREREbmcqcJLREREREREREREREREKjRreQcgIiIiIiIiIiIiIiIi8nco4SUiIiIiIiIiIiIiIiIVmhJeIiIiIiIiIiIiIiIiUqEp4SUiIiIiIiIiIiIiIiIVmr28A7hYx45lYxhmeYchIkBgoDdHj2aVdxgiIiJSRvReLyIiUrnpvV5ERCoSq9WCv3/Vcx6vcAkvwzCV8BK5jOjnUUREpHLTe72IiEjlpvd6ERGpLNTSUERERERERERERERERCo0JbxERERERERERERERESkQlPCS0RERERERERERERERCq0CreH11+ZpklWVjonTmRhGM7yDkekwrHb3fH3D8Zmq/B/HYiIiIiIiIiIiIjIFarCf8J97FgyFouFgIDq2Gx2LBZLeYckUmGYpkl2dgbHjiUTFBRW3uGIiIiIiIiIiIiIiJRIhW9pmJeXQ7Vqgdjtbkp2iVwki8VC1aq+OBx55R2KiIiIiIiIiIiIiEiJVfiEF5hYLCW7jJc/2cjLn2ws5XhEKhYlikVERERERERERESkoqsECa+K5/vvFzN16qQzXk9JSeaxx8aU6px/V1nNWxL9+/cmIeFwqc87atRDbNy4vtTnPWnjxvWMGvVQmc0vIiIiIiIiIiIiInKlU8LrMhIUFMz06TPKOwwREREREREREREREZEKxV7eAVQ2Gzeu5733ZuB0GtSoEY6bmxt79+7GarUyYMB9dO/eC4C4uFhGjnyQjIx02rXryIgRozhyJIHRo4ezcGFBVVXVqt7s2rWDlJRkBg8eRs+efc67dlxcLKNGPURiYiKtW7fhiSeeBuDjj+ewfPlSrFYrbdq05R//GIPNZmPJkm/57LMFWCwWIiOv4pFHHsfLy4sffljCRx/NpmpVb0JDQ6lSxQuAWbPeJygoiL59+/P11wtJSUlh2LARTJ06iaioVvTo0RuADh1as2rVembPnklKSjKxsYdITDxCr163cv/9QzEMgxkzXmX9+nVYLNC1aw/uu29wkXsXEVGfMWMe5fnnnyEpKZG6dSPIyyvYZ8rpdPLuu2+yadMGnE6DHj16cddd955x/qOPPsFrr71MTMw+DMPg3nsHcfPN3cjLy+Pll6ewc+cOQkNrkJ6edt77mpBwmCeffIyIiPrs3r2LgIBApkx5CV9fP1av/o0PP3wP0yx43uPHP0lAQCB//PE/Zsx4DXd3d+rUqVvkGU2fPo2MjHQ8PDx55JHxNGrU+Jxrz549k8TEI8TGHiIt7RiDBg1hw4Z1bN++lQYNGjF58os4nU5effUlYmL2kZqaSoMGDZg0aSqpqalMmPAotWvXZf/+GEJDQ3n22Sn4+vqd/5tYRERERERERERERKSCqXQJr9VbElj1Z0Kxxh5KygQo9j5eHZqH0b5Z2AXHxcYeYuHC7/j449nk5eUxf/4XpKWl8eCD99OwYSRQkESZO/dTvL29GTNmBKtW/UqDBo2KzJOUlMi7784iJmYfo0cPv2DCKzHxCPPmfYqnZxXuuqsvMTH7SEw8wqpVK5k1az52u52nn36cr79eRMuW0Xz88Rw++GAefn7VePXVl5k790Puuuse3ntvBnPnfoqvrx+PPz7OlfAaNmyEa62+ffsX657t3buHd9+dRVZWJnfe2Zd+/e7kxx9/IDExkY8++jf5+fmMHv0QEREN8PT0dN07b29vXnvtZRo1asz06TPYvHkjP/30IwCLF38FwJw5n5CXl8ejj46iceMmRe69t7c37733FpGRV/H005PJzs5ixIghNGnSlF9//RmATz5ZSGzsIe6//+5iXcfEic/SqFFjnnpqPMuXL+XGG2/hlVde5L33ZhMWVoNPP/2Y1177F88+O4WpU5/jzTffp27derz00hTXPFOnPscjjzxOo0aN2b8/hieffIx///vL864dE7OP99+fw5Yt/8fYsQ/z0UefUatWbe677w7
"text/plain": [
"<Figure size 2160x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABrwAAAFHCAYAAADz3uyGAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdeZxOdRvH8c+9zL6vZsYw9rElxpLsj0LWSpKUmpBRIYpClBKTpYWKIlHWhJSStEspWQpZspthzGIZs8/cy/PHmJvJzoyxfN+v1/Myc87v/H7XOffcc3rua67rGOx2ux0RERERERERERERERGR65SxpAMQERERERERERERERERuRJKeImIiIiIiIiIiIiIiMh1TQkvERERERERERERERERua4p4SUiIiIiIiIiIiIiIiLXNSW8RERERERERERERERE5LqmhJeIiIiIiIiIiIiIiIhc15TwEhERERGRm97mzZsZMGDAece88847fPfdd1cposszdOhQZsyYcdnH9+jRgxUrVhRhRCIiIiIiIleHEl4iIiIiInLTu+WWW5g8efJ5x/zxxx9YLJarFJGIiIiIiIhcCiW8RERERETkpvfHH3/QoUMHhg4dyquvvkqPHj1o1aoV/fr1IyMjg7lz57JlyxbGjx/Pt99+e965Jk+eTMeOHencuTO9evUiKSkJgMjISI4ePeoYd/r3ixYton379nTs2JFHHnmEhISE826/GOvWraNr166OWFatWuXY9+6779KuXTs6duzIgAEDSE5OLnSsxWLh6aef5tlnn8VisZxR+XX699WrV+fNN9+kc+fO3HXXXaxcufKiYxQRERERESkqSniJiIiIiIicZsuWLcyYMYPly5dz8OBBVqxYwUMPPUTNmjV57rnnaNWq1TmPTUhI4KOPPmLx4sUsWbKExo0bs2nTpvOut337diZOnMgHH3zAsmXLaNmyJVOnTj3n9otx7NgxBgwYwAsvvMCyZcsYN24cQ4YMIS4ujsWLF/PLL7+waNEili1bRuXKlRk6dKjj2Ly8PJ5++mkCAgKYOHEiZrP5vGtZrVbc3NxYsmQJb731FsOHDy+U2BMREREREbkazv//XERERERERG4yTZs2xdnZGYAqVaqQmpp60ceWKlWKqlWrcu+999KsWTOaNWvG7bffft5j1qxZQ5MmTQgNDQUgOjoagJkzZ551+8XYtGkTZcuW5dZbbwWgcuXKREVFsXbtWlatWkXnzp1xd3cH4JFHHuG9994jNzcXgHHjxpGRkcG3336LwWC4qPUefvhhAKpWrUqVKlX4888/adOmzUXHKyIiIiIicqVU4SUiIiIiInIaV1dXx9cGgwG73X7RxxqNRubMmUNsbCy+vr6MHTuW8ePHnzGuILkEYDKZCiWWsrOz2b179zm3Xwyr1XpGssput2OxWLDZbIX22Wy2Qs8m69SpE926dWPEiBFnHF8gLy+v0D6TyVRovtO/FxERERERuRqU8BIREREREbkIJpOpUGLobLZv306HDh2oWLEiMTExREdHs3nzZgD8/f0dX3/55ZeOY2677TbWrFnjeNbXggULmDBhwjm3X4zatWuzZ88eRzvFnTt38ueff9KgQQOaNm3K4sWLyczMBGD27NnUr1/fUdVWq1YtBg4cyIEDB1i4cKEj9i1btgCwa9cuduzYUWi9pUuXAvDPP/+wd+9e6tevf1FxioiIiIiIFBW1NBQREREREbkILVu25I033iAvL4977733rGOqVq1K27Ztue+++3B3d8fV1dVRKTVixAheeeUVvL29adSoEUFBQQBERkYyZMgQevfuDUBQUBBjx46lVKlSZ91+Mfz9/Zk0aRKjR48mOzsbg8FAbGws5cuXJyIigoSEBO6//35sNhsRERFMnDix0PEuLi689tpr9OzZk4YNG/LEE08wdOhQfv75ZypUqEC9evUKjd+wYQMLFy7EZrPx5ptv4uPjc/EXVkREREREpAgY7JfSn0NERERERETkNJGRkaxZswZ/f/+SDkVERERERG5iqvASERERERG5BB988AHLli07675evXrRqVOnYlt7z549DBo06Kz7ypcvz1tvvVVsa4uIiIiIiFzLVOElIiIiIiIiIiIiIiIi1zVjSQcgIiIiIiIiIiIiIiIiciWU8BIREREREREREREREZHrWrE/w2vcuHEcO3aM1157jWHDhrF+/Xrc3NwA6NevH61atSruEEREREREREREREREROQGVqwJrzVr1vDZZ5/RokULALZs2cKcOXMIDg4uzmVFRERERERERERERETkJlJsCa/jx4/z5ptv0rdvX7Zv305WVhaHDh1i+PDhJCYm0qpVK/r164fReGldFY8dy8BmsxdT1CJyKQICPDlyJL2kwxAREZFionu9iIjIjU33ehERuZ4YjQb8/DzOub/YEl4vvvgigwYNIiEhAYCUlBQaNmzISy+9hJeXFzExMSxatIiuXbte0rw2m10JL5FriN6PIiIiNzbd60VERG5suteLiMiNolgSXp9++imhoaHcfvvtLFmyBIAyZcrw7rvvOsb06NGDpUuXXnLCKyDAs0hjFZErExTkVdIhiIiISDHSvV5EROTGpnu9iIjcKIol4bV8+XKSk5O5++67SU1NJTMzk6eeeopOnTrRpk0bAOx2O2bzpS9/5Ei6/vJE5BoRFORFcnJaSYchIiIixUT3ehERkRub7vUiInI9MRoN5y2KKpaE18yZMx1fL1myhLVr1xIdHU1MTAwNGzbE3d2dTz75hHvvvbc4lhcREREREREREREREZGbSLE9w+u/qlatSp8+fXjwwQexWCy0bt2aDh06XPG8drud9PRUsrLSsdmsRRCpyI3DbHbGzy8Ik+mqvdVFRERERERERERERK46g91uv676A/63peHRo0kYDAa8vHwxmcwYDIYSjE7k2mG328nIOEF2diaBgaHFsoZaH4iIiNzYdK8XERG5seleLyIi15MLtTQ0XsVYikVubja+vgGYzU5KdomcxmAw4OHhjcWSW9KhiIiIiIiIiIiIiIgUq+s+4QV2DIbLO41xczcwbu6GIo5H5NqhJLCIiIiIiIiIiIiI3AxugITXta9Ll44kJBy64nmaNKl30WPT09MZNmzwRc85Y8b7zJjx/nnHFsV5bNiwjn79+lzRHCIiIiIiIiIiIiIiIqdTwusGlZZ2gp07d5R0GCIiIiIiIiIiIiIiIsXOXNIB3GiSkhJ55ZWRZGVlYTQaePrpIY59Bw7s57nnBjJixCuUL1+e2NjRJCcnkZKSTL16DRg6dCQGg4Ho6O5MnDiJwMAgBg8eQO/efalatToA48aNYdu2f/Dx8WXYsBexWPIYMKAvixYtw2g0smHDOubO/Riz2URKSjLDhg0mNnYiX3/9JZ9+Oh+bzU5kZFWeeeZ5XFxcLvn8Zs6czs6dO8jOzmbEiFeoUaMmGzeuZ9q0KeTkZJOWls6AAYNo2rQFK1euYN68jzEajYSFhTFy5GgAjh8/zuDBAzh4MJ6yZSMYPXoczs7O51yzU6c2NG3anK1bt+DvH0j79p1YtGgByclJDB/+EnXq1D1nDGPGjMLFxYVt27aSkZFBdHQv7rqr/SWft4iIiIiIiIiIiIiIXLtuuITXr5sTWL0p4aLGHkhKA7jo53g1qRVK41tCzzvmyy8/p1GjJnTv/gi///4bmzb9BeQnwiZMiGXYsJeoWfMWvv12BZUrV+HVV8eRl5fHww/fz44d26latRqzZs1zzDdx4uRC89epE8Xzz7/A4sULmTRpIrGxEwkLK83GjeupW7c+K1Z8Rbt2HahevSb9+8cQGzuRPXt2s2zZUqZO/RAXFxfee+8d5s+fTXR074s679OVK1eB4cNfYvHiT5g/fzavvjqOxYs/YejQkURElGP9+j+ZNGkiTZu2YPr0qUybNhM/P3/efXcSBw7sAyAx8TDjx79JSEgoMTHRrFu3lkaNmpxzzaNHj9CwYSOGDBlO//4xrFr1I1OmfMDXX3/JwoXzqVOn7jljADh4MJ7335/J0aNH6NWrB/Xr30ZAQOA
"text/plain": [
"<Figure size 2160x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_test(tests[3])"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABsIAAAFHCAYAAAAbXlmtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdZ2BU1fb38e+UZJJAeg8llNARJQFpgViwISAX0atIMBQpD+WCioIIgoCIoggWEKRcqX/1KoKA7QoivSpVeg0hCSEJ6cnMnOdFIJpLRyAYfp83mczZe5+1ZzKZMIu1jskwDAMRERERERERERERERGRUsZc0gGIiIiIiIiIiIiIiIiI3AhKhImIiIiIiIiIiIiIiEippESYiIiIiIiIiIiIiIiIlEpKhImIiIiIiIiIiIiIiEippESYiIiIiIiIiIiIiIiIlEpKhImIiIiIiIiIiIiIiEippESYiIiIiIjIdda1a1dOnz59wWPPPfcc+/fvv+ExTJ8+ncGDB192XI0aNS4a6znbtm1j+PDh1ys0ERERERGRm8Za0gGIiIiIiIiUNqtXr77osWnTpt3ESK6P/fv3k5iYWNJhiIiIiIiIXDUlwkRERERERK5RVlYWQ4YM4ciRI5jNZurUqYPD4QDg2WefZerUqTzzzDPUq1ePPXv28PzzzzN27FgmTpxIdnY2EyZMoEKFCuzbtw+73c7IkSOJiori9OnTDBkyhKNHj+Lj40NgYCDVqlWjX79+F42loKCA0aNHs2bNGvz9/fH398fT0xOAjIwMxowZw969eykoKKBJkya89NJLWK3F/0n4+eefM3/+fJxOJz4+PgwbNgwPDw8mTZpERkYGQ4YMYezYsfz0009MnjyZgoIC3NzcePnll6lfv/6Ne6BFRERERESukVojioiIiIiIXKMffviBrKwsvv76a7744gsAevXqBcC///1vQkNDAahWrRrLli3jgQceKDZ/27ZtdO3alYULF9K+fXsmTJgAwOjRo4mIiGDZsmVMnDiRLVu2XDaWefPmcfjwYZYsWcKMGTNISEgoOvbGG29Qp04dvvzySxYuXEhqaiozZ84sNn/Dhg0sXLiQuXPnsnDhQrp3707fvn0JDQ2lf//+NGjQgLFjx3L48GEmTJjA1KlTWbhwIaNGjaJfv35kZ2df+wMpIiIiIiJyg6giTERERERE5BpFRUUxYcIEYmNjadq0Kc8++yzh4eHnjWvQoMEF54eFhVGrVi0AateuzVdffQXAzz//XHQ7KCiIhx9++LKxrF27ltatW+Pq6oqrqytt2rRhz549AKxYsYLt27cXJetyc3PPm79ixQqOHDnCU089VXTfmTNnSEtLKzZu9erVJCUlERcXV3SfyWTi6NGj1KxZ87JxioiIiIiI3ExKhImIiIiIiFyjChUq8MMPP7B+/XrWrVtHly5deP31188b5+HhccH5bm5uRbdNJhOGYQBgtVqLbgOYzVffzMNisRTddjqdTJw4kapVqwKFCS6TyVRsvNPp5LHHHmPQoEFF3yclJeHt7X3euCZNmvDee+8V3ZeQkEBQUNBVxygiIiIiInKjqTWiiIiIiIjINZo3bx5DhgwhOjqaQYMGER0dza5du7BYLNjt9mteNyYmpqh6KzU1lR9//PG8xNX/at68OQsXLiQvL4+8vDyWLl1adCw6OppZs2ZhGAb5+fn07t2bOXPmFJsfHR3NkiVLSEpKAmD+/Pk8++yzAMX206RJE1avXs2BAweAwuq1tm3bXrDKTEREREREpKSpIkxEREREROQatWvXjg0bNtCqVSvc3d0JDQ0lNjaWgwcPEhsby/vvv39N6w4ZMoRXX32VNm3a4OPjQ1hYWLHqsQt56qmnOHr0KK1bt8bHx6dYi8ahQ4cyZswY2rRpQ0FBAU2bNqV79+7F5kdHR/Pcc8/RtWtXTCYTZcuW5YMPPsBkMnHXXXfx4Ycf0rdvXz744ANef/11nn/+eQzDwGq1MnnyZMqUKXNNexUREREREbmRTMaf+22IiIiIiIhIiZs7dy61a9emfv365Ofn07FjR/r160dMTExJhyYiIiIiIvK3ooowERERERGRW0xERASjRo3C6XRSUFDAww8/TExMDB07diQrK+uCc+bOnUvZsmVvcqQiIiIiIiK3NlWEiYiIiIiIiIiIiIiISKlkLukARERERERERERERERERG4EJcJERERERERERERERESkVFIiTEREREREREREREREREolJcJERERERERERERERESkVLKWdADXS2pqFk6nUdJhiAjg71+WlJTMkg5DREREbhC914uIiJRueq8XEZG/E7PZhK9vmYseLzWJMKfTUCJM5Bai16OIiEjppvd6ERGR0k3v9SIiUlqoNaKIiIiIiIiIiIiIiIiUSkqEiYiIiIiIiIiIiIiISKmkRJiIiIiIiIiIiIiIiIiUSqXmGmEX4nDYSU1Nxm7PL+lQRP42rFZXfH0DsVhK9a8HEREREREREREREbkNlOpPulNTk3Fz86BMmRBMJlNJhyNyyzMMg6ysM6SmJhMQEFrS4YiIiIiIiIiIiIiI/CWlujWi3Z5PmTJeSoKJXCGTyUSZMl6qohQRERERERERERGRUqFUJ8KAa0qCjZu7hXFzt9yAaERufUoci4iIiIiIiIiIiEhpUeoTYbey6dM/5rfftp53f0LCCTp0aFMCEZ1vzJgRLF26+LqvO336x0yf/vF1X1dEREREREREREREROQcJcJK0Natm3E4HCUdhoiIiIiIiIiIiIiISKlkLekAbhdJSYm8/vowcnJyMJtNNG3anD17djNu3GjeeGM8DoedN98cBUBERPWieatW/cyqVSsZPHgYv/++i08+mcL48ZNYunQxW7duZujQEQD07duDrl17ADB79kzc3Nw4fPgQVatG8NprY3BxcWHJkkUsWDAHk8lEjRq1GDjwJTw8PGjduiU1atQmJeUUn3zyKZMnT2L16lUEBATgdDqpXz8KgGXLvuHzz+fjdBrUqFGT559/GZvNdt78+fPnsHz5DzgcTho1akzv3v0xmUzMm/cpixZ9hbe3D56entSqVeeSj1mHDm1o2fIhNm5cj8ViIS6uOwsWzOH48WP06TOA++9/gIMH9zNhwtvk5OSQmnqa2Ng42rXrwPTpH5OYeJLDhw+Rnp7GY4+1p2PHzjfgmRURERERERERERERkVvVbZMIW709gVXbEq5o7NGkDIArvk5YdL1Qmt0Reskx33zzNU2bRtOxY2fWrVvDwYMHqFGjFl279qBq1Qg6d/4n/foNpGHDxsya9QlbtmwqXDs6hujoGABq1qzN+PGTLhvPjh3bmDv3CwICAunZM47169cSGhrGp5/OYOrUWXh7+/DOO+OYOXMaffr8i7S0NJ55pjORkQ1YvvxH9u7dw5w5n5GRkUFc3FMAHDx4gMWLFzJ58gxsNhtTpnzA/PmziYvrXmz+unVr2LNnN9OmfYrJZGLUqOF8//0ywsMrsWTJImbMmIvJZKJXry6XTYQB+Pn5M336bN54YyRz5sxi0qQpbN/+G5MmvcP99z/A4sVf8+yz3WjQ4G7i448TF9eRdu06ALBnz24mT56B0+mkW7dOREXdTY0aNS97ThERERERERERERGRSzmXP3j5mcgSjkQu57ZJhJW0Bg3uZujQl9i7dw9Nm0bz+ONPsmbNLwCkpaVx6tQpGjZsDMAjj7Tmm2++vuZzVa5claCgYADCwyuTkXGGxMQEmjVrjre3DwBt2/6DsWNHFs2pU6cuUNiuMSbmXqxWK76+vjRu3Ozs/Zs4fvwYPXt2AcBuL6B69Zrnzd+0aQO7du2gW7dYAPLycgkODiElJYXGjZvh4eEBwL33tryitpCNGzcFIDg4hICAQKxWKyEhoWRkFCYr+/YdwPr1a5k9eyYHDuwnJye7aG7Llg8VnS86ugWbN29UIkxERERERERERERE/pK0zDxOZ+RiGIVFOD6eNnzL2vD1tOFu++tpFyXZrq/bJhHW7I7LV22dcyN+yOrVu4s5cz5jzZpV/Pe/37N06eKiYyY
"text/plain": [
"<Figure size 2160x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABsIAAAFHCAYAAAAbXlmtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzde2DOdf/H8ee185gdbGMOc54thM3IYehWpDnkdisSEUIaqRs5FklSK+lAzjrQSXcih3AXQoWZnJkNm212wM52uq7r98d+drcMI5exvR5/zfX9HF7f77W5am+fz8dgNpvNiIiIiIiIiIiIiIiIiJQxVqUdQERERERERERERERERMQSVAgTERERERERERERERGRMkmFMBERERERERERERERESmTVAgTERERERERERERERGRMkmFMBERERERERERERERESmTVAgTERERERERERERERGRMkmFMBERERERkdtsyJAhXLx4sdhrzz77LKdOnbJ4hqVLlzJx4sQbtvP19b1m1isOHjzIK6+8cruiiYiIiIiI3DE2pR1ARERERESkrNm1a9c1ry1evPgOJrk9Tp06RUJCQmnHEBERERERuWkqhImIiIiIiNyizMxMJk2axNmzZ7GysqJx48YYjUYABg0axKJFi3jqqado2rQpJ06c4KWXXmL27NnMmzePrKws5s6di7e3NxEREeTn5zNjxgxatGjBxYsXmTRpEtHR0bi6uuLp6YmPjw+jR4++Zpa8vDxef/11du/ejbu7O+7u7lSqVAmA9PR0Zs2axcmTJ8nLy6NNmzZMmDABG5ui/0v4zTff8MUXX2AymXB1dWXatGlUqFCB999/n/T0dCZNmsTs2bP56aefWLBgAXl5eTg4OPDyyy/j7+9vuQctIiIiIiJyi7Q1ooiIiIiIyC3asmULmZmZfP/996xevRqAkSNHAvDJJ59QrVo1AHx8fNi4cSOdO3cu0v/gwYMMGTKENWvW0Lt3b+bOnQvA66+/ToMGDdi4cSPz5s1j//79N8yyatUqzpw5w/r161m2bBnx8fGF19544w0aN27Mf/7zH9asWcOlS5dYvnx5kf579uxhzZo1rFy5kjVr1jBs2DBCQkKoVq0aY8aMITAwkNmzZ3PmzBnmzp3LokWLWLNmDTNnzmT06NFkZWXd+oMUERERERGxEK0IExERERERuUUtWrRg7ty5DBw4kLZt2zJo0CBq1659VbvAwMBi+1evXp377rsPgEaNGvHdd98BsH379sKvq1SpQteuXW+Y5ddff6V79+7Y2dlhZ2dHjx49OHHiBADbtm3j0KFDhcW67Ozsq/pv27aNs2fP0q9fv8LX0tLSSElJKdJu165dJCYmMnjw4MLXDAYD0dHR+Pn53TCniIiIiIjInaRCmIiIiIiIyC3y9vZmy5Yt/P777/z2228888wzvPbaa1e1q1ChQrH9HRwcCr82GAyYzWYAbGxsCr8GsLK6+c08rK2tC782mUzMmzeP+vXrAwUFLoPBUKS9yWTiscceY/z48YV/TkxMxMXF5ap2bdq04b333it8LT4+nipVqtx0RhEREREREUvT1ogiIiIiIiK3aNWqVUyaNImgoCDGjx9PUFAQR48exdramvz8/Fset2PHjoWrty5dusTWrVuvKlz9Vfv27VmzZg05OTnk5OSwYcOGwmtBQUGsWLECs9lMbm4uzz33HJ9//nmR/kFBQaxfv57ExEQAvvjiCwYNGgRQ5H7atGnDrl27iIyMBApWr/Xs2bPYVWYiIiIiIiKlTSvCREREREREblGvXr3Ys2cPwcHBODo6Uq1aNQYOHEhUVBQDBw7kgw8+uKVxJ02axNSpU+nRoweurq5Ur169yOqx4vTr14/o6Gi6d++Oq6trkS0ap0yZwqxZs+jRowd5eXm0bduWYcOGFekfFBTEs88+y5AhQzAYDDg5OfHhhx9iMBho3rw5H330ESEhIXz44Ye89tprvPTSS5jNZmxsbFiwYAEVK1a8pXsVERERERGxJIP5z/ttiIiIiIiISKlbuXIljRo1wt/fn9zcXPr378/o0aPp2LFjaUcTERERERG5p2hFmIiIiIiIyF2mQYMGzJw5E5PJRF5eHl27dqVjx47079+fzMzMYvusXLkSJyenO5xURERERETk7qYVYSIiIiIiIiIiIiIiIlImWXRF2IcffsjGjRuBgsOeJ0yYwKRJkwgLC8PR0RGAkJAQOnfuzLFjx5gyZQqZmZkEBgYyY8YMbGy0YE1ERERERERERERERERujcUqTbt372bnzp189913GAwGhg0bxpYtWzh8+DCff/45VapUKdJ+/PjxvP766zRv3pzJkyfz9ddf079/f0vFExERERERERERERERkTLOylIDe3p6MnHiROzs7LC1taV+/frExcURFxfH5MmT6dGjB++//z4mk4nY2Fiys7Np3rw5AL1792bTpk2WiiYiIiIiIiIiIiIiIiLlgMVWhPn4+BR+febMGTZu3MjKlSvZs2cPr776KpUqVWLEiBGsXr0aHx8fPD09C9t7enqSkJBgqWgiIiIiIiIiIiIiIiJSDlhsRdgVERERDBkyhAkTJlCvXj0++ugjqlSpgqOjIwMHDmT79u2YTCYMBkNhH7PZXOTPIiIiIiIiIiIiIiIiIjfLYivCAMLCwhgzZgyTJ0+mW7dunDhxgjNnzvDII48ABQUvGxsbvLy8SEpKKuyXnJx81RliN3LhQgYmk/m25heRW+PpWYmkpPTSjiEiIiIWos96ERGRsk2f9SIici+xsjLg7u507euWmjg+Pp7nn3+e0NBQunXrBhQUvt544w1SU1PJy8vjq6++onPnztSoUQN7e3vCwsIA+P777+nQoYOloomIiIiIiIiIiIiIiEg5YLEVYUuXLiUnJ4c333yz8LV+/foxfPhwnnzySfLz8+nSpQvdu3cHIDQ0lKlTp5KRkUHjxo15+umnLRVNREREREREREREREREygGD2WwuE/sJamtEkbuHtlAQEREp2/RZLyIiUrbps15ERO4lN9oa0aJnhJU2ozGfS5eSyM/PLe0oIvccGxs73Nw8sbYu039NiIiIiIiIiIiIiEgZVqZ/w33pUhIODhWoWNELg8FQ2nFE7hlms5nMzDQuXUrCw6NaaccREREREREREREREbklVqUdwJLy83OpWNFZRTCRm2QwGKhY0VmrKUVERERERERERETknlamC2HALRXB5qzcz5yV+y2QRuTeoQKyiIiIiIiIiIiIiNzrynwh7F6zYcM6Zs2aftXryclJjBs35raO+XdZatxb0adPD+Lj4277uCEhw9m/f9912yxdupDevbvx5ZefExQUeN22cXGxzJ792u2MKCIiIiIiIiIiIiIi16BC2D3Cw8OT0ND3SzuGFGPTpg289958+vUbcMO258/HExt77g6kEhERERERERERERERm9IOUJ7s37+PBQvex2g0Ub16DWxtbTl16iRWVlb06zeARx/tDsC5czE8//yzpKWl0rZte0aODOH8+XhGjx7B6tUFq7AqVnTixIljJCcnMXjwMLp163nduc+diyEkZDgJCQkEBrbk5ZenAvDpp8vYvHkjVlZWtGzZmlGjxmBtbc369Wv58svPMRgM+Prex4svTqBChQps2rSeTz5ZSsWKTnh5eeHoWAGAJUs+xsPDg169+rBmzWqSk5MZNmwks2ZNx9+/BcHBPQAICgpk5859LF26kOTkJGJioklIOE/37o8xaNBQTCYT77//Dvv27cVggEceCWbAgMFFnl29evUZM+YlXnttGomJCdSpU4/c3IKzrIxGI/PnzyM8PAyj0URwcHf69n3qqv4vvfQy7747h6ioSEwmE0899TSdO3clNzeXOXNmcvz4Mby8qpOamnLd5/r222+QlJTA5MnjePXV1wtfT0pKZPbsmWRkpJOcnERwcA+GDRvJvHmhxMXF8s47c/j3v18udsz4+DgmTRpH7dq1OX06ioYN/WjSpCkbN/5Aenoab7wRSp06dfnpp618+eXn5OTkkJeXy6RJr3D//c0ICRmOj48
"text/plain": [
"<Figure size 2160x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABsIAAAFHCAYAAAAbXlmtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd2CNZ//H8fcZGYhRSTTEKGLviFENWp12i5ZaVRT91eiIVmpXSatapepBrdas0lJUlba0Ro1E7RFBEgQJCdnjnPP7wyNtHgkRkkPyef11cu5rfO775PR+nnxd122w2Ww2RERERERERERERERERPIZo70DiIiIiIiIiIiIiIiIiOQGFcJEREREREREREREREQkX1IhTERERERERERERERERPIlFcJEREREREREREREREQkX1IhTERERERERERERERERPIlFcJEREREREREREREREQkX1IhTERERERE5B7r27cvV65cyfTYa6+9xsmTJ3M9w7x58xgxYsRt21WrVi3LrDccOHCAMWPG3KtoIiIiIiIiecZs7wAiIiIiIiL5zfbt27M89tVXX+Vhknvj5MmTXLx40d4xRERERERE7pgKYSIiIiIiIjkUHx+Pv78/oaGhGI1GatWqhcViAeCVV15hzpw59OjRg7p163L8+HHefvttAgICmDZtGgkJCUydOpVy5coRHBxMWloa48ePp2HDhly5cgV/f3/CwsIoUaIE7u7uVKlShSFDhmSZJTU1lQ8//JAdO3bg6uqKq6srRYsWBSA2NpaJEydy4sQJUlNTefTRR3n33XcxmzP+X8LvvvuOZcuWYbVaKVGiBKNHj6Zw4cJMnz6d2NhY/P39CQgI4LfffuM///kPqampODs7895779GgQYPcu9AiIiIiIiI5pK0RRUREREREcmjTpk3Ex8ezZs0aVq5cCcCgQYMA+PrrryldujQAVapUYcOGDTz99NMZ+h84cIC+ffuyevVqOnXqxNSpUwH48MMP8fLyYsOGDUybNo2goKDbZlm6dClnzpxh/fr1zJ8/n4iIiPRjkyZNolatWnz//fesXr2a6OhoFixYkKH/7t27Wb16NUuWLGH16tX079+fwYMHU7p0aYYOHYqPjw8BAQGcOXOGqVOnMmfOHFavXs2ECRMYMmQICQkJOb+QIiIiIiIiuUQrwkRERERERHKoYcOGTJ06lV69etGsWTNeeeUVKlSocFM7Hx+fTPuXKVOGGjVqAFCzZk1++OEHALZu3Zr+ulSpUjz33HO3zbJz507atWuHo6Mjjo6OtG/fnuPHjwOwZcsWDh48mF6sS0pKuqn/li1bCA0NpVu3bunvXbt2jZiYmAzttm/fzqVLl+jTp0/6ewaDgbCwMKpXr37bnCIiIiIiInlJhTAREREREZEcKleuHJs2bWLXrl389ddfvPrqq3zwwQc3tStcuHCm/Z2dndNfGwwGbDYbAGazOf01gNF455t5mEym9NdWq5Vp06ZRuXJl4HqBy2AwZGhvtVrp2LEjw4cPT//50qVLFC9e/KZ2jz76KJ9//nn6exEREZQqVeqOM4qIiIiIiOQ2bY0oIiIiIiKSQ0uXLsXf3x9fX1+GDx+Or68vR44cwWQykZaWluNxW7Zsmb56Kzo6ms2bN99UuPpfzZs3Z/Xq1SQnJ5OcnMxPP/2UfszX15eFCxdis9lISUnh9ddfZ/HixRn6+/r6sn79ei5dugTAsmXLeOWVVwAynM+jjz7K9u3bCQkJAa6vXuvQoUOmq8xERERERETsTSvCREREREREcuj5559n9+7dtGnThkKFClG6dGl69erFqVOn6NWrF1988UWOxvX392fUqFG0b9+eEiVKUKZMmQyrxzLTrVs3wsLCaNeuHSVKlMiwRePIkSOZOHEi7du3JzU1lWbNmtG/f/8M/X19fXnttdfo27cvBoMBFxcXZsyYgcFgoH79+nz55ZcMHjyYGTNm8MEHH/D2229js9kwm8385z//oUiRIjk6VxERERERkdxksP17vw0RERERERGxuyVLllCzZk0aNGhASkoK3bt3Z8iQIbRs2dLe0URERERERB4oWhEmIiIiIiJyn/Hy8mLChAlYrVZSU1N57rnnaNmyJd27dyc+Pj7TPkuWLMHFxSWPk4qIiIiIiNzftCJMRERERERERERERERE8iWjvQOIiIiIiIiIiIiIiIiI5AYVwkRERERERERERERERCRfUiFMRERERERERERERERE8iUVwkRERERERERERERERCRfMts7wL0SHR2P1WqzdwwRAVxdXbh8Oc7eMURERCSX6F4vIiKSv+leLyIiDxKj0cBDDxXJ8ni+KYRZrTYVwkTuI/o+ioiI5G+614uIiORvuteLiEh+oa0RRUREREREREREREREJF9SIUxERERERERERERERETyJRXCREREREREREREREREJF/KN88Iy4zFkkZ0dCRpaSn2jiKS58xmRx56yB2TKV9/zUVEREREREREREREspSv/0IeHR2Js3NhihTxwGAw2DuOSJ6x2WzEx18jOjoSN7fS9o4jIiIiIiIiIiIiImIX+XprxLS0FIoUKaYimBQ4BoOBIkWKaTWkiIiIiIiIiIiIiBRo+boQBuSoCPbxkiA+XhKUC2lE8o4KwCIiIiIiIiIiIiJS0OX7Qtj9LiLiPF26tLd3jFzz7/ObOHEcP/209pbtfX19bnncYrHw9tuDefnlTgQF7WXw4AG3bL99+58sX774lm1++mktEyeOu2Wb7Bg8eABBQXvvehwREREREREREREREbk3VAiTB0pkZCQhISdZtuz7bLU/duwI8fHxuZxKRERERERERERERETuR2Z7ByhIgoL28vXX8zCZzEREnKNmzVq88ko/kpOTGTvWn1OnQihatBgBAVMoXrwEHTo8S/PmLTly5BAlS7rRtm0HVq5cTmTkJd5/fywNGjRk375A5syZSXJyErGxcQwd+hbNmz/OxInjcHJy4ujR64WgPn368dxzbTl27Ahz585iypTpREVF4uc3jIULl2aa7b33RuPo6Mjs2V8SGLiHa9eu4ebmxgcfBFCypCvt2j1FtWo1uXw5irlzv+HTTz/i1KkQrly5gpeXF+PGTczyWmzYsI7vvluG1WqjWrXqvP32ezg5Od32Gr733ptcvRpDv369eOONYenvZ3YdypYtz5o11wtmHh6ladu2Q5bjnj0bzuDBA7h48SI+Po14771RpKWlZXpOaWlpjBs3ksuXLwPQt+9r+Pq2BGD9+jXMmDGV2Ng4hg17B1/fFlnOOW/ebC5evEB4eBgxMdH07t2XwMA9HDlyCC+vqowfPwmLxZJphitXrjBixNuUL/8Ip0+fwsPDgzFjJlCsWPHbXkMRERERERERERERkYKiwBTCth+MYNuBiGy1DbsUC5Dt54T51i3NY3VKZ6vtwYMHWLhwCeXKVWD06BHs2LGNmJhounbtQc2atRk16l02b/6Fzp1f4sqVyzRt2ozhw99nyJCB/PHH78ycOZcNG9axYsUyGjRoyKpV3zJixGgqVHiEwMA9TJs2hebNHwfg3LmzzJ69gCtXLtOvXy8aNWpC9eo1mTJlOgBubu4sXLg0y2zff78CX9+WhIWdYdas+RiNRiZMGMPGjRt4+eWexMTE0KNHb7y9ffj77yDMZgdmz16A1Wpl6NBB7Ny5nWrVatx0DU6dCmHt2tX85z/zcXJyYtasGSxbtog+ffrf9vp99NFnDBkykHnzFmXYhjCz6/DNN9/SsWMngFsWwQAuXrzAwoVLcXYuRNeuz3PqVAjXrl3N9JwSExPx8CjDJ59MIzj4OL/88nN6IaxIERfmz1/C9u1/smDBV7cshN24FrNmzefgwf0MG/Y6X3+9nHLlytOz54ucPBlMfHxcltc1JOQkw4b54e3twxdfTGX+/Dm8+ebw215DEREREREREREREbl/3ahNvNfD285J8ocCUwi7X9Sv34Dy5R8B4Lnn2vDjjz/g5uZOzZq1AahYsTJXr8akt2/a9DHg+oqmunXrA/Dwwx7Exl4DYPToCezY8Se
"text/plain": [
"<Figure size 2160x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plot_test(tests[4])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"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.8.2"
}
},
"nbformat": 4,
"nbformat_minor": 4
}