benchmark-results/last_attempt.ipynb

902 lines
4.3 MiB
Plaintext
Raw Normal View History

2020-04-20 11:37:08 +00:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 71,
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd\n",
"from pandas import DataFrame, Series\n",
"from numpy import nan\n",
"import matplotlib.pyplot as plt\n",
"import statsmodels.api as sm\n",
"import statsmodels.formula.api as smf\n",
"import numpy as np\n",
"plt.rcParams[\"figure.figsize\"] = (24,5)\n",
"import seaborn as sns\n",
"sns.set()\n",
"sns.set(font_scale=1.75)\n"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"cols = [\n",
" \"TEST\",\"MAP\",\"SIZE\", \"TIME\"\n",
"]\n",
"onmodded = pd.read_csv(\"new_repr.csv\", quotechar=\"'\", header=None)\n",
"\n",
"onmodded = onmodded.drop([0],1)\n",
"onmodded.columns= cols\n",
"onmodded = onmodded.drop([0],0)\n",
"onmodded.iloc[:,2:] = onmodded.iloc[:,2:].astype(\"int32\")\n",
"\n",
"\n",
"styles = {'absl::flat_hash_map': [\"#0000cc\"], # blue\n",
" \"absl::node_hash_map'\": [\"#3366ff\"],\n",
" 'absl::node_hash_map': [\"#99ccff\"],\n",
"\n",
" 'google::dense_hash_map': [\"#ff0000\"], # reds\n",
" 'google::sparse_hash_map': [\"#ff6666\"],\n",
" 'phmap::parallel_flat_hash_map': [\"#ff0066\"],\n",
"\n",
" 'ska::bytell_hash_map': [\"#009933\"], # greens\n",
" 'ska::flat_hash_map': [\"#33cc33\"],\n",
" 'ska::unordered_map': [\"#99ff66\"],\n",
"\n",
" 'tsl::hopscotch_map': [\"#9900cc\"], # purples\n",
" 'tsl::robin_map': [\"#cc33ff\"],\n",
" 'tsl::sparse_map': [\"#cc99ff\"],\n",
"\n",
" 'robin_hood::unordered_flat_map': [\"#ffcc99\"],\n",
" 'robin_hood::unordered_node_map': [\"#ccff66\"],\n",
"\n",
" 'boost::unordered::unordered_map': [\"#663300\"], # brown\n",
"\n",
" 'emilib::HashMap': [\"#9900cc\"], # purple\n",
"\n",
" # weird orange\n",
" 'phmap::parallel_node_hash_map': [\"#ffcc66\", \"solid\"],\n",
"\n",
" 'std::unordered_map': [\"#000000\", \"solid\"], # black\n",
" }\n",
"ticks = [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",
"ticklabels = ['50 K', '100 K',\n",
" '150 K', '200 K', '250 K', '300 K',\n",
" '350 K', '400 K', '0.5 M', '0.6 M',\n",
" '0.7 M', '0.8 M', '0.9 M', '1 M',\n",
" '2 M', '3 M', '4 M', '5 M',\n",
" '6 M', '7 M', '8 M', '9 M',\n",
" '10 M', '15 M', '20 M', '25 M',\n",
" '30 M', '35 M', '40 M', '45 M', '50 M']\n",
"labels = {\n",
" 'int_delete' : [\"mean int deletion time\", \"deletion time (ns)\"],\n",
" 'int_insert' : [\"mean int insertion time\", \"insertion time(ns)\"],\n",
" 'int_nosucc_lookup' : [\"mean int unsucessful lookup time\", \"unsucessful lookup time (ns)\"],\n",
" 'int_succ_lookup' : [\"mean int succesful lookup time\", \"succesful lookup time (ns)\"],\n",
" 'string_delete' : [\"mean string deletion time\", \"deletion time (ns)\"],\n",
" 'string_insert' : [\"mean string insertion time\", \"insertion time(ns)\"], \n",
" 'string_nosucc_lookup' : [\"mean string unsucessful lookup time\", \"unsucessful lookup time (ns)\"],\n",
" 'string_succ_lookup' : [\"mean string succesful lookup time\", \"succesful lookup time (ns)\"]\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"scrolled": true
},
"outputs": [],
"source": [
"# outlier testing functions\n",
"def remove_with_modified_z_score(data, treshold=3.5):\n",
" # https://www.itl.nist.gov/div898/handbook/eda/section3/eda35h.htm\n",
" data = data.astype(int)\n",
" 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",
"#function that takes one of the outlier testers and data, and removes outliers\n",
"def remove_outlier(data, function):\n",
" new_data = data.copy(True)\n",
" new_data[\"TIME\"] = new_data[\"TIME\"].astype(int)\n",
" new_data[\"SIZE\"] = new_data[\"SIZE\"].astype(int)\n",
" new_data\n",
" for i in range(4216):\n",
" start = i * 30\n",
" end = start+30\n",
" new_data.loc[start:end, \"TIME\"] = function(data.loc[start:end, \"TIME\"])\n",
" if not i % 420:\n",
" print(i / 42 , \"% done\")\n",
" return new_data\n",
"\n",
"\n",
"# helpers for plot functions\n",
"def sort_maps(test):\n",
" maps = data[data[\"TEST\"]== test][\"MAP\"].unique()\n",
" new = [(groups_max.loc[test, i][\"TIME\"], i) for i in maps]\n",
" new.sort()\n",
" new = [i[1] for i in new]\n",
" return new\n",
"\n",
"def divider(df, maplist):\n",
" filters = df['MAP'].isin(maplist)\n",
" return df[filters]\n",
"\n",
"\n",
"def plotter(test, groups):\n",
" maps = sort_maps(test)\n",
" plot_now = [5,11,16]\n",
"# plot_now = [2,5,8,11,14,16]\n",
"\n",
" for mp in range(0,17):\n",
" map_data = groups.get_group(('int_insert', maps[mp])) \n",
" sns.lineplot(x=\"SIZE\", y=\"TIME\", data=map_data, err_style=\"bars\", color=styles[maps[mp]][0], label=maps[mp], linestyle=\"--\")\n",
"# sns.regplot(x=map_data[\"SIZE\"], y=map_data[\"TIME\"], color=styles[maps[mp]][0], label=maps[mp])\n",
" if mp in plot_now:\n",
" plt.xscale(\"log\")\n",
" plt.xticks(ticks, ticklabels)\n",
" plt.set_xticklabels(rotation=45)\n",
" plt.ylabel(labels[test][1])\n",
" plt.legend()\n",
" plt.title(labels[test][0])\n",
" plt.show()\n",
"\n",
"def plotter2(test, data):\n",
" mydata = data[data[\"TEST\"] == test]\n",
" maps = sort_maps(test)\n",
" set1 = divider(mydata, maps[:5])\n",
" set2 = divider(mydata, maps[5:11])\n",
" set3 = divider(mydata, maps[11:])\n",
" \n",
" plot = sns.lineplot(x=\"SIZE\", y=\"TIME\", hue=\"MAP\", data=set1)\n",
" plt.xscale(\"log\")\n",
" plt.xticks(ticks, ticklabels)\n",
" plot.set_xticklabels(\n",
" plot.get_xticklabels(), \n",
" rotation=55, \n",
" horizontalalignment='center',\n",
" fontweight='light',\n",
" )\n",
" plt.ylabel(labels[test][1])\n",
" plt.legend()\n",
" plt.title(labels[test][0])\n",
" plt.show()\n",
" \n",
" plot = sns.lineplot(x=\"SIZE\", y=\"TIME\", hue=\"MAP\", data=set2)\n",
" plt.xscale(\"log\")\n",
" plt.xticks(ticks, ticklabels)\n",
" plot.set_xticklabels(\n",
" plot.get_xticklabels(), \n",
" rotation=55, \n",
" horizontalalignment='center',\n",
" fontweight='light',\n",
" )\n",
" plt.ylabel(labels[test][1])\n",
" plt.legend()\n",
" plt.title(labels[test][0])\n",
" plt.show()\n",
" \n",
" plot = sns.lineplot(x=\"SIZE\", y=\"TIME\", hue=\"MAP\", data=set3)\n",
" plt.xscale(\"log\")\n",
" plt.xticks(ticks, ticklabels)\n",
" plot.set_xticklabels(\n",
" plot.get_xticklabels(), \n",
" rotation=55, \n",
" horizontalalignment='center',\n",
" fontweight='light',\n",
" )\n",
" plt.ylabel(labels[test][1])\n",
" plt.legend()\n",
" plt.title(labels[test][0])\n",
" plt.show()\n",
"\n",
" \n",
"def plotter3(test, groups):\n",
" maps = sort_maps(test)\n",
" plot_now = [5,11,16]\n",
"# plot_now = [2,5,8,11,14,16]\n",
"\n",
" for mp in range(0,17):\n",
" map_data = groups.get_group(('int_insert', maps[mp])) \n",
"# sns.lineplot(x=\"SIZE\", y=\"TIME\", data=map_data, err_style=\"band\", color=styles[maps[mp]][0], label=maps[mp], linestyle=\"--\")\n",
" sns.regplot(x=map_data[\"SIZE\"], y=map_data[\"TIME\"], color=styles[maps[mp]][0], label=maps[mp])\n",
" if mp in plot_now:\n",
" plt.xscale(\"log\")\n",
" plt.xticks(ticks, ticklabels)\n",
" plt.ylabel(labels[test][1])\n",
" plt.legend()\n",
" plt.set_xticklabels(rotation=45)\n",
" plt.title(labels[test][0])\n",
" plt.show()\n"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0.0 % done\n",
"10.0 % done\n",
"20.0 % done\n",
"30.0 % done\n",
"40.0 % done\n",
"50.0 % done\n",
"60.0 % done\n",
"70.0 % done\n",
"80.0 % done\n",
"90.0 % done\n",
"100.0 % done\n"
]
}
],
"source": [
"data = remove_outlier(onmodded, remove_with_modified_z_score)\n",
"groups = data.groupby([\"TEST\", \"MAP\"])\n",
"gr_max = groups.max()\n",
"gr_mean = groups.mean()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [],
"source": [
"tests = data[\"TEST\"].unique()\n",
"# for i in tests:\n",
"# plotter2(i, data)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"scrolled": false
},
"outputs": [],
"source": [
"# for i in tests:\n",
"# plotter(i, groups)\n"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"# for i in tests:\n",
"# plotter3(i, groups)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABX8AAAGHCAYAAADoXCGRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3xUVfrH8c/MZNJ7I0DomtCLghFBOqIiAoKIIouAoALK2lZd10VFse1PbLurrgVsNEEFpYgERJqKVJUiCYEQCCUhCQlpk7m/P2JGxhSSkGRC8n2/Xr5kzj33nOfcOyTkyZ3nmAzDMBARERERERERERGROsXs6gBEREREREREREREpOop+SsiIiIiIiIiIiJSByn5KyIiIiIiIiIiIlIHKfkrIiIiIiIiIiIiUgcp+SsiIiIiIiIiIiJSByn5KyIiIiIiIiIiIlIHKfkrIiIiIheNI0eOEB0dza233npB4xw6dIjPP//8gsaw2WxER0fTr1+/So/x6KOPEh0dzaZNmyo9Rl5eHm+99ZZT2+uvv050dDSLFi2q9LhVJTMzk/fff9+prSrWLSIiIiLnp+SviIiIiFw0/P39mTZtGiNGjKj0GL/88guDBw9my5YtVRiZ64wePZqXX37Zqe2KK65g2rRptG3b1kVRFbLb7VxzzTV8+OGHTu0DBgxg2rRpNGnSxEWRiYiIiNQPbq4OQERERESkvPz9/bn33nsvaIz09HTy8/OrKCLXO3XqVLG2mJgYYmJiXBCNM7vdTkpKCo0bN3ZqHzBgAAMGDHBRVCIiIiL1h578FREREREREREREamDlPwVERERqQOKaqgePXqUf/3rX/Tp04cOHTowePBgR23bH374gTFjxtC5c2d69+7NU089RWZmZrGxdu3axdSpU4mJiaF9+/YMGjSIV155haysrGJ9T506xYsvvsgNN9xAly5daN++Pf369eMf//gHycnJTn3Hjh1Lly5dSE9PZ+bMmfTq1csx/ptvvklBQcF511lSzd8lS5YQHR3NypUrWbJkCcOGDaNjx47ExMTw4IMPkpiY6HSdxo8fD8Bnn31GdHQ0S5YsOe+8P/74IxMnTqRbt25cfvnl3HfffRw9erTU/hs2bGDChAl069aNjh07MmTIEN59991yP3F8/PhxZsyYQZ8+fWjfvj09e/bkscce48iRI44+33//PdHR0Rw/fhyA6Ohoxo4dC5Re8zcjI4OXXnqJQYMG0b59e7p168bEiRPZsGFDsRiio6O56667OHDgAFOnTqVbt2506tSJUaNGsWrVqvOuYcmSJbRr1w6ApKQkoqOjefTRR4GSa/7269ePG264gaSkJB588EFiYmLo0qULY8aMYdeuXQAsWLCAwYMH07FjRwYNGsTcuXMxDKPY3F9++SW33norXbp0oXPnzowcObJW1D8WERERqWkq+yAiIiJSh0ybNo2TJ08yaNAgsrOz+eKLL3jkkUfYv38/H3zwAb169eK2224jNjaWTz75hJycHJ577jnH+cuXL+fhhx/GarUycOBAGjRowLZt2/jvf//L2rVr+fjjj/H19QXg5MmTjBgxglOnTtG7d2/69OlDVlYWGzduZNGiRWzevJnly5fj4eHhGN9mszF27FjS0tLo27cvFouFL7/8ktmzZ5Odnc39999f6bW/++67/Prrr/Tv358ePXqwefNmvvzyS7Zv386qVauwWq0MGDAAu93OF198QevWrRkwYABt2rQpc9yVK1fy4IMP4ubmxsCBA/H392fdunWMGTOmxP7vvfceL7zwAoGBgQwcOJDAwEA2btzIiy++yKZNm3jrrbdwcyv9n+FxcXGMHTuW1NRUevXqxeDBgzly5AhffPEFsbGxzJkzhzZt2tC4cWOmTZvG+++/T1ZWFtOmTStWXuFcycnJ3HbbbSQlJdGuXTtuu+02UlJSiI2NZcOGDTz00ENMmjTJ6ZxDhw5xyy230KxZM0aMGMHJkydZsWIF9913H++++y49e/Ysdb42bdowZcoU/vOf/+Dn58e4cePOe63T0tK45ZZbCAsLY8SIEcTFxbFu3TomTJjAkCFD+Pzzz7nuuuvo3r07S5cuZdasWQQEBDBs2DDHGM888wwffvghDRs2ZMiQIXh5ebF27Vr+8Y9/sH37dmbNmlVmDCIiIiJ1iiEiIiIiF71HHnnEiIqKMvr27WukpqY62ufMmWNERUUZUVFRxqJFixztGRkZRpcuXYx27doZBQUFhmEYxsmTJ41OnToZV111lXH48GGn8V9//XUjKirKePLJJx1tzzzzjBEVFWXMnz/fqa/NZjNuuukmIyoqyvjuu+8c7bfffrsRFRVljBo1ysjMzHS0//bbb0abNm2MK664wrDZbGWuMzEx0YiKijJGjx7taFu8eLERFRVltGvXzti+fbtTHLfeeqsRFRVlfP311472jRs3GlFRUcYjjzxS5lyGYRiZmZnGlVdeaXTu3Nn49ddfHe1nzpwxxowZ47jmRfbs2WO0bt3auP76642UlBRHu91uNx577DEjKirK+N///udoL7pvGzdudLQNHz7caN26tREbG+sUy+bNm43WrVsbN9xwg2G32x3tV199tREVFeXU97XXXjOioqKMhQsXOtomTZpkREVFGbNnz3Y6Pz4+3ujRo4cRHR1t7Ny509Fe9L6ZOXOmU/958+YZUVFRxt13333e65efn1/sGpW27r59+xpRUVHGlClTHO9JwzCMKVOmOO7vgQMHHO2bNm0yoqKijHHjxjna1qxZY0RFRRljx441srKyHO25ubnGhAkTjKioKGP58uXnjVtERESkrlDZBxEREZE6ZPTo0QQFBTleX3HFFQCEhIQwYsQIR7ufnx+tWrUiPz/fUTbg888/Jzs7m7vuuosmTZo4jXv33XcTHBzM559/7ihdcN111/HUU085jQtgsVgc86akpBSLcfz48fj4+DheX3LJJbRo0YK0tDRSU1MrvfYePXrQuXNnpzj69esHwMGDBys15rfffktqaiqjRo1yemrV19eXv//978X6L1iwALvdzgMPPEBwcLCj3WQy8cgjj2A2m8ssP7Br1y5++eUX+vfvT9++fZ2OXXnllfTr14/9+/ezY8eOCq3j+PHjfPvttzRv3pzp06djMpkcx1q0aMF9992HYRgsWLCg2LlTpkxx6n/NNdcAlb+m5zNp0iTM5j9+TOnWrRsA/fv3p1WrVo72Ll26ADiVwpg/fz4Af//73/H29na0u7u78/DDDwPw6aefVkvcIiIiIrWRyj6IiIiI1CEtW7Z0el2UAGvSpIlTAg/A09MTgLy8PAB2797t+P/rr79ebGwvLy9SU1NJSEjg0ksv5bLLLuOyyy7j7Nmz7Nq1i8OHD3PkyBH27dvHli1bALDb7eeNEQqT0efGUhkljevv739B4/76668AdOrUqdixtm3bOiWx4Y9ruGnTJse55/Lx8SEhIYGsrKxi5557fmpqaon3ICMjwxFXUfKzIuuIiYkp9j6AP35J8OeYAwMDnZLYUDX3qix/vo9F16lp06ZO7X9+/8If12/lypWsXr3aqb/dbsdkMvHLL79UecwiIiIitZWSvyIiIiJ1yLlPO57L3d39vOcWJRaXLl1aZr/09HQAsrKyePnll1m8eDHZ2dlAYbK1Y8eOXHLJJWzbtq3EzbjOrQFcpCghWVL/8ippjRc6btFaixKefxYYGOj0uugafvTRR2WOm5GRUWLyt+j8n376iZ9++qnU89PS0soc/8/OnDkDlL6OBg0aAHD27Fmn9rLuVXWpivfwf//731L7FN1TERERkfpAyV8RERERAf54wnLhwoUlPun6Z3/729/45ptvGDRoELfeeiuXXHIJYWFhALzwwgts27atWuOtCUXJ3aKk4p/9+Qneoj9v3LiR0NDQCs9XdP6DDz7I5MmTK3x+aYo26UtOTi7xeNH6zi0ZcjHy8fEhLy+P7du3V3uSWkRERORioJq/IiIiIgLgqGm7c+fOEo+//PLLvPXWW5w9e5aMjAzWrFlD8+bNee211+jevbsj8Quwf/9+4MK
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABX8AAAGHCAYAAADoXCGRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdZ3hVVfr38e/p6T0kIQmdhN4DKkhHlKJIU0SHBx1HBx0ZUUcdZ0Yd+zijDjrj8LdRVFQEEZAmVWnSe08oIfSE9J6znxchRyIhBEhyQvx9rssrZO21177X3scE7rPOvUyGYRiIiIiIiIiIiIiISK1idncAIiIiIiIiIiIiIlL5lPwVERERERERERERqYWU/BURERERERERERGphZT8FREREREREREREamFlPwVERERERERERERqYWU/BURERERERERERGphZT8FREREZHrxrFjx4iNjWXUqFHXNM6RI0eYPXv2NY1RWFhIbGwsvXv3vuoxnnnmGWJjY1mzZs1Vj5Gfn8+kSZNKtb377rvExsYyY8aMqx63smRmZvLJJ5+UaquMeYuIiIjI5Sn5KyIiIiLXDT8/Px599FGGDRt21WPs2rWLgQMHsm7dukqMzH3uvvtu3nrrrVJtnTt35tFHH6VFixZuiqqY0+nklltuYdq0aaXa+/bty6OPPkp0dLSbIhMRERH5dbC6OwARERERkYry8/PjD3/4wzWNkZaWRkFBQSVF5H5nz569qK1Lly506dLFDdGU5nQ6SU5OJjIyslR737596du3r5uiEhEREfn10MpfERERERERERERkVpIyV8RERGRWqCkhurx48f55z//Sc+ePWndujUDBw501bZdv349o0ePpl27dvTo0YMXX3yRzMzMi8bavn07jzzyCF26dKFVq1b079+fd955h6ysrIv6nj17ln/84x8MGjSI9u3b06pVK3r37s1f/vIXTp48WarvfffdR/v27UlLS+Oll16ie/furvH/97//UVRUdNl5llXzd9asWcTGxrJw4UJmzZrFkCFDaNOmDV26dOGJJ54gMTGx1H0aO3YsAN988w2xsbHMmjXrstfdsGEDDzzwAHFxcXTs2JHHHnuM48ePX7L/qlWruP/++4mLi6NNmzYMHjyYjz76qMIrjk+dOsXzzz9Pz549adWqFd26dePZZ5/l2LFjrj4//fQTsbGxnDp1CoDY2Fjuu+8+4NI1f9PT03nzzTfp378/rVq1Ii4ujgceeIBVq1ZdFENsbCwPPfQQBw8e5JFHHiEuLo62bdsycuRIFi1adNk5zJo1i5YtWwKQlJREbGwszzzzDFB2zd/evXszaNAgkpKSeOKJJ+jSpQvt27dn9OjRbN++HYAvv/ySgQMH0qZNG/r378+UKVMwDOOia8+bN49Ro0bRvn172rVrx/Dhw2tE/WMRERGR6qayDyIiIiK1yKOPPsqZM2fo378/OTk5fPvttzz99NPs37+fqVOn0r17d+655x6WLVvG559/Tm5uLq+99prr/Pnz5/PUU09hs9no168fYWFhbN68mffff5/ly5fz2Wef4ePjA8CZM2cYNmwYZ8+epUePHvTs2ZOsrCxWr17NjBkzWLt2LfPnz8fhcLjGLyws5L777iM1NZVevXphsViYN28eb7/9Njk5OTz++ONXPfePPvqI3bt306dPH7p27cratWuZN28eW7ZsYdGiRdhsNvr27YvT6eTbb7+lWbNm9O3bl+bNm5c77sKFC3niiSewWq3069cPPz8/VqxYwejRo8vs//HHH/PGG28QEBBAv379CAgIYPXq1fzjH/9gzZo1TJo0Cav10n8Nj4+P57777iMlJYXu3bszcOBAjh07xrfffsuyZcuYPHkyzZs3JzIykkcffZRPPvmErKwsHn300YvKK1zo5MmT3HPPPSQlJdGyZUvuuecekpOTWbZsGatWreLJJ5/kwQcfLHXOkSNHuOuuu6hfvz7Dhg3jzJkzLFiwgMcee4yPPvqIbt26XfJ6zZs3Z9y4cfz3v//F19eXMWPGXPZep6amctdddxEaGsqwYcOIj49nxYoV3H///QwePJjZs2dz2223ceONNzJnzhxeffVV/P39GTJkiGuMl19+mWnTphEREcHgwYPx9PRk+fLl/OUvf2HLli28+uqr5cYgIiIiUqsYIiIiInLde/rpp42YmBijV69eRkpKiqt98uTJRkxMjBETE2PMmDHD1Z6enm60b9/eaNmypVFUVGQYhmGcOXPGaNu2rXHTTTcZR48eLTX+u+++a8TExBgvvPCCq+3ll182YmJijC+++KJU38LCQmPo0KFGTEyM8eOPP7ra7733XiMmJsYYOXKkkZmZ6Wo/cOCA0bx5c6Nz585GYWFhufNMTEw0YmJijLvvvtvVNnPmTCMmJsZo2bKlsWXLllJxjBo1yoiJiTEWL17sal+9erURExNjPP300+VeyzAMIzMz07jhhhuMdu3aGbt373a1Z2RkGKNHj3bd8xJ79uwxmjVrZgwYMMBITk52tTudTuPZZ581YmJijA8++MDVXvLcVq9e7Wq78847jWbNmhnLli0rFcvatWuNZs2aGYMGDTKcTqer/eabbzZiYmJK9Z04caIRExNjfPXVV662Bx980IiJiTHefvvtUucnJCQYXbt2NWJjY41t27a52kteNy+99FKp/tOnTzdiYmKMhx9++LL3r6Cg4KJ7dKl59+rVy4iJiTHGjRvnek0ahmGMGzfO9XwPHjzoal+zZo0RExNjjBkzxtW2dOlSIyYmxrjvvvuMrKwsV3teXp5x//33GzExMcb8+fMvG7eIiIhIbaGyDyIiIiK1yN13301gYKDr+86dOwMQHBzMsGHDXO2+vr40btyYgoICV9mA2bNnk5OTw0MPPUR0dHSpcR9++GGCgoKYPXu2q3TBbbfdxosvvlhqXACLxeK6bnJy8kUxjh07Fm9vb9f3TZo0oWHDhqSmppKSknLVc+/atSvt2rUrFUfv3r0BOHTo0FWNuXLlSlJSUhg5cmSpVas+Pj78+c9/vqj/l19+idPpZMKECQQFBbnaTSYTTz/9NGazudzyA9u3b2fXrl306dOHXr16lTp2ww030Lt3b/bv38/WrVuvaB6nTp1i5cqVNGjQgPHjx2MymVzHGjZsyGOPPYZhGHz55ZcXnTtu3LhS/W+55Rbg6u/p5Tz44IOYzT//MyUuLg6APn360LhxY1d7+/btAUqVwvjiiy8A+POf/4yXl5er3W6389RTTwHw9ddfV0ncIiIiIjWRyj6IiIiI1CKNGjUq9X1JAiw6OrpUAg/Aw8MDgPz8fAB27Njh+vruu+9eNLanpycpKSkcPnyYpk2b0qFDBzp06EB2djbbt2/n6NGjHDt2jH379rFu3ToAnE7nZWOE4mT0hbFcjbLG9fPzu6Zxd+/eDUDbtm0vOtaiRYtSSWz4+R6uWbPGde6FvL29OXz4MFlZWRede+H5KSkpZT6D9PR0V1wlyc8rmUeXLl0ueh3Az28S/DLmgICAUklsqJxnVZ5fPseS+1SvXr1S7b98/cLP92/hwoV8//33pfo7nU5MJhO7du2q9JhFREREaiolf0VERERqkQtXO17Ibrdf9tySxOKcOXPK7ZeWlgZAVlYWb731FjNnziQnJwcoTra2adOGJk2asHnz5jI347qwBnCJkoRkWf0rqqw5Xuu4JXMtSXj+UkBAQKnvS+7hp59+Wu646enpZSZ/S87ftGkTmzZtuuT5qamp5Y7/SxkZGcCl5xEWFgZAdnZ2qfbynlVVqYzX8Pvvv3/JPiXPVEREROTXQMlfEREREQF+XmH51VdflbnS9Zf+9Kc/sWTJEvr378+oUaNo0qQJoaGhALzxxhts3ry5SuOtDiXJ3ZKk4i/9cgVvyZ9Xr15NSEjIFV+v5PwnnniC3/3ud1d8/qWUbNJ38uTJMo+XzO/CkiHXI29vb/Lz89myZUuVJ6lFRERErgeq+SsiIiIiAK6attu2bSvz+FtvvcWkSZPIzs4mPT2dpUuX0qBBAyZOnMiNN97oSvwC7N+/H7i
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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kCG2shUrVliDg4OtTZs2tUZFRdnFMXToUGtwcLB1y5YttvLdu3dbg4ODrZMnT77qtaxWqzUpKcl66623Wlu2bGn9+eefbeWJiYnW4cOH2+55rl9++cXauHFj61133WWNjY21lVssFutTTz1lDQ4Otn700Ue28txx2717t62sf//+1saNG1u3b99uF8vevXutjRs3tt59991Wi8ViK7/99tutwcHBdnXfffdda3BwsHX58uW2sgceeMAaHBxsfeutt+zOP3HihLVjx47WkJAQ68GDB23luc/Niy++aFd/yZIl1uDgYOtDDz10zfuXmZmZ5x4V1O+uXbtag4ODrePGjbM9k1ar1Tpu3Djb+P7222+28j179liDg4OtI0eOtJVt27bNGhwcbB0xYoQ1OTnZVp6enm4dPXq0NTg42Lphw4Zrxi0iIiJSXmjpCREREZEKasiQIfj7+9te33LLLQAEBgYyYMAAW7m3tzcNGjQgMzPTtnTBqlWrSE1N5cEHH6RWrVp27T700EMEBASwatUq2/IJvXv35vnnn7drF8DJycl23djY2Dwxjho1Ci8vL9vrhg0bUq9ePeLj44mLi7vuvnfs2JGWLVvaxdGtWzcAfv/99+tq88svvyQuLo5BgwbZzYY1mUw8/fTTeeovW7YMi8XCpEmTCAgIsJUbDAYmT56M0Wi86hIIP/74I4cPH6Z79+507drV7titt95Kt27dOHbsGD/88EOR+hETE8OXX35J3bp1mThxIgaDwXasXr16PPLII1itVpYtW5bn3HHjxtnVv+OOO4Drv6fX8sADD2A0Xv6Vpl27dgB0796dBg0a2MpbtWoFYLccx9KlSwF4+umn8fT0tJW7urry5JNPAvDZZ5+VSNwiIiIiZZGWnhARERGpoOrXr2/3OjdZVqtWLbtkH4C7uzsAGRkZABw6dMj294wZM/K07eHhQVxcHCdPnqRRo0a0bt2a1q1bk5KSwo8//sgff/zBmTNnOHr0KN988w0AFovlmjFCTuL6yliuR37t+vj43FC7P//8MwAtWrTIc6xJkyZ2CW+4fA/37NljO/dKXl5enDx5kuTk5DznXnl+XFxcvmOQkJBgiys3UVqUfrRv3z7PcwCX31D4e8x+fn52CW8onrG6mr+PY+59ql27tl35359fuHz/Nm3axBdffGFX32KxYDAYOHz4cLHHLCIiIlJWKVEsIiIiUkFdOYvySq6urtc8NzcJuWbNmqvWM5vNACQnJ/Pmm2+yYsUKUlNTgZzEbPPmzWnYsCEHDhzId6OxK9cszpWbvMyvfmHl18cbbTe3r7nJ0b/z8/Oze517DxctWnTVdhMSEvJNFOee//333/P9998XeH58fPxV2/+7xMREoOB+VK1aFYCUlBS78quNVUkpjmf4gw8+KLBO7piKiIiIVARKFIuIiIhIkeUmLpcvX57vDNq/+/e//83WrVvp1asXQ4cOpWHDhlSuXBmA1157jQMHDpRovKUhNxGcm4D8u7/PDM799+7du6lUqVKRr5d7/uOPP87YsWOLfH5BcjcgjI6Ozvd4bv+uXLbkZuTl5UVGRgZRUVElntAWERERuRlojWIRERERKbLcNXgPHjyY7/E333yTWbNmkZKSQkJCAtu2baNu3bq8++67dOjQwZYkBjh27BhwYzOES0pREoj
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plotter2(tests[0], data)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"scrolled": false
},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABYoAAAGHCAYAAAAeOWZMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3xUVfr48c+dXpJJJwkptJBQErqggBRBscAKiAgWRF3F7yrWVVl/rmBfV1ddXXd1rYDYEEFEEaXJimKjBekgJYVAejK93N8fY0bGhCpJJvC8Xy9fkHPPnPucc4aJPDk8V1FVVUUIIYQQQgghhBBCCCHEGUvT3AEIIYQQQgghhBBCCCGEaF6SKBZCCCGEEEIIIYQQQogznCSKhRBCCCGEEEIIIYQQ4gwniWIhhBBCCCGEEEIIIYQ4w0miWAghhBBCCCGEEEIIIc5wkigWQgghhBBCCCGEEEKIM5wkioUQQgghxGmjoKCAnJwcJk6c+LvG2bt3LwsWLDiuvjk5OQwaNOh33a851NbW8sYbb4S1TZs2jZycHL7++utmiupXhw4d4u233w5ru+aaa8jJyWHv3r3NFJUQQgghxOlLO2PGjBnNHYQQQgghhBCnitFopG/fvnTp0uWkXv/TTz8xZswYLBYLw4cPP67X9OvXj549e57U/ZpDIBBg6NChbN68mWuvvTbsWvv27enXrx8xMTHNFB0cPHiQCy+8kKqqKsaOHRt2rXPnzvTt2xeTydRM0QkhhBBCnJ50zR2AEEIIIYQQp4rNZmPq1Km/a4yqqiq8Xu9x9/+992sOgUCAsrIy0tLSwtqHDx9+3MnxxuR0OrHb7fXaf5s0FkIIIYQQp46UnhBCCCGEEEIIIYQQQogznCSKhRBCCCHOAHW1Z4uKinj66acZMmQIeXl5XHLJJaFavN999x1XXXUVPXr0YPDgwTz00EPU1tbWG2vjxo3ccsst9OvXj9zcXEaMGMFzzz3X4AnQ0tJS/v73vzNy5Eh69uxJbm4u5513Hg888AAHDhwI63vNNdfQs2dPqqqqeOSRRxg0aFBo/Jdeegm/33/MeTZUo/jDDz8kJyeHzz77jA8//JDRo0fTrVs3+vXrx913383+/fvD1um6664DYP78+eTk5PDhhx8e9Z6/rVH87bffkpOTw2uvvcby5cuZMGECPXr0oE+fPtx8881s3bq13hjLli1j0qRJ9O/fn7y8PC644AIee+wxSktL6/XdvXs399xzDwMHDgyt56OPPkp5eXlYv7p5z58/n7vuuotu3bpx9tln85///IeuXbsCUFhYSE5ODtOmTQvNv6EaxSUlJcyYMYPzzjuP3NxczjnnHG699VY2btzY4Po//PDDrF27luuuu45evXrRs2dPJk2axLfffnvUtQR44YUXuOCCC4DgezInJ4cXXngBaLhGcU5ODlOmTGHbtm1MmTKF3r1707t3b2688Ub27NmDz+fj5ZdfZvjw4XTv3p1Ro0bx8ccf17uv3+9nzpw5jB07lu7du9OrVy+uvvpqli5desyYhRBCCCFOB1J6QgghhBDiDHLrrbdy6NAhRowYgdPp5KOPPuK+++5j+/btzJo1i0GDBnHllVeyfPly3n77bVwuF0888UTo9Z9++in33HMPer2e888/n+TkZNauXct//vMfVqxYwZw5c4iKigKCDyO77LLLKC0tZfDgwQwZMgS73c7q1auZO3cu33zzDZ9++ilGozE0vs/n45prrqGyspKhQ4ei1WpZtGgRzz77LE6nkzvvvPOk5/7aa6+xefNmhg0bxoABA/jmm29YtGgR69atY8mSJej1eoYPH04gEOCjjz6iU6dODB8+nM6dO5/U/RYvXsymTZtCa5qfn8+KFSv4/vvvWbp0KXFxcQB8/vnn3H777aSmpnLxxRdjNBrZsGEDs2bNYtWqVSxcuDC0Rt9//z033XQTHo+HYcOGkZmZybZt25g9e3Zoz1JSUsLi+Mc//oHRaOTqq69m586dDBkyBI/Hw7///W+io6O59tprjzrHbdu2MWnSJCorKznrrLO44IILKCwsZPny5axYsYK//e1vjBo1Kuw1a9eu5f3336dHjx5cccUV7Nmzh+XLl7N27VoWLFhAVlbWEe/Xt29frrnmGmbPnk1aWhpjxoyhb9++R13rPXv2MGHCBLp27coVV1zBhg0bWLVqFbt376Z79+588803XHDBBaiqykcffcSf//xnUlJSOOuss4BgKY7bbruNpUuX0r59ey6//HICgQBffPEFt9xyC1OnTuXWW289agxCCCGEEC2eKoQQQgghTnv33Xefmp2drQ4dOlQtLy8Ptb/55ptqdna2mp2drc6dOzfUXl1drfbs2VPt2rWr6vf7VVVV1UOHDqndu3dX+/fvr+7bty9s/BdeeEHNzs5WZ8yYEWp79NFH1ezsbPXdd98N6+vz+dSxY8eq2dnZ6v/+979Q+9VXX61mZ2er48ePV2tra0PtO3bsUDt37qz27dtX9fl8R53n/v371ezsbHXChAmhtnnz5qnZ2dlq165d1XXr1oXFMXHiRDU7O1v9/PPPQ+2rV69Ws7Oz1fvuu++o96qTnZ2tnnvuuaGv16xZE1rTzz77LKzvXXfdpWZnZ6tvvPFGqG3s2LFqjx491Orq6gb7fvLJJ6qqqqrb7VYHDhyoduvWTc3Pzw/r++GHH6rZ2dnqjTfeWG/ePXr0UA8dOhTW3+v1ht4Ph6t7n6xevVpVVVX1+/3qyJEj1ezsbPW9994L67t+/Xq1W7dual5enlpcXKyq6q/rn52drb722mth/Z9++mk1OztbfeSRRxpeyMPs2bNHzc7OVq+++uqw9rr3yJ49e0Jtdfc7fNxAIKCOGTNGzc7OVvv16xc2/7lz56rZ2dnq/fffH2qbNWuWmp2drd59992qx+MJtVdXV6t/+MMf1JycHHXDhg3HjFsIIYQQoiWT0hNCCCGEEGeQCRMmhE6yAqGTmgkJCVx22WWh9ujoaDp06IDX66WkpASABQsW4HQ6mTJlChkZGWHj3nzzzcTHx7NgwYLQg+AuuugiHnroobBxAbRabei+ZWVl9WK87rrrsFqtoa+zsrJo164dlZWV9cornIgBAwbQo0ePsDjOO+88AH7++eeTHvdIOnbsyIgRI8La6h4Ut3v37lCbqqo4nU62bNkS1vfBBx/kq6++4uKLLwaC5SkOHjzIhAkTyM3NDes7ZswYunTpwpdffhnarzr9+vUjMTHxpOawYcMGtm/fzoABAxg/fnzYte7duzN58mTcbne98hzR0dFMmjQprO38888HGmetAW666abQ7xVFoXfv3kDwAXiHz79nz55AsExGnXfffRdFUXjwwQfR6/Wh9ujoaKZOnYqqqnzwwQeNErcQQgghRKSQ0hNCCCGEEGeQ9u3bh31tsVgAyMjIQFGUsGsmkwkAj8cDQH5+fujXupqxhzObzZSXl7Nnzx46duxIr1696NWrFw6Hg40bN7Jv3z4KCgrYtm0ba9asAYL/5P9YMUIwYXd4LCejoXFtNtvvHvdk7leXTIdg3d1p06ZxzTXX0LZtWwYMGED//v0555xziImJCfWrW/+9e/c2uP51a7llyxaSk5ND7W3atDnpOfz0008AnH322Q1e79u3Ly+99BKbN28Oa8/MzESnC/+rRmOudXR0NK1atQprq3tvZ2ZmhrXXlfGoi8PhcLBz504sFgszZ86sN3Z1dTXw61oIIYQQQpyuJFEshBBCCHEGqUue/ZbBYDjma+sSZgsXLjxqv6qqKgDsdjvPPPMM8+bNw+l0AsFkYbdu3cjKymLt2rWoqlrv9YfXLK5Tl8RuqP/xamiOp2Lc33u/MWPGkJiYyFtvvcU333zDnDlzmDNnDiaTiUsvvZT7778fk8kUWv8VK1awYsWKI963srIy7Ou6hP/JqKmpAQjVnf6tuoR03f7WOdoeNoYjva/h2O/tujk6HA7+9a9/HbFf3ftaCCGEEOJ0JYliIYQQQghxXOrKQbz//vt07979mP3vvfdeli5dyogRI5g4cSJZWVkkJSUB8OS
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABYoAAAGHCAYAAAAeOWZMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3yUVdrw8d9kUqYlmZJGeu+QUEPvxYZSFGGtrO+ir2vZ1fXR3X3elXV1d/VxVx9d17KWRUUEBWnSIfQOIYSWQEJISCOFBNLL3O8fMVkjAQIkmYFc38+HD+Sec59znfueScg1Z66jUhRFQQghhBBCCCGEEEIIIUSP5WDrAIQQQgghhBBCCCGEEELYliSKhRBCCCGEEEIIIYQQooeTRLEQQgghhBBCCCGEEEL0cJIoFkIIIYQQQgghhBBCiB5OEsVCCCGEEEIIIYQQQgjRw0miWAghhBBCCCGEEEIIIXo4SRQLIYQQQohbxtmzZ4mKimLWrFk31M+ZM2dYunRph9pGRUUxcuTIGxrPFiorK/nss8/aHHvppZeIiopi586dNorqP4qLi/nqq6/aHHvooYeIiorizJkzNopKCCGEEOLWpZ47d+5cWwchhBBCCCFEZ3FxcWHQoEHExsZe1/lHjx5l6tSp6HQ6xo8f36FzkpKS6Nu373WNZwtWq5UxY8Zw7NgxHnnkkTaPhYaGkpSUhLu7u42ig3PnznHbbbdRUVHBtGnT2jwWExPDoEGD0Gg0NopOCCGEEOLW5GjrAIQQQgghhOgsbm5uPP300zfUR0VFBQ0NDR1uf6Pj2YLVaqW0tBQ/P782x8ePH9/h5HhXqqmpoaqq6pLjP00aCyGEEEKIziOlJ4QQQgghhBBCCCGEEKKHk0SxEEIIIUQP0FJ7Nj8/nzfffJPRo0fTu3dv7rzzztZavHv37uWBBx4gMTGRUaNG8cc//pHKyspL+jp8+DC//OUvSUpKIj4+nkmTJvH222+3uwK0pKSEN954g7vuuou+ffsSHx/P2LFj+e///m8KCwvbtH3ooYfo27cvFRUV/OlPf2LkyJGt/X/wwQc0NTVddZ7t1ShesmQJUVFRrFmzhiVLljBlyhT69OlDUlISzz//PLm5uW2u0+zZswH47rvviIqKYsmSJVcc86c1ivfs2UNUVBSffPIJmzZtYubMmSQmJjJgwACeeOIJTpw4cUkfGzdu5OGHH2bo0KH07t2biRMn8tprr1FSUnJJ26ysLF544QWGDx/eej1fffVVysrK2rRrmfd3333Hc889R58+fRg8eDDvv/8+cXFxAOTl5REVFcVLL73UOv/2ahQXFRUxd+5cxo4dS3x8PEOGDOGpp57i8OHD7V7/V155hYMHDzJ79mz69etH3759efjhh9mzZ88VryXAu+++y8SJE4Hm52RUVBTvvvsu0H6N4qioKB5//HHS09N5/PHH6d+/P/379+cXv/gF2dnZNDY28uGHHzJ+/HgSEhKYPHkyK1asuGTcpqYm5s+fz7Rp00hISKBfv348+OCDbNiw4aoxCyGEEELcCqT0hBBCCCFED/LUU09RXFzMpEmTqKmpYdmyZbz44otkZGTw+eefM3LkSH72s5+xadMmvvrqK2pra/nLX/7Sev6qVat44YUXcHJyYsKECXh7e3Pw4EHef/99kpOTmT9/PgaDAWjejGz69OmUlJQwatQoRo8eTVVVFTt27OCbb75h165drFq1ChcXl9b+GxsbeeihhygvL2fMmDGo1WpWrlzJW2+9RU1NDb/+9a+ve+6ffPIJx44dY9y4cQwbNoxdu3axcuVKUlJSWLt2LU5OTowfPx6r1cqyZcuIjo5m/PjxxMTEXNd4q1ev5siRI63XNC0tjeTkZPbt28eGDRswmUwArFu3jmeffZZevXpxxx134OLiQmpqKp9//jlbt25l+fLlrddo3759zJkzh/r6esaNG0dgYCDp6el88cUXrffMx8enTRx/+9vfcHFx4cEHH+TUqVOMHj2a+vp6/vnPf+Lq6sojjzxyxTmmp6fz8MMPU15ezsCBA5k4cSJ5eXls2rSJ5ORk/vrXvzJ58uQ25xw8eJBFixaRmJjI/fffT3Z2Nps2beLgwYMsXbqU8PDwy443aNAgHnroIb744gv8/PyYOnUqgwYNuuK1zs7OZubMmcTFxXH//feTmprK1q1bycrKIiEhgV27djFx4kQURWHZsmX85je/wcfHh4EDBwLNpTieeeYZNmzYQGhoKPfddx9Wq5X169fzy1/+kqeffpqnnnrqijEIIYQQQtz0FCGEEEIIcct78cUXlcjISGXMmDFKWVlZ6/F///vfSmRkpBIZGal88803rccvXLig9O3bV4mLi1OampoURVGU4uJiJSEhQRk6dKiSk5PTpv93331XiYyMVObOndt67NVXX1UiIyOVr7/+uk3bxsZGZdq0aUpkZKSybdu21uMPPvigEhkZqcyYMUOprKxsPX7y5EklJiZGGTRokNLY2HjFeebm5iqRkZHKzJkzW48tXrxYiYyMVOLi4pSUlJQ2ccyaNUuJjIxU1q1b13p8x44dSmRkpPLiiy9ecawWkZGRyogRI1q/3r17d+s1XbNmTZu2zz33nBIZGal89tlnrcemTZumJCYmKhcuXGi37ffff68oiqLU1dUpw4cPV/r06aOkpaW1abtkyRIlMjJS+cUvfnHJvBMTE5Xi4uI27RsaGlqfDz/W8jzZsWOHoiiK0tTUpNx1111KZGSksnDhwjZtDx06pPTp00fp3bu3UlBQoCjKf65/ZGSk8sknn7Rp/+abbyqRkZHKn/70p/Yv5I9kZ2crkZGRyoMPPtjmeMtzJDs7u/VYy3g/7tdqtSpTp05VIiMjlaSkpDbz/+abb5TIyEjld7/7Xeuxzz//XImMjFSef/55pb6+vvX4hQsXlLvvvluJiopSUlNTrxq3EEIIIcTNTEpPCCGEEEL0IDNnzmxdyQq0rtS0WCxMnz699birqythYWE0NDRQVFQEwNKlS6mpqeHxxx8nICCgTb9PPPEEZrOZpUuXtm4Ed/vtt/PHP/6xTb8AarW6ddzS0tJLYpw9ezZ6vb716/DwcEJCQigvL7+kvMK1GDZsGImJiW3iGDt2LACnT5++7n4vJyIigkmTJrU51rJRXFZWVusxRVGoqanh+PHjbdr+4Q9/YPv27dxxxx1Ac3mKc+fOMXPmTOLj49u0nTp1KrGxsWzZsqX1frVISkrCw8PjuuaQmppKRkYGw4YNY8aMGW0eS0hI4NFHH6Wuru6S8hyurq48/PDDbY5NmDAB6JprDTBnzpzWf6tUKvr37w80b4D34/n37dsXaC6T0eLrr79GpVLxhz/8AScnp9bjrq6uPP300yiKwrffftslcQshhBBC2AspPSGEEEII0YOEhoa2+Vqn0wEQEBCASqVq85hGowGgvr4egLS0tNa/W2rG/phWq6WsrIzs7GwiIiLo168f/fr1o7q6msOHD5OTk8PZs2dJT09n9+7dQPNH/q8WIzQn7H4cy/Vor183N7cb7vd6xmtJpkNz3d2XXnqJhx56iODgYIYNG8bQoUMZMmQI7u7ure1arv+ZM2favf4t1/L48eN4e3u3Hg8KCrruORw9ehSAwYMHt/v4oEGD+OCDDzh27Fib44GBgTg6tv1VoyuvtaurK15eXm2OtTy3AwMD2xxvKePREkd1dTWnTp1Cp9Mxb968S/q+cOEC8J9rIYQQQghxq5JEsRBCCCFED9KSPPspZ2fnq57bkjBbvnz5FdtVVFQAUFVVxd///ncWL15MTU0N0Jws7NOnD+Hh4Rw8eBBFUS45/8c1i1u0JLHba99R7c2xM/q90fGmTp2Kh4cHX375Jbt27WL+/PnMnz8fjUbDPffcw+9+9zs0Gk3r9U9OTiY5Ofmy45aXl7f5uiXhfz0uXrwI0Fp3+qdaEtIt97fFle5hV7jc8xqu/txumWN1dTX/+Mc/Ltuu5XkthBBCCHGrkkSxEEIIIYTokJZyEIsWLSIhIeGq7f/rv/6LDRs2MGnSJGbNmkV4eDienp4
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABZUAAAGHCAYAAADInLwpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3iURdfH8e+m90DoJQk1Cb333ot06VWkSxPFXsD+oKivHVC6IIjSpUOQ3kxoSu8k9CSkQtr9/hGzsiaBUJKN8Ptcl5dmdnbmzEzIk+fscG6TYRgGIiIiIiIiIiIiIiKZYGPtAERERERERERERETkv0NJZRERERERERERERHJNCWVRURERERERERERCTTlFQWERERERERERERkUxTUllEREREREREREREMk1JZRERERERERERERHJNCWVRUREROSJc/HiRfz9/enVq9dDjXPu3DmWLl2aqb7+/v40bNjwoeazhujoaGbOnGnR9uqrr+Lv78+OHTusFNU/rl27xvz58y3a+vXrh7+/P+fOnbNSVCIiIiKPN9uJEydOtHYQIiIiIiLZzdHRkZo1a1K2bNkHev+ff/5J586dcXFxoXnz5pl6T61atahSpcoDzWcNycnJNGnShL/++osBAwZYvFaiRAlq1aqFp6enlaKDq1ev0rp1a27evEmXLl0sXitTpgw1a9bEycnJStGJiIiIPL7srB2AiIiIiEh28/DwYPTo0Q81xs2bN0lISMh0/4edzxqSk5O5ceMGRYoUsWhv3rx5phPpWSkuLo6YmJg07f9OMIuIiIjIo6XyFyIiIiIiIiIiIiKSaUoqi4iIiIhZaq3c0NBQJk+eTOPGjalQoQJPPfWUuXbwnj176NOnD5UrV6ZRo0a88847REdHpxnr4MGDjBw5klq1alG+fHlatWrF//3f/6V7s/T69et8/PHHtGvXjipVqlC+fHmaNm3Km2++yeXLly369uvXjypVqnDz5k3ee+89GjZsaB5/ypQpJCUl3XOd6dVUXrx4Mf7+/qxZs4bFixfTqVMnKlasSK1atXjxxRe5cOGCxT4NHDgQgCVLluDv78/ixYvvOue/ayrv3r0bf39/pk+fzqZNm+jZsyeVK1emevXqDB8+nKNHj6YZY+PGjfTv35+6detSoUIFWrZsyQcffMD169fT9D19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
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plotter2(tests[1], data)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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oE+fPrz55pvX1Qd43bp1TJkyhTZt2tCqVSv+97//MWvWLH799Vfmzp1LREREoa8tztfEzp07mTdvHvHx8QwcOJAtW7awbNkykpKSMBgMnD59mi5dupCZmcnSpUsZPnw4v/zyCzVr1gTAarXy2GOPkZiYSP369Rk4cCAWi4WVK1cydOhQ3nrrLXr37l3s6yGEEEKIW5wqhBBCCCEKNX78eNVsNqsdO3ZUU1NTvdu//fZb1Ww2q2azWZ0/f753e2ZmptqkSRO1fv36qsvlUlVVVS9cuKA2atRIbd26tXrixAmf+adOnaqazWb11Vdf9W578803VbPZrH7//fc+Y51Op9q7d2/VbDarv/76q3f7o48+qprNZrV///5qdna2d/tff/2l1qtXT23evLnqdDqveJ4nT55UzWazOmDAAO+2BQsWqGazWa1fv766e/dunzoGDhyoms1mddWqVd7tmzdvVs1mszp+/PgrHsvDbDarbdu2zbfd4XB4r7nHtm3bvNd7xYoVPuPHjBmjms1m9ZtvvvFu6927t9q4cWM1MzOzwLG//PJLseo4efKkGhcXp7Zu3Vo9fPiwz1jPfdi2bZuqqqo6YsQI1Ww2q7Nnz/aZ99ChQ2rjxo3Vli1bqhaLRVVVVZ09e7ZqNpvVH374wWfsr7/+qprNZnXYsGHebS1atFA7deqk5ubmerddek8SExO921988UWfmjzncPm99jh27JhqNpvVRx991LvN8z748MMP842/nOcaHDt2TFVVVc3OzlZbtWql1q9fX12/fr3P2NWrV6uxsbFqq1at1JycHFVVVTUxMdF7zT1zqKqqKoqi/uc//1HNZrP69NNPe7dPmTLFe92cTqc6atQo1Ww2q6+88oqqKIrP8Yr7fps2bZpPHa+//rr3GFdT2NdEx44dVbPZrDocDlVVL94Ts9msfv31195xNptNbdOmjWo2m9UHH3zQ5+v7448/Vs1ms/rpp596t73zzjuq2WxWJ0+e7HP+Z8+eVdu2bavGxcWpSUlJV61bCCGEELcnaT0hhBBCCFEEAwYM8Onz2rx5cwAiIyPp06ePd3twcDB16tTB4XBw7tw5ABYtWoTVauWZZ56hevXqPvMOHz6ciIgIFi1a5H3o1YMPPshrr73mMy+ATqfzHjclJSVfjU888QSBgYHez2NiYqhduzbp6elF+lX5wrRp04bGjRv71OH5Nf2///672PMWR926denSpYvPts6dOwP4tDFQVRWr1cqBAwd8xr7yyits2rSJhx56qFjHX7ZsGXa7nWHDhlGnTh3vdr1ez9ixY3nuuecICgoiOTmZ1atXc9dddzF48OB859CvXz9SU1NZu3YtAIqiALB3716fh5/Fx8ezatUqPv30U59zS0tL4/jx495tOp2OqVOnsnXrVho2bFisc7sREhISSElJoVevXrRv395nX+fOnenatSspKSmsXr0acLfUABg9erR3lSyARqNh9OjRREdHs379epKSknzmUhSFcePGsWLFCoYMGcJrr72GRqO57vpr1KjBU089la+OkJAQli5dmq/VyPUymUw+bT/8/Py893Pw4ME+X9+er8lTp04B4HK5mD9/PhEREYwePdrn/CtVqsRTTz2F3W5n8eLFJVqzEEIIIW4d0npCCCGEEKII7rjjDp/PTSYTANWrV88
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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juXtt9++pTrAv/76K9OnT2fAgAHExMSwa9cuZs2axaZNm5g7dy4Gg6HG59bnnti5cyfz588nLi6OCRMmsGXLFlasWMGFCxfQ6XScO3eOkSNHkpeXx7Jly5g8eTLLly+nY8eOABQVFfHII4+wb98+wsPDmTBhAoWFhaxevZpJkybxt7/9jXvvvbfe50MIIYQQbZwihBBCCCFqNG3aNMVoNCqDBw9WsrOzrdv/85//KEajUTEajcqPP/5o3Z6Xl6dER0cr4eHhitlsVhRFUa5cuaL06NFDiY2NVc6cOVOp/88++0wxGo3KX//6V+u2t99+WzEajcq8efMqtTWZTMq9996rGI1GZdOmTdbtDz30kGI0GpX7779fyc/Pt24/fvy40rVrV6Vv376KyWS64XFmZGQoRqNRGT9+vHXbzz//rBiNRiU8PFzZs2dPpTgmTJigGI1GZc2aNdbtmzdvVoxGozJt2rQb7quC0WhU4uPjq2wvKyuznvMK27Zts57vVatWVWr/3HPPKUajUfnuu++s2+69914lKipKycvLq7bt8uXL6xVHRkaGEhERocTGxionTpyo1LZiHLZt26YoiqJMmTJFMRqNyuzZsyv1e+zYMSUqKkrp37+/UlhYqCiKosyePVsxGo3KggULKrXdtGmTYjQalccff9y6rV+/fsqQIUOUkpIS67brx2Tfvn3W7c8//3ylmCqO4bdjXeH06dOK0WhUHnroIeu2iuvgo48+qtL+tyrOwenTpxVFUZT8/HwlJiZGCQ8PV9avX1+p7dq1a5WwsDAlJiZGKSgoUBRFUfbt22c95xV9KIqiWCwW5R//+IdiNBqVJ554wrp9+vTp1vNmMpmUZ555RjEajcprr72mWCyWSvur7/U2Y8aMSnG8+eab1n3cTE33xODBgxWj0aiUlZUpivK/MTEajcq3335rbVdcXKwMGDBAMRqNym233Vbp/v7kk08Uo9GofP7559Ztf//73xWj0ai8//77lY7/4sWLSnx8vBIREaFcuHDhpnELIYQQon2S0hNCCCGEELUwfvz4SnVe+/btC4C7uztjx461bndyciIkJISysjIuXboEwKJFiygqKuLJJ58kMDCwUr+TJ0/GYDCwaNEi66JXt912G2+88UalfgE0Go11v1lZWVVifPTRR3FwcLD+HRoaSnBwMFevXq3VT+VrMmDAAKKioirFUfEz/bS0tHr3Wx+dO3dm5MiRlbYNGzYMoFIZA0VRKCoq4vDhw5XavvbaayQnJ3P77bfXa/8rVqygtLSUxx9/nJCQEOt2rVbLCy+8wFNPPYWjoyOZmZmsXbuWbt26MXHixCrHcN9995GdnU1iYiIAFosFgNTU1EqLn8XFxbFmzRo+//zzSseWk5NDenq6dZtGo+Gzzz5j69atdO/evV7H1hiSkpLIysrinnvuISEhodJjw4YNY/To0WRlZbF27VqgvKQGwNSpU62zZAFUKhVTp07F39+f9evXc+HChUp9WSwWXnzxRVatWsXDDz/MG2+8gUqluuX4O3TowGOPPVYlDmdnZ5YtW1al1Mit0uv1lcp+2NraWsdz4sSJle7vinvy7NmzAJjNZn788UcMBgNTp06tdPze3t489thjlJaWsnjx4gaNWQghhBBth5SeEEIIIYSohU6dOlX6W6/XAxAYGFg
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABZUAAAGHCAYAAADInLwpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd1iUR9fA4d8uvapgxxoQNKKisYIIYo+9dyNq1MRubO8XS0xMfC2xRoPGjjV2xS6CSuwR0ZioiS2KJQqiAktZ9vn+4N3VlSJggei5rytXZHZ25swzu4iH2fOoFEVREEIIIYQQQgghhBBCCCGyQJ3bAQghhBBCCCGEEEIIIYT495CkshBCCCGEEEIIIYQQQogsk6SyEEIIIYQQQgghhBBCiCyTpLIQQgghhBBCCCGEEEKILJOkshBCCCGEEEIIIYQQQogsk6SyEEIIIYQQQgghhBBCiCyTpLIQQgghhMiy27dv4+bmRteuXV9pnJs3b7Jt27bXFJV4VVqtlhkzZlC3bl3c3d2pW7cuT548ydYYW7Zswc3NjdmzZ7+0b8+ePXFzc+PmzZs5DTlb5s+fj5ubGxs3bnwr8+VEeu8JPz8/3Nzc0Gq1uRSVEEIIIUT6JKkshBBCCCGyzN7ensGDB9O+ffscj3Hx4kWaN2/OiRMnXmNk4lVs2LCBJUuWYGZmRq9evWjfvj329va5HdZ7I6P3RK9evRg8eDBqtfyzTQghhBB5i2luByCEEEIIIf497O3tGTJkyCuN8fjxY5KTk19TROJ1uHjxIgBjx46ladOmuRzN+yej90Tv3r3ffjBCCCGEEFkgv/IWQgghhBDiPZeUlARAgQIFcjkSIYQQQgjxbyBJZSGEEEKI12DcuHG4ublx584dZs6cia+vL5UqVaJ58+aGOqmnTp2ie/fueHh44OPjw+TJk4mNjU0z1vnz5xk0aBC1atXC3d2dJk2aMGfOHOLi4tL0ffjwIdOnT6dFixZUrVoVd3d3/Pz8GD9+PPfu3TPq27NnT6pWrcrjx4/55ptvqFevnmH8gIAAUlJSXrrO9Goq62vp7t27ly1bttCmTRsqV65MrVq1+OKLL7h165bRdfL39wdg69atuLm5sWXLlkzndHNzo169emnatVotbm5u+Pn5GdpOnjyJm5sbS5cu5dChQ3Tp0gUPDw+qV6/OwIEDuXTpUppxgoOD6dWrF56enlSqVInGjRvz7bff8vDhwxzH8Xw8AwcOpE6dOlStWpVWrVqxcuVKQxJX7/Hjx8yYMYPGjRvj7u5O7dq1GTp0aLrx3r17l3HjxtG4cWMqVapE7dq1GThwICdPnkzTd9OmTXTp0oVatWpRpUoVmjdvzpw5cwyvO/312rlzJ5BabkG/J5nVz7558yZubm707NkzzWOv4urVq4wZM8aotvOYMWO4du1auv2PHj1K3759qVGjBpUqVaJJkybMnDkzS/Wgk5OTGThwIG5ubowZM8bw+s/J623hwoUcPHjQ8Nr39fVlypQpREdHvzSOzN4TL9ZU1u/J119/zenTpw3v6Zo1azJixAgePnyIRqNh+vTpeHt7U7VqVTp06EBYWFiaeRMTEwkICKBFixZUrlyZGjVq0K9fP06fPv3SmIUQQgghpPyFEEIIIcRrNHjwYB48eECTJk3QaDRs376dsWPHcuXKFVatWkW9evXo1q0bhw4dYu3atSQkJDB16lTD83fv3s3o0aMxMzOjUaNGFClShLNnz/Ljjz8SEhLCmjVrsLW1BeDBgwe0b9+ehw8f4uPjg6+vL3Fxcfzyyy9s3LiR48ePs3v3biwsLAzja7VaevbsSUxMDPXr18fExISgoCBmz56NRqNhxIgROV770qVL+f3332nQoAFeXl4cP36coKAgwsPD2bdvH2ZmZjRs2BCdTsf27dspX748DRs2pEKFCjm/4BnYs2cPv/32m+F6X7hwgZCQEE6fPs3BgwcNJ3L379/PsGHDKFasGB9//DEWFhZERESwatUqjhw5wo4dO4yuX3asWbOGKVOmYGFhQYMGDShcuDBhYWF89913RERE8P3336NSqXj48CHdunXj5s2b1KxZkwYNGhAdHc3evXsJDQ1l4cKF1K1bF4BHjx7Rq1cv7t+/T6NGjWjatCn37t1j3759HDlyhJ9++gkvLy8AVq5cyXfffYerqytt2rRBrVZz4sQJfvzxR86cOUNgYCBOTk4MHjyY/fv3c+XKFdq2bYuTk9Mb2ZOXOX78OAMGDCApKQlvb2+cnZ25evUqO3bs4MCBA/z444/Url3b0P/HH39kzpw5WFtb4+fnh4ODA7/++is//fQT+/btY82aNRQuXDjdubRaLcOHDyckJIT27dszZcqUV6pbfOjQIebNm4eXlxd16tTh119/JTAwkKNHj7Ju3TocHBwyfG5O3hNnzpxhw4YN1K1bl65du3Ls2DF2797N3bt3MTMzIzIykiZNmvDkyROCgoIYOHAgu3btonTp0gBoNBo++eQTIiIiqFixIl27diU+Pp59+/bRq1cvvv32W9q1a5fj6yGEEEKI94AihBBCCCFe2dixYxVXV1elfv36SnR0tKF9xYoViqurq+Lq6qps3LjR0P7kyROlatWqSsWKFZWUlBRFURTlwYMHSpUqVRRPT0/l77//Nhp//vz5iqurq/LVV18Z2qZMmaK4uroq69evN+qr1WqVdu3aKa6ursrRo0cN7T169FBcXV2VTp06KbGxsYb2P//8U6lQoYJSs2ZNRavVZrrOW7duKa6urkqXLl0MbZs3b1ZcXV2VihUrKuHh4UZxdO3aVXF1dVX2799vaP/ll18UV1dXZezYsZnOpefq6qp4e3unaU9OTjZcc70TJ04YrvfevXuN+o8cOVJxdXVVli9fbmhr166d4uHhoTx58iTdvrt27cpRHLdu3VLc3d0VT09P5a+//jLqq9+HEydOKIqiKIMHD1ZcXV2V1atXG4175coVxcPDQ6ldu7YSHx+vKIqirF69WnF1dVV+/vlno75Hjx5VXF1dlX79+hnaatWqpfj5+SmJiYmGtuf3JCIiwtD+xRdfGMWkX8OLe61348YNxdXVVenRo4ehTf86mDVrVpr+L9Jfgxs3biiKoiixsbFKnTp1lIoVKyqhoaFGfQ8cOKC4ubkpderUUeLi4hRFUZSIiAjDNdePoSiKotPplP/+97+Kq6ur0r9/f0P7vHnzDNdNq9UqQ4cOVVxdXZWJEycqOp3OaL6cvt4CAgKM4vj6668Nc7xMRu+J+vXrK66urkpycrKiKM/2xNXVVVm2bJmhX0JCguLl5aW4uroqzZo1M3p/z5kzR3F1dVUWLFhgaJs6dari6uqqzJgxw2j99+7dU7y9vRV3d3fl7t27L41bCCGEEO8vKX8hhBBCCPEadenSxagubc2aNQFwdHSkffv2hnY7OzucnZ1JTk7m/v37AGzbtg2NRsOAAQMoWbKk0bgDBw7EwcGBbdu2GW7o1axZMyZPnmw0LoCJiYlh3qioqDQx+vv7Y2NjY/jaxcWFsmXLEhMTk6WP62fEy8sLDw8Pozj0pQKuX7+e43Fzoly5cjRp0sSorWHDhgBGpRQURUGj0fDHH38Y9Z04cSJhYWF8/PHHOZp/9+7dJCUl0a9fP5ydnQ3tpqamjB49mkGDBmFra8vDhw85cOAAH374Id27d0+zho4dOxIdHU1wcDAAOp0OgAsXLhjd2K1u3brs37+fBQsWGK3t0aNH3Lx509BmYmLC/PnzOX78OJUrV87R2t6EkJAQoqKiaNu2LT4+PkaPNWzYkObNmxMVFcWBAweA1LIeACNGjDCcvgVQqVSMGDECJycnQkNDuXv3rtFYOp2OMWPGsHfvXnr27MnkyZNRqVSvHH+pUqXo27dvmjjs7e0JCgpKU+7kVVlbWxuVHrGwsDDsZ/fu3Y3e3/r35O3btwFISUlh48aNODg4MGLECKP1FylShL59+5KUlMT27dtfa8xCCCGEeLdI+QshhBBCiNfogw8+MPra2toagJIlS6ZJXllaWgLPbpJ24cIFw//nz5+fZmwrKyu
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plotter2(tests[2], data)"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABX8AAAGHCAYAAADoXCGRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdeViUVfvA8e9s7CDgiqCJyAAKiuaSu+KWa265lVtmLpmV2fKrTK3srSy1xfdVS99yN9PcFxRU3DfcM9wVdwUBWYeZeX5/8DI6AQooDuH9uS4v5cyZc+7zPOOgN2fuo1IURUEIIYQQQgghhBBCCCFEiaK2dQBCCCGEEEIIIYQQQgghHj9J/gohhBBCCCGEEEIIIUQJJMlfIYQQQgghhBBCCCGEKIEk+SuEEEIIIYQQQgghhBAlkCR/hRBCCCGEEEIIIYQQogSS5K8QQgghhBBCCCGEEEKUQJL8FUIIIYQQAFy+fJmAgAD69u37SONcvHiRFStWPKaong5Hjx6lT58+hIaG8uyzz/LDDz8UeIywsDACAgIwGo0P7Ld3714CAgIYO3ZsYcMtsICAAJo1a/bE5isos9nM4sWLuX37tqVt+fLlBAQEMHXqVBtGJoQQQgjxaLS2DkAIIYQQQhQPbm5ujBo1Ci8vr0KPceLECXr37k2nTp3o2rXrY4yu5DKZTIwcOZJbt27Rvn17KleuTP369W0d1lPlrbfeYuPGjTRp0sTSFhQUxKhRo6hbt64NIxNCCCGEeDSS/BVCCCGEEEBW8veNN954pDESExPJzMx8TBE9HW7evMmtW7fw9/dn2rRptg7nqXTr1q0cbUFBQQQFBdkgGiGEEEKIx0fKPgghhBBCCGFDBoMBAA8PDxtHIoQQQgghShpJ/gohhBBCPMQHH3xAQEAAV69e5ZtvvqFFixaEhITQsWNHS23bffv28dJLLxEaGkrz5s2ZOHEiycnJOcY6evQor7/+Og0aNCA4OJh27doxbdo0UlJScvS9ffs2X3/9NZ06daJ27doEBwcTFhbGxx9/zPXr16369u/fn9q1a5OYmMhnn31Gs2bNLOPPmDEDk8n00HXmVvM3u+7phg0bWL58OV27dqVmzZo0aNCAd955h9jYWKvrNHjwYAD++OMPAgICWL58+QPnzI63ffv21KxZk/r16zNw4EA2bdpk1e+HH34gICCApUuX5hhj6tSpuc6VkpLC999/T4cOHahVqxbNmjVj9OjRxMTE5Bhj7969DB8+nIYNG1K7dm26dOnCr7/+aknM3h/v5MmTadu2LcHBwTz33HOMHj2av/76K8eY165d44MPPqBt27aEhITw3HPPMXz4cPbu3Wvp079/f9q2bQtkvYYCAgIICwuzXM+AgAB27dqVY+yxY8cSEBBgNdajMplMLFiwgB49ehAaGkpoaCg9evRgwYIFmM3mHP2TkpKYPHky7dq1Izg4mHr16jFkyBB27NiRr/l2795NrVq1qFevHkePHgUKfp/79+9P9erVSUxM5KOPPqJBgwbUqVOHvn37EhER8dAYsl/z0dHRALRq1cpy/XOr+Wur9wIhhBBCiMKSsg9CCCGEEPk0atQobt26Rbt27UhLS2PlypW8//77nDp1irlz59KsWTP69etHZGQkCxcuJD09nX/961+W569bt453330XnU5HmzZtKF++PNHR0fznP/9hy5YtLFiwABcXFyDrY+g9evTg9u3bNG/enBYtWpCSksLOnTtZunQpu3fvZt26ddjb21vGNxqN9O/fn4SEBFq2bIlGo2HNmjVMnTqVtLQ03n777UKvffbs2fz555+0atWKxo0bs3v3btasWcOhQ4fYuHEjOp2O1q1bYzabWblyJYGBgbRu3fqBH5s3GAwMHTqU48eP07JlS1q3bk1CQgIbNmxg1KhRTJo0iZ49exYq3sTERPr27cvZs2epXr06vXr1IiEhgfXr17N9+3bmzp1LSEgIAAsWLODzzz/H3t6eVq1aUa5cOXbs2MEXX3zBkSNH+Pbbb1GpVNy+fZt+/fpx8eJF6tevT6tWrYiPj2fDhg1s3bqVf//735aasXfu3GHAgAHcuHGDNm3a8Pzzz3P9+nU2btxIVFQUP/30E40bN6Zbt24EBAQwb948vL296datG66uroVa86PIzMzk9ddfZ9u2bVSsWJHOnTujUqmIiori008/Zfv27UyfPh2NRgPA9evX6devH1euXKFGjRr069ePuLg4IiMj2bFjB2PHjmXo0KF5zrd//35GjBiBg4MDc+bMoUaNGoWOXVEUBg8ezLVr1+jcuTMpKSmEh4czcuRI/u///o9Bgwbl+dzsOtfLli3j2rVrDBgwAG9v74fO+STfC4QQQgghHokihBBCCCEe6P3331f0er3SsmVLJT4+3tL+yy+/KHq9XtHr9crSpUst7UlJSUrt2rWVGjVqKCaTSVEURbl165ZSq1YtpVGjRsqlS5esxv/hhx8UvV6vTJgwwdL2+eefK3q9Xlm8eLFVX6PRqHTv3l3R6/XK9u3bLe0vv/yyotfrlV69einJycmW9tOnTytBQUFK/fr1FaPR+MB1xsbGKnq9XunTp4+lbdmyZYper1dq1KihHDp0yCqOvn37Knq9XgkPD7e079y5U9Hr9cr777//wLkURVG2bNmi6PV6ZcqUKVbtZ86cUQIDA5X27dtb2r7//ntFr9crv/32W45xpkyZouj1emXZsmWWtnHjxil6vV6ZNGmS5R4oiqLs2LFD0ev1yssvv2xZc3BwsNKoUSPlzJkzln6ZmZmWa7pnzx5FURRl1KhRil6vV+bPn281/6lTp5TQ0FDlueeeU1JTUxVFUZT58+fnGu/27dsVvV6vvPrqq5a2CxcuWMWULft1t3Pnzhxrfuedd6xiUxRFadmypaLX65XMzMwc/e+3Z88eRa/XK++8846l7aefflL0er0yZMgQ5e7du5b2u3fvWq7Dzz//bGkfOnSootfrlalTpypms9nSfu7cOaVx48ZKQECAcuTIEUu7Xq9XmjZtqiiKohw8eNByvU6ePGkVW0Hvc3ZsLVq0UG7evGkVR7169ZTg4GDl8uXLD7weiqIoffr0UfR6vRIbG2tpy37t3//6tMV7gRBCCCHEo5CyD0IIIYQQ+dSnTx+ruqz169cHoHTp0vTo0cPS7urqip+fH5mZmdy4cQOAFStWkJaWxrBhw6hUqZLVuMOHD8fT05MVK1ZYDktr3749EydOtBoXQKPRWOaNi4vLEePgwYNxdna2fF2tWjV8fX1JSEggPj6+0Gtv3LgxoaGhVnFkfzz+/PnzhRozu5RATEwMaWlplnY/Pz/Cw8MfWjIiLwaDgbVr1+Lu7s7YsWNRq+/9k7dx48a8/fbbtGvXDkVRWLduHQaDgVdffRU/Pz9LP61Wy7vvvsvrr7+Oi4sLt2/fZtOmTVSvXp2XXnrJaj5/f39efPFF4uPjLaUGstd27NgxqwPwmjRpQnh4ONOnTy/U2orK0qVLUavVfP7551Y7Tl1cXJg4cSIqlYrFixcDcOPGDbZt20aVKlV48803UalUlv6+vr6MHj0aRVFYsmRJjnmOHDnC0KFDcXJyYu7cuQQGBj6W+N944w3Kli1rFcegQYMsr4XH7Um+FwghhBBCPAop+yCEEEIIkU9Vq1a1+trJyQmASpUqWSXAABwcHIB7h3kdO3bM8vsPP/yQY2xHR0fi4+O5cOEC/v7+1KlThzp16pCamsrRo0e5dOkSly9fJiYmhj179gDkWof17zECljICf69fWxC5jevm5vZI4zZp0gQ/Pz+2bNlCw4YNqVevHo0aNaJJkyb4+/sXOtbY2FiSk5Np2rQpdnZ2OR4fPny45c8nT54EoE6dOjn61axZk5o1awKwbds2FEXBaDTmev8uX74MwIkTJ+jUqRMdOnRgxowZLFmyhPXr1/Pcc8/RsGFDmjZtyjPPPFPotRWFlJQULly4gK+vLxUqVMjxeNWqVSlbtiyXLl0iOTmZP//8E4AGDRrkeN3DvURodr9sd+/eZciQISQnJxMQEEC1atUe2xoaN26
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABX8AAAGHCAYAAADoXCGRAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdeXyU1fX48c/sS/aN7IEQMhEJEHbZEURUBBFBAQXkh1rcUKhWv22pu611wWJtRautbC4URaogu+yIsisIYU8I2dfJ7DPP74+QkZiwhCUJ8bxfr75anty599z7jBN7OHMelaIoCkIIIYQQQgghhBBCCCGaFXVjByCEEEIIIYQQQgghhBDi8pPkrxBCCCGEEEIIIYQQQjRDkvwVQgghhBBCCCGEEEKIZkiSv0IIIYQQQgghhBBCCNEMSfJXCCGEEEIIIYQQQgghmiFJ/gohhBBCCCGEEEIIIUQzJMlfIYQQQggBQHZ2NmlpaYwdO/aS5jl+/DiLFy++TFH9OuzZs4cxY8aQkZFBly5deOutt+o9x8CBA0lLS8Pj8Zxz3LfffktaWhpPPPHExYZbb2lpafTr16/B1qsvn8/Hxx9/TGFhof/aZ599RlpaGjNnzmzEyIQQQgghLo22sQMQQgghhBBNQ3BwMI888gixsbEXPcePP/7IXXfdxa233sqIESMuY3TNl9fr5aGHHqKgoICbb76ZpKQkunfv3thh/ao8/vjjLF++nD59+vivtW3blkceeYSuXbs2YmRCCCGEEJdGkr9CCCGEEAKoSv4++uijlzRHWVkZbrf7MkX065Cfn09BQQGpqam8+eabjR3Or1JBQUGta23btqVt27aNEI0QQgghxOUjbR+EEEIIIYRoRC6XC4CwsLBGjkQIIYQQQjQ3kvwVQgghhDiPp59+mrS0NHJycnjttdcYMGAA7du3Z+jQof7ettu2bePuu+8mIyOD/v3789xzz2G1WmvNtWfPHh5++GF69OhBeno6Q4YM4c0336SysrLW2MLCQv76179y66230qlTJ9LT0xk4cCB//OMfyc3NrTF2/PjxdOrUibKyMl544QX69evnn/+dd97B6/Wed5919fyt7nv69ddf89lnnzFixAg6dOhAjx49+O1vf0tWVlaNc5o0aRIAn3/+OWlpaXz22WfnXLM63ptvvpkOHTrQvXt3Jk6cyMqVK2uMe+utt0hLS2PhwoW15pg5c2ada1VWVjJr1ixuueUWOnbsSL9+/Zg6dSoHDhyoNce3337LlClT6NmzJ506dWL48OF8+OGH/sTsmfG++uqr3HjjjaSnp3PdddcxdepUfvrpp1pznjp1iqeffpobb7yR9u3bc9111zFlyhS+/fZb/5jx48dz4403AlXvobS0NAYOHOg/z7S0NDZv3lxr7ieeeIK0tLQac10qr9fL/PnzueOOO8jIyCAjI4M77riD+fPn4/P5ao0vLy/n1VdfZciQIaSnp9OtWzcmT57Mxo0bL2i9LVu20LFjR7p168aePXuA+t/n8ePHc+2111JWVsYf/vAHevToQefOnRk7diyrV68+bwzV7/kdO3YAMGjQIP/519Xzt7E+C4QQQgghLpa0fRBCCCGEuECPPPIIBQUFDBkyBLvdzhdffMFTTz3FwYMHmTNnDv369WPcuHGsWbOGBQsW4HA4+POf/+x//dKlS3nyySfR6XQMHjyY6OhoduzYwT//+U/Wrl3L/PnzCQwMBKq+hn7HHXdQWFhI//79GTBgAJWVlWzatImFCxeyZcsWli5disFg8M/v8XgYP348paWlXH/99Wg0Gr788ktmzpyJ3W5n2rRpF733999/n3379jFo0CB69+7Nli1b+PLLL9m5cyfLly9Hp9Nxww034PP5+OKLL7jmmmu44YYbzvm1eZfLxf33388PP/zA9ddfzw033EBpaSlff/01jzzyCC+99BKjRo26qHjLysoYO3Yshw8f5tprr+XOO++ktLSUZcuWsWHDBubMmUP79u0BmD9/Pi+++CIGg4FBgwbRokULNm7cyMsvv8zu3bt5/fXXUalUFBYWMm7cOI4fP0737t0ZNGgQxcXFfP3113zzzTf84x//8PeMLSkpYcKECeTl5TF48GBuuukmcnNzWb58OevXr+e9996jd+/e3H777aSlpTF37lzi4+O5/fbbCQoKuqg9Xwq3283DDz/MunXriIuLY9iwYahUKtavX8/zzz/Phg0bePvtt9FoNADk5uYybtw4Tp48Sbt27Rg3bhxFRUWsWbOGjRs38sQTT3D//fefdb3vvvuOBx98EKPRyAcffEC7du0uOnZFUZg0aRKnTp1i2LBhVFZWsmLFCh566CH+7//+j3vvvfesr63uc71o0SJOnTrFhAkTiI+PP++aDflZIIQQQghxSRQhhBBCCHFOTz31lGKxWJTrr79eKS4u9l//z3/+o1gsFsVisSgLFy70Xy8vL1c6deqktGvXTvF6vYqiKEpBQYHSsWNHpVevXsqJEydqzP/WW28pFotFefbZZ/3XXnzxRcVisSgff/xxjbEej0cZOXKkYrFYlA0bNviv33PPPYrFYlHuvPNOxWq1+q9nZmYqbdu2Vbp37654PJ5z7jMrK0uxWCzKmDFj/NcWLVqkWCwWpV27dsrOnTtrxDF27FjFYrEoK1as8F/ftGmTYrFYlKeeeuqcaymKoqxdu1axWCzKG2+8UeP6oUOHlGuuuUa5+eab/ddmzZqlWCwW5dNPP601zxtvvKFYLBZl0aJF/mszZsxQLBaL8tJLL/nvgaIoysaNGxWLxaLcc889/j2np6crvXr1Ug4dOuQf53a7/We6detWRVEU5ZFHHlEsFosyb968GusfPHhQycjIUK677jrFZrMpiqIo8+bNqzPeDRs2KBaLRbnvvvv8144dO1YjpmrV77tNmzbV2vNvf/vbGrEpiqJcf/31isViUdxud63xZ9q6datisViU3/72t/5r7733nmKxWJTJkycrFRUV/usVFRX+c/jXv/7lv37//fcrFotFmTlzpuLz+fzXjxw5ovTu3VtJS0tTdu/e7b9usViUvn37KoqiKNu3b/ef1/79+2vEVt/7XB3bgAEDlPz8/BpxdOvWTUlPT1eys7PPeR6KoihjxoxRLBaLkpWV5b9W/d4/8/3ZGJ8FQgghhBCXQto+CCGEEEJcoDFjxtToy9q9e3cAIiIiuOOOO/zXg4KCSElJwe12k5eXB8DixYux2+385je/ITExsca8U6ZMITw8nMWLF/sflnbzzTfz3HPP1ZgXQKPR+NctKiqqFeOkSZMICAjw/7lNmzYkJydTWlpKcXHxRe+9d+/eZGRk1Iij+uvxR48evag5q1sJHDhwALvd7r+ekpLCihUrztsy4mxcLhdfffUVoaGhPPHEE6jVP/8rb+/evZk2bRpDhgxBURSWLl2Ky+XivvvuIyUlxT9Oq9Xy5JNP8vDDDxMYGEhhYSErV67k2muv5e67766xXmpqKqNHj6a4uNjfaqB6b3v37q3xALw+ffqwYsUK3n777Yva25WycOFC1Go1L774Yo2K08DAQJ577jlUKhUff/wxAHl5eaxbt45WrVrx2GOPoVKp/OOTk5OZOnUqiqLwySef1Fpn9+7d3H///ZjNZubMmcM111xzWeJ/9NFHiYqKqhHHvffe638vXG4N+VkghBBCCHEppO2DEEIIIcQFat26dY0/m81mABITE2skwACMRiPw88O89u7d6//vt956q9bcJpOJ4uJijh07RmpqKp07d6Zz587YbDb27NnDiRMnyM7O5sCBA2zduhWgzj6sv4wR8LcR+GX/2vqoa97g4OBLmrdPnz6kpKSwdu1aevbsSbdu3ejVqxd9+vQhNTX1omPNysrCarXSt29f9Hp9rZ9PmTLF/7/3798PQOfOnWuN69ChAx06dABg3bp1KIqCx+Op8/5lZ2cD8OOPP3Lrrbdyyy238M477/DJJ5+wbNkyrrvuOnr27Enfvn1p2bLlRe/tSqisrOTYsWMkJycTExNT6+etW7cmKiqKEydOYLVa2bdvHwA
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plotter2(tests[3], data)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABYoAAAGHCAYAAAAeOWZMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3xUVfr48c/0mfTeSSAkE5CEXiWINFERCwKiKNZVV/my6q6ru/u1reu6llV/uLvK+rWCiihSRJCO9Bp6l5pA+qRNydT7+yNmJCaUQEICPO/Xyxfm3HvPfc65kwSeOfMclaIoCkIIIYQQQgghhBBCCCGuWOqWDkAIIYQQQgghhBBCCCFEy5JEsRBCCCGEEEIIIYQQQlzhJFEshBBCCCGEEEIIIYQQVzhJFAshhBBCCCGEEEIIIcQVThLFQgghhBBCCCGEEEIIcYWTRLEQQgghhBBCCCGEEEJc4SRRLIQQQgghLhvHjh1j9uzZ53z+4MGDycjIwOPxNGNUF+aaa64hIyPjvK9/9913ycjI4Ouvvz7vPnw+H9OnT6ekpMTf9u2335KRkcHbb7993v02FZfLxZQpU+q0NcW4hRBCCCGuJJIoFkIIIYQQl4Xdu3czYsQI1q9ff87XTJgwgYkTJ6JWy1+Lz+SJJ57ghRdeoLq62t/WsWNHJk6cSN++fVswshrjxo3jrbfeqtPWu3dvJk6cyFVXXdVCUQkhhBBCXFq0LR2AEEIIIYQQTaGiogK3292oa+67777mCeYyU1xcXK+tY8eOdOzYsQWiqe/Ulc61+vTpQ58+fVogGiGEEEKIS5MsnRBCCCGEEEIIIYQQQogrnCSKhRBCCCEuQc8++ywZGRmcPHmSN998k2uvvZasrCxGjBjhr9G7ceNGxo8fT9euXRk4cCAvvfQSVqu1Xl87duzg8ccfp0+fPmRmZjJ8+HDeeecdbDZbvXNLSkp4/fXXuemmm+jWrRuZmZkMHjyY//3f/6WgoKDOuffccw/dunWjoqKCl19+mWuuucbf//vvv4/X6z2nsebn5/Pss89y3XXXkZWVRd++fXn00UfZsGFDnfm4//77AZg1axYZGRl8++23QE0d4ptuuonly5czePBgsrKyGDNmDF6vt16N4ry8PDIyMvjrX/9KTk4O999/P927d6dbt25MmDChzj1ruVwu3nvvPa6//no6d+7M4MGDeffdd1m3bh0ZGRm8++675zTOffv28T//8z/069ePbt268eCDD7J///7Tnt+Y59aQiooK3njjDa677joyMzPp27cvkyZNYt++ff5zaucjJycHgCFDhjB48GDg9DWKnU4n77//PiNHjqRz5850796d8ePH8/3339eLofbZFBQU8Mc//pF+/fqRlZXFzTffzPTp0886hg0bNpCRkUFhYSEAGRkZ3HPPPUDDNYprX5NlZWU8//zz9O/fny5dujBq1Ch+/PFHABYtWsSoUaPo0qULQ4YM4Z133sHlctW79+rVq3nggQfo1asXnTt3ZuTIkXz44YeNXtUuhBBCCNFaSOkJIYQQQohL2MSJEykuLmb48OE4HA7mzJnDM888w4EDB/jss8+45ppruOuuu1i2bBlffPEF1dXVvPrqq/7r58+fz9NPP41Op2PYsGHExsaSk5PDe++9x/Lly/n8888JCgoCasoP3H777ZSUlDBw4ECuvfZabDYba9as4euvv2bdunXMnz8fg8Hg79/j8XDPPfdQXl7OoEGD0Gg0zJs3j7fffhuHw8GTTz55xvGVlZUxYcIECgsLGTZsGNdffz0FBQUsXLiQlStX8sEHH9C/f3+GDh2Kz+djzpw5dOjQgaFDh9Ypi1BYWMgTTzzBkCFDiIiIwGQyodFoTnvfnJwcZsyYQdeuXbnjjjs4evQoy5YtIycnh9mzZ5OWlgaA1+vlkUceYe3ataSlpTFu3DjKysqYMmUK33333Tk/xy1btvDQQw/hdDoZOnQosbGxrFu3jvHjxzeYUG/Mc2tISUkJd911F8eOHaN3794MGTIEi8XCDz/8wIoVK/jPf/5DdnY2ISEhTJw4kZkzZ5Kfn8+ECRNITEw8bb9Wq5UJEyawe/duUlNTGTNmDDabjRUrVvDUU0+xefNmXnjhhTrXVFRUcMcdd2A0GhkxYgR2u53vv/+eF154AbVazdixY097v8TERCZOnMjHH3+MzWZj4sSJZ4wPal6Td999N263m5tvvpnCwkLmz5/PY489xr333stnn33G8OHD6dOnD99//z3vvfceWq2WiRMn+vv46KOPeO211wgLC2PYsGGEhYWxZs0aXn/9ddauXcuUKVPQauWfWkIIIYS4xChCCCGEEOKS88wzzyhms1kZNGiQYrFY/O2ffPKJYjabFbPZrHz99df+9srKSqVbt25Kp06dFK/XqyiKohQXFytdunRRrr76auX48eN1+n/33XcVs9msvPjii/62v/3tb4rZbFamT59e51yPx6OMGjVKMZvNyqpVq/ztd999t2I2m5WxY8cqVqvV337w4EGlY8eOSu/evRWPx3PGcU6bNk0xm83KjBkz6rSvWrVKMZvNykMPPeRvW7NmjWI2m5VnnnmmzrmDBg1SzGaz8o9//KNe/7XH3G63oiiKkpub65+/Dz/8sM65b775pmI2m5WXX365XnyPP/644nQ6/e2bN29WOnbsqJjNZmXy5MlnHKPP51NuuOEGpWPHjsrKlSv97U6nU/nd737nj6dWY5/b5MmT683hxIkTFbPZrEybNq3O9QcOHFC6du2q9O3bV7Hb7f72cePGKWazWcnNzfW3zZw5UzGbzcpbb73lb3vxxRcVs9msPPvss3Xmo7CwULnxxhsVs9msLFiwwN9eO/8TJ05UXC6Xv33lypWK2WxWRo4ceca5qzVgwIA6c3S6cde+JkePHq04HA5/+yuvvOKf57Vr1/rbjx8/rpjNZmXo0KH+tr179yodOnRQbrzxRqW0tNTf7vP5lD/96U+K2WxWPvjgg3OKWwghhBCiNZHSE0IIIYQQl7Bx48YRHh7u/7p3794AREZGcvvtt/vbg4ODad++PW632/8x/dmzZ+NwOHjkkUdo06ZNnX4fffRRIiIimD17tv+j9DfccAMvvfRSnX4BNBqN/76lpaX1Yrz//vsJDAz0f52Wlka7du0oLy/HYrGccXw+nw+AnTt31vlIf3Z2NosWLeLf//73Ga8/1U033XTO5wYHBzNhwoQ6bcOGDQPgyJEj/raZM2eiVqv585//jF6v97f36NGDm2+++ZzutXPnTg4dOsTgwYMZMGCAv12v1/P888/XW5na2Of2ayUlJSxevJirrrqK8ePH1zmWnp7OmDFjsFgsLF269Jzir+V2u5k9ezbBwcE8//zzdeYjJiaGP//5zwANlpR4+OGH0el0/q+zs7MJCAioM9dN6b777sNoNPq/rn39ZmVl0a9fP397mzZtiIyM5OTJkyiKAsBXX32Fz+fjqaeeIiIiwn+uSqXimWeeQa1W1yl3IYQQQghxqZDPQwkhhBBCXMJSU1PrfB0QEADUJLhUKlWdY7WJsdp6qzt37vT/2VAdXZPJhMVi4ejRo6Snp9O9e3e6d++O3W5nx44dHD9+nLy8PPbv38/69euBXxK7Z4oRahKxp8ZyOjfeeCPvv/8+X331FQsWLKBv377069ePAQMGkJKScsZrf60x5ycnJ9dL0IaEhNSJ2eVysWfPHuLj40lISKjXR69evZg1a9ZZ77V7924AunTpUu9YREQEqampHDhwwN/W2OfW0P0URcHj8TR4fV5env+8xiTXjxw5gt1uJzs7G5PJVO94r169UKvV7Nmzp96xX79GVCoVQUFBFBUVnfP9G+N03zfJycn1zjUajZSWluL1etFqtf75X7t2bYNjCQwM5OjRo9hstjpvkAghhBBCtHaSKBZCCCGEuITVJrh+7dTVnKdTWVkJwNy5c894XkVFBQA2m4233nqLmTNn4nA4gJrkaefOnUlLSyMnJ8e/6vJUp9YsrlWbxG7o/FNFRkby7bff8t///pfFixezaNEiFi1aBEC
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plotter2(tests[4], data)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABYoAAAGHCAYAAAAeOWZMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3xUVf7/8dfcmUkmyaQnhBp6QguQCFICohSxoCIqoFgW+6rfdV31567uru7iWnbtrqtgBxVEqSIqVaUjTZr0mkBCei9T7u+PkGiEICXJBHg///HBnXPP+ZxzMwQ/c+ZzLKZpmoiIiIiIiIiIiIjIecvwdQAiIiIiIiIiIiIi4ltKFIuIiIiIiIiIiIic55QoFhERERERERERETnPKVEsIiIiIiIiIiIicp5TolhERERERERERETkPKdEsYiIiIiIiIiIiMh5ToliERERETmr7d+/n5kzZ550+4EDBxIfH4/b7a7DqM6eOE5VeXk548ePr3bt9ddfJz4+ns8++8xHUf2ssLCQ999/v9q1P//5z8THx7N8+XIfRSUiIiLS8Nl8HYCIiIiIyOnasmULo0aNYtiwYQwfPvyk7rn11lspKCjAMHy7Z6KhxHGqRo8ezZYtW7jnnnuqrl144YU88MADdOrUyYeRgdfr5dJLL8XhcDB27Niq64MHD6ZZs2a0aNHCh9GJiIiINGxKFIuIiIjIWSsvLw+Xy3VK9/zud7+rm2BOUUOJ41RlZmYec61Xr1706tXLB9FU5/V6ycrKolmzZtWuDx48mMGDB/soKhEREZGzw9m1fUFEREREREREREREap0SxSIiIiJnico6q4cOHeKFF17g4osvJiEhgSuvvLKqRu/q1asZM2YM3bt3Z8CAAfzjH/+gsLDwmL42btzI/fffT69evejSpQtDhw7llVdeoaio6Ji2mZmZ/Pvf/2bYsGEkJibSpUsXBg4cyF//+lfS0tKqtb3llltITEwkLy+PcePGcdFFF1X1/9Zbb+HxeE5qrocPH+bPf/4zl156KQkJCfTu3Zt7772XVatWVVuPyvICM2bMID4+nunTpwMV9X+HDRvG4sWLGThwIAkJCdxwww14PJ5jagOnpKQQHx/PP//5T9atW8fYsWNJSkoiMTGRW2+9tdqYlcrLy3nzzTe57LLL6Nq1KwMHDuT1119nxYoVxMfH8/rrr//mHGsjjjVr1nD33XdXrfMll1zC448/zsGDB49pm56ezpNPPsnFF19Mly5d6NevH3/5y19ISUmp1m7VqlXEx8czYcIExo0bR2JiIj169OCdd94hPj6e9PR0AOLj47nllluAmmsU5+fn85///IehQ4fSpUsXevbsyR133MHSpUuPiS8+Pp577rmHXbt2cf/999OzZ0+6devGyJEj+eabb35zPadPn07nzp0BSE1NJT4+nj//+c/A8WsUV/6MpKam8vDDD9OrVy8SExMZM2YMGzduBODTTz/lyiuvpGvXrgwdOpQPP/wQ0zSPGXvOnDnceOONJCYm0r17d66//voGUa9ZRERE5FSo9ISIiIjIWeaBBx4gIyODoUOHUlJSwqxZs3jsscfYsWMHEydO5KKLLuKmm25i0aJFfPLJJ5SWlvLss89W3T937lweffRR7HY7Q4YMISYmhnXr1vHmm2+yePFiPv74Y5xOJwAZGRlcd911ZGZmMmDAAC6++GKKiopYtmwZn332GStWrGDu3Ln4+/tX9e92u7nlllvIzc3lkksuwWq1MmfOHF5++WVKSkp46KGHTji/nJwcbr31VtLT0xkyZAiXXXYZaWlpfPPNN3z//fe8/fbbJCcnM3jwYLxeL7NmzaJDhw4MHjyYjh07VvWTnp7OH//4RwYNGkRERAQBAQFYrdYax123bh1Tp06le/fujBo1in379rFo0SLWrVvHzJkzadeuHQAej4d77rmH5cuX065dO0aPHk1OTg7jx4/niy++OK1nejpxbNiwgTvuuIOgoCAGDx5MaGgo27dvZ/r06SxatIg5c+YQFRUFwO7du7nlllvIzs7moosu4sorryQlJYVZs2axaNEiPvjgg2prBzBx4kS8Xi+jRo3i0KFDJCYm8sADD/D+++9TVFTEAw88cEyJh19KS0vjpptuIjU1lc6dO3PTTTeRlZXFokWLWLp0KY888gh33XVXtXv279/PqFGjaNmyJddddx0ZGRl89dVX/OEPf+Ddd9+lX79+NY7XsWNH7rvvPv73v/8RHBzMbbfddsycfi03N5dRo0YRHR3Nddddx+7du/n222+5/fbbueqqq5g5cyaXX345ffr0Yfbs2TzzzDOEhoZWq4f99NNPM2nSJJo0acJVV11FQEAAixcv5q9//Svr16/nmWeeOWEMIiIiIg2GKSIiIiJnhccee8yMi4szL7nkEjM7O7vq+gcffGDGxcWZcXFx5meffVZ1PT8/30xMTDQ7d+5sejwe0zRNMyMjw+zWrZvZt29f88CBA9X6f/311824uDjzqaeeqrr29NNPm3FxceaUKVOqtXW73eaIESPMuLg4c8mSJVXXb775ZjMuLs4cOXKkWVhYWHV9586dZseOHc0LL7zQdLvdJ5znRx99ZMbFxZlTp06tdn3JkiVmXFyceeedd1ZdW7ZsmRkXF2c+9thj1dpecsklZlxcnPncc88d03/lay6XyzRN0zx48GDV+r377rvV2r7wwgtmXFycOW7cuGPiu//++82ysrKq62vWrDE7duxoxsXFma+99toJ51gbcfzf//2fGRcXZ+7bt69a2xdffNGMi4szJ0yYUHXt2muvNTt06GAuWrSoWtsVK1aYHTp0MIcNG2Z6vV7TNE1z5cqVZlxcnBkfH29u27btmLj79+9vxsXFVbv22muvHfPM7rrrLjMuLs58+eWXq/o2TdPcs2ePmZycbMbHx5s//vhj1fXKuY8bN65a+8mTJ5txcXHmvffeW8NK/szlclW9R36p8r2zbNmyqmuV63/fffdVvT9M0zTvu+8+My4uzuzcubO5a9euquvLly834+LizNtuu63q2sKFC824uDjzlltuMYuKiqqul5WVmbfffrsZFxdnzp079zfjFhEREWkIVHpCRERE5CwzevRowsPDq/584YUXAhAZGcl1111XdT04OJi2bdvicrmqygXMnDmTkpIS7rnnHlq0aFGt33vvvZeIiAhmzpxZdUDc5Zdfzj/+8Y9q/QJYrdaqcbOyso6JcezYsQQFBVX9uV27drRu3Zrc3Fyys7NPOD+v1wvApk2bqh1U169fP+bNm8cbb7xxwvt/adiwYSfdNjg4mFtvvbXatSFDhgCwd+/eqmvTpk3DMAwef/xx/Pz8qq5fcMEFXH311Sc93pnGYR4tgbB+/fpqbe+55x6+++477rjjDqCizMiWLVsYNGgQl1xySbW2vXv3ZuDAgezYsYMNGzZUe619+/bEx8ef1hzS09P57rvvaNWqFQ8++CAWi6XqtdatW/OHP/wB0zT59NNPj7n3vvvuq9b+0ksvBarPvTbdddddGMbP/1vUs2dPAAYNGkTbtm2rricmJgJUK9UxZcoUAB5//HECAwOrrvv5+fHoo48C8Pnnn9dJ3CIiIiK1TaUnRERERM4ybdq0qfbnygRVixYtqiXYABwOB1BRUxcqkq+V/z1eHd2AgACys7PZt28f7du3JykpiaSkJIqLi9m4cSMHDhwgJSWF7du3s3LlSuDnxO6JYoSKBOgvY6nJFVdcwVtvvcWnn37KV199Re/evenTpw/9+/enZcuWJ7z3106lfWxsLDZb9X8eh4SEVIu5vLycrVu30qRJE5o2bXpMHz179mTGjBmnFOPpxAFw0003sXDhQh577DFeffVV+vbtS9++fUlOTqZx48ZV7SqfeXZ29nGfeX5+PgBbt26tSobCqa3dr23duhWAXr16HfMzCT9/uFHZrlJYWBgRERHVrp3sz83p+vXPauUHHLGxsdWu//q9BD+v7ddff838+fOrtfd6vVgsFrZs2VLrMYuIiIjUBSWKRURERM4yv9y5+Eu/3N1ak8qk4OzZs0/
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABZUAAAGHCAYAAADInLwpAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdeVyU1f7A8c8zGyA7qCyCuwO4o+C+L5mpue9Z2qJes2y9de/velu0rG5lZYuWpallZS65r4i7qYlolvuOigriAgOzPb8/iMkRUFBgEL/v18tXcZ7zPOd7njPDMN85c46iqqqKEEIIIYQQQgghhBBCCFEAGlcHIIQQQgghhBBCCCGEEOLeIUllIYQQQgghhBBCCCGEEAUmSWUhhBBCCCGEEEIIIYQQBSZJZSGEEEIIIYQQQgghhBAFJkllIYQQQgghhBBCCCGEEAUmSWUhhBBCCCGEEEIIIYQQBSZJZSGEEEIIcd84efIkixYtKnD9Dh06EBERgdVqLcao7p04CstsNjNt2jSnsilTphAREcG8efNcFNXfrl+/zowZM5zKXn31VSIiIti6dauLohJCCCGEKP10rg5ACCGEEEKIkrB//34GDhxI9+7d6dWrV4HOefTRR7l27RoajWvnYpSWOApr0KBB7N+/n1GjRjnKmjRpwtixY6ldu7YLIwO73c4DDzyAu7s7I0aMcJR36tSJSpUqER4e7sLohBBCCCFKN0kqCyGEEEKI+8KVK1ewWCyFOmf48OHFE0whlZY4CuvSpUu5ypo2bUrTpk1dEI0zu91OSkoKlSpVcirv1KkTnTp1clFUQgghhBD3hntrqoMQQgghhBBCCCGEEEIIl5KkshBCCCFEGZSzLuzZs2d5//33adeuHfXq1aNbt26ONYV37NjB0KFDadiwIW3btuWNN97g+vXrua61d+9enn76aZo2bUrdunXp0qULH330Eenp6bnqXrp0iffee4/u3bsTHR1N3bp16dChA//5z384f/68U91hw4YRHR3NlStXmDBhAm3atHFcf+rUqdhstgL19dy5c7z66qs88MAD1KtXj2bNmjF69Gh+/fVXp/uRs8TBwoULiYiIYMGCBUD2esXdu3dn/fr1dOjQgXr16tG/f39sNluutYzPnDlDREQEb775Jrt372bEiBE0atSI6OhoHn30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
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plotter2(tests[5], data)"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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lSpV4o033sDc3JywsDDWrFnDoUOHCAoKomTJkowePZqQkBBOnz5N27ZtqVOnDo0aNXoxNyIXLl++zIABA4iOjsbd3Z0OHToQHh7O/v37OXDgAHPmzKFr166G/oGBgXz00Ueo1Wo8PT2pXLky58+fZ8OGDezevZtVq1ah1WqznG/WrFn4+fnRsmVLvvvuO6Pvzdy6cOEC27dvx8nJiX79+nHx4kUCAgI4dOgQ69evp0aNGlme26hRI3x8fFi7di1VqlQx1FHOzo0bN/D29sbJyYk+ffoQFhbGoUOH+OOPP3BxceH48eN06NABRVHYvn07EydOpGLFiri7uwOg1+sZO3YswcHB1KxZk169eqHX69m7dy+jRo1izJgxjB49Os/XQwghhBD/EYoQQgghhDCYPHmyotVqlTZt2ihRUVGG9lWrVilarVbRarXKli1bDO0xMTGKq6ur4uTkpOh0OkVRFOXBgweKi4uL4uHhody6dcto/G+//VbRarXKzJkzDW2zZs1StFqtsmnTJqO+qampipeXl6LVapXDhw8b2vv3769otVqld+/eSmxsrKH96tWrSp06dZRGjRopqamp2a5z3bp1ilarVTZv3mzUfvjwYUWr1SrDhg0ztB09elTRarXK5MmTjfq2adNG0Wq1ypw5czKMn34sJSVFURRFuX37tuH6rVixwqjv/PnzFa1Wq3z22WcZ4hs1apSSlJRkaD99+rRSp04dRavVKosWLcp2jZnF8awWLVooWq3W8HVuYxwzZoyi1WqVGzduGPVdsGCBotVqle+//z5PcTx58kRp3LixUq9ePeX06dNGfSdMmKBotVrF399fURRFmT17tqLVapV58+Yper3e0O/+/ftKixYtlLp16yr37t1TFEVRDhw4oGi1WuWrr74yGvPatWtK7dq1lU6dOhnavLy8lPr16ysxMTFGfcePH69otVrlp59+MrR99dVXRjGl02q1SosWLTKsNyUlxfA9li4kJETRarXKhAkTMvT/p/Tv0aNHjyqKoig6nU7p0qWLotVqFT8/P6O+oaGhSr169RRnZ2fDdbh7967i7OysuLm5KefOnTPqv3r1akWr1SpdunQxXE9/f3+j6/bFF18oWq1WGTFihNGzqSh5f96mTZtm1PfHH39UtFqtMnTo0Odejxs3biharVbp37+/UXv6z4lnn8/0+Z59jvV6vdK9e3dFq9UqjRs3Vh48eGA4tmXLFkWr1SofffSRoW3NmjWGe5WcnGxoj4mJUd58803F0dFRCQsLe27cQgghhPhvk/IXQgghhBCZ8Pb2NqoRm777r2zZsvTo0cPQbmNjg729PSkpKYY/mw8MDCQhIYERI0ZQtWpVo3FHjhyJra0tgYGBhpffderUiU8++cRoXACNRmOYNzIyMkOMgwcPpkSJEoavHRwcqFGjBtHR0URFRWW7Pr1eD8D58+eNXsLXvHlz9uzZw+LFi7M9/1ldunTJcV8bGxsGDBhg1Na+fXsA/vzzT0Obv78/arWajz76CDMzM0O7m5sbb775Zo7ny4ucxqgoCgBnz5416jtixAh++eWXPL+07tChQzx69IhevXrh5uZmdGzs2LGMHDmSKlWqoNPp2LJlC7a2towbNw6VSmXoV6FCBYYOHUpycjLbt28Hnt7zy5cvk5CQYOhrb2/Pnj1
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plotter2(tests[6], data)"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABYoAAAGHCAYAAAAeOWZMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd5hU9dn/8fcpc6bPdnaXruCsCCwsUlRAEbGLUROjRkV9HltiSbBEfkbURKOiRg3GREw0ikZUAmL0sSDFioIEbKB0FpayfXqfOb8/hh1Yl7JIVe7Xdc21u2fOfM99zpkdruvDd++vYpqmiRBCCCGEEEIIIYQQQohDlnqgCxBCCCGEEEIIIYQQQghxYElQLIQQQgghhBBCCCGEEIc4CYqFEEIIIYQQQgghhBDiECdBsRBCCCGEEEIIIYQQQhziJCgWQgghhBBCCCGEEEKIQ5wExUIIIYQQQgghhBBCCHGIk6BYCCGEEEK0S3V1NTNmzGj3/iNHjqSiooJUKrUPqxLtVV1dzf/8z/9QVVVFVVUVt99++26Pcemll1JRUUF1dfVO96upqaGiooKLLrro+5a7234I77e3336b5cuX536eP38+FRUV3HLLLQewKiGEEEKILP1AFyCEEEIIIQ5+S5Ys4YILLuCss87inHPOaddrxowZQzAYRFVlbsLB4Oabb+arr75i2LBh9O7dm759+x7okg4pEyZM4JlnnmHy5Mm5bZ06deL666+noqLiAFYmhBBCCJElQbEQQgghhNglv99PMpncrddcfvnl+6YY8b0sXboUl8vFU089haZpB7qcQ059fX2bbZ07d+aGG244ANUIIYQQQrQl0zuEEEIIIYT4kUulUqTTafLy8iQkFkIIIYQQ2yVBsRBCCCHEd4wbN46Kigo2btzIww8/zIgRI+jbty9nnnlmrkfvggULuPjii+nfvz8nnHACv//97wmFQm3G+vLLL7nuuusYMmQIffr04dRTT+Wxxx4jHA632behoYEHH3yQs846i6qqKvr06cPIkSO544472Lx5c6t9L730UqqqqvD7/dxzzz0cf/zxufGffPJJ0ul0u85106ZNjBs3jlNOOYW+fftyzDHHcO211zJ//vxW1+OKK64A4NVXX6WiooLp06cD2b6wZ511FnPnzmXkyJH07duX888/n3Q63aZnbEvf2j/84Q8sWrSIK664ggEDBlBVVcWYMWNaHbNFIpHgb3/7G6eddhqVlZWMHDmSxx9/nE8++YSKigoef/zxXZ5jPB7n0UcfZfTo0fTv35+jjz6aCy+8kKlTp7bab/r06VRUVPDoo4+2GWPq1KnbPV4ymeSZZ57hnHPOoaqqiqFDh3LllVeycOHCNmMsXbqUm266iWHDhtGvXz9OP/10/vKXv7R5L8TjcZ588knOOussKisrGTRoEFdeeSWfffZZmzFb7v/pp59OZWUlgwcP5rLLLuPdd9/N7TNu3Dh69+4NwIYNG6ioqMi1Onj88cepqKhocy0AHn300Vb3em954403uPjii6mqqqKyspLRo0czadIk4vF4m31brsXo0aOprKxkwIABXHzxxfzf//1fu461bNkyhgwZQt++fZk7dy6w+/e55fOgurqaCRMmMGzYMPr37895553HtGnT2lVHRUUFr7/+OpBtydJy/bfXo7jlnnz++ec89dRTud/NUaNG8cwzz+TO68orr2TAgAEMHTqUm2++ebszllevXs2tt97KsGHDcp8n9957L01NTe2qWwghhBCHFmk9IYQQQgixA9dffz319fWceuqpRKNRXnvtNW677TaWL1/O5MmTOf744/nFL37BnDlzePHFF4nFYtx///2517/55pvceuutWCwWTj75ZEpLS1m0aBF/+9vfmDt3Lv/6179wuVxA9s/Sf/rTn9LQ0MAJJ5zAiBEjCIfDfPzxx0ydOpVPPvmEN998E6vVmhs/lUpx6aWX4vP5OPHEE9E0jTfeeINHH32UaDTK2LFjd3p+zc3NjBkzhtraWk4++WROO+00Nm/ezDvvvMMHH3zA3//+d4YOHcqoUaPIZDK89tprHHnkkYwaNYpevXrlxqmtreU3v/kNJ510EoWFhdjt9p3OWl20aBGvvPIK/fv354ILLmDt2rXMmTOHRYsWMWPGDHr27AlAOp3mmmuuYd68efTs2ZMLL7yQ5uZmJk2alAvd2uOmm25i1qxZDBs2jOOPP55YLMbMmTO544472LhxI7/+9a/bPda2kskkl19+OQsXLqR79+6ce+65JJNJ3njjDcaMGcMTTzzBiSeeCMCsWbMYO3YsmUyGkSNH0rlzZxYvXszjjz/Op59+yjPPPINhGESjUS677DK++OILevfuzUUXXUQkEuGdd95hzJgx/PGPf+S8884DsiH6VVddxddff82JJ57IqFGj8Pl8vP3221x//fX88Y9/5Gc/+xmjRo2ivLycv/71r7jdbi677LLvdb57w/jx43nllVcoLCzk1FNPxeFwMG/ePB555BFmzZrFs88+i9PpBCAUCjFmzBiWLFnC4Ycfzvnnn084HOa9997jpptuYuHChdx11107PNbKlSu54ooriEaj/PWvf2X48OF7VPstt9zCypUrGT16NACzZ8/m9ttvZ9myZbtcGPD6669n5syZLF++nHPPPZdOnTrt8nh/+MMfqKmp4bTTTkPXdWbMmMGECRPYuHEj06ZNo1+/flx44YUsWLCAN954g/r6+lb9jz/77DOuvvpqEokEJ510El27dmXZsmU8//zzuc+ssrKyPbomQgghhPiRMYUQQgghRCu33Xab6fV6zRNPPNFsamrKbX/22WdNr9drer1ec+rUqbntgUDArKqqMnv37m2m02nTNE2zvr7e7Nevn3nccceZ69atazX+448/bnq9XvPuu+/Obbv33ntNr9drvvTSS632TaVS5nnnnWd6vV7zww8/zG2/5JJLTK/Xa/785z83Q6FQbvuKFSvMXr16mYMHDzZTqdROz/OFF14wvV6v+corr7Ta/uGHH5per9e88sorc9s+/vhj0+v1mrfddlurfU888UTT6/WaDzzwQJvxW55LJpOmaZrm+vXrc9fv6aefbrXvww8/bHq9XvOee+5pU991111nxuPx3PaFCxeavXr1Mr1erzlx4sSdnuPy5ctNr9dr3nzzza22NzQ0mAMHDjSrqqpy9U2bNs30er3mI4880macV155pc3xnnzySdPr9Zq//vWvW9X37bffmn369DFHjhxpZjIZMxgMmkOGDDErKyvNhQsXthr35ptvNr1erzlt2jTTNE3z/vvvN71er/nQQw+ZmUwmt9/mzZvN4cOHm3369DE3bdpkmqZpzp07d7v1rly50jzyyCPN008/PbctmUzm3tPbmjhx4nbfA6Zpmo888kir2kxz6/tu7dq1bfbfVsu9vvDCC3Pb3nzzTdPr9ZrnnnuuWV9fn9sej8fNsWPHml6v1/z973+f23733XebXq/XHDduXKvrW1tba55xxhmm1+s133rrrdz2bd9vq1evNocOHWr269fPnDdvXqvadvc+t3weVFVVmatWrcptr6urM0eNGmV6vV5z8eLFO70eprn1Xn/66ae5bZ9++mmb92fLPRkwYECrz45333039/vz2GOP5bYnEgnzpJNOMr1eb+69EY/HzWHDhpmVlZXmV1991aqO6dOnm16v17zqqqt2WbMQQgghDi3SekIIIYQQYgcuvPBCCgoKcj8PHjwYgKKiIn7605/mtrvdbnr06EEymaS2thaAGTNmEI1Gueaaa+jSpUurca+99loKCwuZMWNGboG4008/nd///vetxgXQNC133MbGxjY1XnHFFbkZmAA9e/bksMMOw+fz7fLPyzOZDABfffVVq4Xqhg0bxsyZM3niiSd2+vptnXXWWe3e1+12M2bMmFbbTj75ZADWrFmT2zZt2jRUVeX222/HMIzc9qOPPpqzzz67XcdqOcc1a9bg8/ly24uKinjttdf48MMP0fXv90d2M2bMQNM0xo8f36q+iooKxo0bxyWXXEI0GuWDDz6gubm
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABYoAAAGHCAYAAAAeOWZMAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nOzdd3RU1drH8e/0kklPCKHXCQgEQlUI0gWEIKAgXKRdQbl2UK68XrErYgPx6gVUFFBAkSIiTZqICBGpgnSBhJLeJm3aef8YMhCTQMCEBHg+a2VN5pw9+zz7nMmw+GVnH5WiKApCCCGEEEIIIYQQQgghblnqii5ACCGEEEIIIYQQQgghRMWSoFgIIYQQQgghhBBCCCFucRIUCyGEEEIIIYQQQgghxC1OgmIhhBBCCCGEEEIIIYS4xUlQLIQQQgghhBBCCCGEELc4CYqFEEIIIYQQQgghhBDiFidBsRBCCCGEKJVTp06xfPnyUrfv2rUrEREROJ3OcqxKlNapU6f45z//SVRUFFFRUTz33HNX3cfw4cOJiIjg1KlTl20XHx9PREQEQ4cOvdZyr9qN8H5bs2YNR44c8T7fsWMHERERPPPMMxVYlRBCCCGEh7aiCxBCCCGEEJXfgQMHuP/+++nbty/9+/cv1WtGjBhBVlYWarXMTagMnn76afbv3090dDRNmjShWbNmFV3SLWXq1KnMmTOHefPmebdVr16dxx57jIiIiAqsTAghhBDCQ4JiIYQQQghxRRkZGTgcjqt6zahRo8qnGHFNDh48iMViYfbs2Wg0moou55aTlJRUZFuNGjV4/PHHK6AaIYQQQoiiZHqHEEIIIYQQNzmn04nL5cLf319CYiGEEEIIUSwJioUQQggh/mLSpElERERw9uxZ3nnnHTp37kyzZs3o06ePd43e2NhYhg0bRosWLejUqRMvv/wyNputSF/79u3j0UcfpV27djRt2pSePXsyffp0srOzi7RNTk7mrbfeom/fvkRFRdG0aVO6du3K888/z/nz5wu1HT58OFFRUWRkZPDqq69y5513evufOXMmLperVGM9d+4ckyZN4q677qJZs2bcfvvtjBs3jh07dhQ6H6NHjwZg2bJlREREsHTpUsCzLmzfvn3ZtGkTXbt2pVmzZgwaNAiXy1VkzdiCdWtfeeUVdu3axejRo2nZsiVRUVGMGDGi0DEL2O12/ve//9GrVy8iIyPp2rUrH3zwAb/88gsRERF88MEHVxxjfn4+06ZNIyYmhhYtWtCqVSuGDBnC4sWLC7VbunQpERERTJs2rUgfixcvLvZ4DoeDOXPm0L9/f6KioujQoQNjxoxh586dRfo4ePAgEyZMIDo6mubNm9O7d2/++9//Fnkv5OfnM3PmTPr27UtkZCRt2rRhzJgx/Prrr0X6LLj+vXv3JjIykrZt2zJy5Eh++OEHb5tJkybRpEkTAM6cOUNERIR3qYMPPviAiIiIIucCYNq0aYWudVlZuXIlw4YNIyoqisjISGJiYpg1axb5+flF2haci5iYGCIjI2nZsiXDhg3j+++/L9WxDh8+TLt27WjWrBmbNm0Crv46F3wenDp1iqlTpxIdHU2LFi0YOHAgS5YsKVUdERERfPfdd4BnSZaC81/cGsUF12TPnj3Mnj3b+7PZvXt35syZ4x3XmDFjaNmyJR06dODpp58udsbyiRMnmDhxItHR0d7Pk9dee43U1NRS1S2EEEKIW4ssPSGEEEIIUYLHHnuMpKQkevbsSW5uLt9++y3PPvssR44cYd68edx555384x//YOPGjSxYsIC8vDymTJniff2qVauYOHEiOp2OHj16EBYWxq5du/jf//7Hpk2b+PLLL7FYLIDnz9LvvfdekpOT6dSpE507dyY7O5uff/6ZxYsX88svv7Bq1SoMBoO3f6fTyfDhw0lPT6dLly5oNBpWrlzJtGnTyM3NZfz48ZcdX1paGiNGjCAhIYEePXrQq1cvzp8/z9q1a9myZQsff/wxHTp0oHv37rjdbr799lsaNWpE9+7dady4sbefhIQEnnrqKbp160ZQUBAmk+mys1Z37drF119/TYsWLbj//vs5efIkGzduZNeuXSxfvpwGDRoA4HK5ePjhh9m2bRsNGjRgyJAhpKWlMWvWLG/oVhoTJkxg/fr1REdHc+edd5KXl8e6det4/vnnOXv2LE8++WSp+7qUw+Fg1KhR7Ny5kzp16jBgwAAcDgcrV65kxIgRfPjhh3Tp0gWA9evXM378eNxuN127dqVGjRrs3r2bDz74gO3btzNnzhz0ej25ubmMHDmSvXv30qRJE4YOHUpOTg5r165lxIgRvP766wwcOBDwhOhjx47l999/p0uXLnTv3p309HTWrFnDY489xuuvv859991H9+7dCQ8P56OPPsLX15eRI0de03jLwuTJk/n6668JCgqiZ8+emM1mtm3bxnvvvcf69ev5/PPP8fHxAcBmszFixAgOHDhAvXr1GDRoENnZ2WzevJkJEyawc+dOXnzxxRKPdezYMUaPHk1ubi4fffQRHTt2/Fu1P/PMMxw7doyYmBgANmzYwHPPPcfhw4eveGPAxx57jHXr1nHkyBEGDBhA9erVr3i8V155hfj4eHr16oVWq2X58uVMnTqVs2fPsmTJEpo3b86QIUOIjY1l5cqVJCUlFVr/+Ndff+Whhx7CbrfTrVs3atWqxeHDh5k/f773M6tq1ap/65wIIYQQ4iajCCGEEEKIQp599lnFarUqXbp0UVJTU73bP//8c8VqtSpWq1VZvHixd3tmZqYSFRWlNGnSRHG5XIqiKEpSUpLSvHlzpX379srp06cL9f/BBx8oVqtVeemll7zbXnvtNcVqtSqLFi0q1NbpdCoDBw5UrFar8tNPP3m3P/DAA4rValUGDx6s2Gw27/ajR48qjRs3Vtq2bas4nc7LjvOLL75QrFar8vXXXxfa/tNPPylWq1UZM2aMd9vPP/+sWK1W5dlnny3UtkuXLorValXefPPNIv0X7HM4HIqiKEpcXJz3/H366aeF2r7zzjuK1WpVXn311SL1Pfroo0p+fr53+86dO5XGjRsrVqtVmTFjxmXHeOTIEcVqtSpPP/10oe3JyclK69atlaioKG99S5YsUaxWq/Lee+8V6efrr78ucryZM2cqVqtVefLJJwvVd+jQIaVp06ZK165dFbfbrWRlZSnt2rVTIiMjlZ07dxbq9+mnn1asVquyZMkSRVEUZcqUKYrValXefvttxe12e9udP39e6dixo9K0aVPl3LlziqIoyqZNm4qt99ixY0qjRo2U3r17e7c5HA7ve/pSM2bMKPY9oCiK8t577xWqTVEuvu9OnjxZpP2lCq71kCFDvNtWrVqlWK1WZcCAAUpSUpJ3e35+vjJ+/HjFarUqL7/8snf7Sy+9pFitVmXSpEmFzm9CQoJy9913K1arVVm9erV3+6XvtxMnTigdOnRQmjdvrmzbtq1QbVd7nQs+D6KiopTjx497tycmJirdu3dXrFarsnv37sueD0W5eK23b9/u3bZ9+/Yi78+Ca9KyZctCnx0//PCD9+dn+vTp3u12u13p1q2bYrVave+N/Px8JTo6WomMjFT2799fqI6lS5cqVqtVGTt27BVrFkIIIcStRZaeEEIIIYQowZAhQwgMDPQ+b9u2LQDBwcHce++93u2+vr7Ur18fh8NBQkICAMuXLyc3N5eHH36YmjVrFup33LhxBAUFsXz5cu8N4nr37s3LL79cqF8AjUbjPW5KSkqRGkePHu2dgQnQoEED6tatS3p6+hX/vNztdgOwf//+Qjeqi46OZt26dXz44YeXff2l+vbtW+q2vr6+jBgxotC2Hj16APDnn396ty1ZsgS1Ws1zzz2HXq/3bm/VqhX9+vUr1bEKxvjnn3+Snp7u3R4cHMy3337LTz/9hFZ7bX9kt3z5cjQaDZMnTy5UX0REBJMmTeKBBx4gNzeXLVu2kJaWxqBBg2jVqlWhPp544gnGjRtH9erVcblcLF68mKCgIMaPH49KpfK2CwsL48EHH8Rut/Ptt98WGtv
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"plotter2(tests[7], data)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['absl::flat_hash_map', \"absl::node_hash_map'\",\n",
" 'boost::unordered::unordered_map', 'emilib::HashMap',\n",
" 'google::dense_hash_map', 'google::sparse_hash_map',\n",
" 'phmap::parallel_flat_hash_map', 'phmap::parallel_node_hash_map',\n",
" 'robin_hood::unordered_flat_map', 'robin_hood::unordered_node_map',\n",
" 'ska::bytell_hash_map', 'ska::flat_hash_map', 'ska::unordered_map',\n",
" 'std::unordered_map', 'tsl::hopscotch_map', 'tsl::robin_map',\n",
" 'tsl::sparse_map', 'absl::node_hash_map'], dtype=object)"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data[\"MAP\"].unique()"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"11\n",
"9\n",
"13\n",
"4\n",
"6\n",
"17\n",
"12\n",
"14\n",
"7\n",
"1\n",
"8\n",
"3\n",
"10\n",
"15\n",
"5\n",
"2\n",
"16\n"
]
}
],
"source": [
"test = \"string_insert\"\n",
"alpha_maps = gr_mean.loc[test][\"TIME\"].index\n",
"rank = list(gr_mean.loc[test][\"TIME\"].sort_values().index)\n",
"rank = [rank.index(i) for i in alpha_maps]\n",
"for i in rank:\n",
" print(i + 1)"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['int_delete', 'int_insert', 'int_nosucc_lookup', 'int_succ_lookup',\n",
" 'string_delete', 'string_insert', 'string_nosucc_lookup',\n",
" 'string_succ_lookup'], dtype=object)"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MAP\n",
"google::dense_hash_map 25\n",
"tsl::robin_map 25\n",
"ska::flat_hash_map 28\n",
"emilib::HashMap 32\n",
"tsl::hopscotch_map 43\n",
"robin_hood::unordered_node_map 50\n",
"robin_hood::unordered_flat_map 54\n",
"ska::bytell_hash_map 64\n",
"absl::flat_hash_map 65\n",
"phmap::parallel_flat_hash_map 74\n",
"ska::unordered_map 84\n",
"absl::node_hash_map 94\n",
"tsl::sparse_map 108\n",
"phmap::parallel_node_hash_map 110\n",
"boost::unordered::unordered_map 115\n",
"google::sparse_hash_map 123\n",
"std::unordered_map 130\n",
"dtype: int64\n"
]
}
],
"source": [
"tests = data[\"TEST\"].unique()\n",
"alpha_maps = gr_mean.loc[test][\"TIME\"].index\n",
"total_rank = pd.Series([0 for i in range(17)]) \n",
"\n",
"for test in tests:\n",
" alpha_maps = gr_mean.loc[test][\"TIME\"].index\n",
" rank = list(gr_mean.loc[test][\"TIME\"].sort_values().index)\n",
" rank = Series([rank.index(i) + 1 for i in alpha_maps])\n",
" total_rank += rank\n",
"total_rank.index = alpha_maps\n",
"print(total_rank.sort_values())"
]
},
{
"cell_type": "code",
"execution_count": 89,
"metadata": {},
"outputs": [],
"source": [
"from statsmodels.sandbox.regression.predstd import wls_prediction_std"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
" OLS Regression Results \n",
"=======================================================================================\n",
"Dep. Variable: TIME R-squared (uncentered): 0.547\n",
"Model: OLS Adj. R-squared (uncentered): 0.547\n",
"Method: Least Squares F-statistic: 4423.\n",
"Date: Tue, 14 Apr 2020 Prob (F-statistic): 0.00\n",
"Time: 11:06:23 Log-Likelihood: -41641.\n",
"No. Observations: 7331 AIC: 8.329e+04\n",
"Df Residuals: 7329 BIC: 8.330e+04\n",
"Df Model: 2 \n",
"Covariance Type: nonrobust \n",
"==============================================================================\n",
" coef std err t P>|t| [0.025 0.975]\n",
"------------------------------------------------------------------------------\n",
"SIZE 4.907e-07 6.19e-08 7.923 0.000 3.69e-07 6.12e-07\n",
"SIZE2 4.8407 0.075 64.882 0.000 4.694 4.987\n",
"==============================================================================\n",
"Omnibus: 2601.169 Durbin-Watson: 0.002\n",
"Prob(Omnibus): 0.000 Jarque-Bera (JB): 918.695\n",
"Skew: 0.693 Prob(JB): 3.22e-200\n",
"Kurtosis: 1.957 Cond. No. 1.61e+06\n",
"==============================================================================\n",
"\n",
"Warnings:\n",
"[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.\n",
"[2] The condition number is large, 1.61e+06. This might indicate that there are\n",
"strong multicollinearity or other numerical problems.\n"
]
}
],
"source": [
"test = data[data[\"TEST\"] == \"int_delete\"]\n",
"test = data[data[\"MAP\"] == \"google::dense_hash_map\" ]\n",
"test = test.dropna()\n",
"test[\"TIME\"] = test[\"TIME\"].astype(int)\n",
"test[\"SIZE\"] = test[\"SIZE\"].astype(int)\n",
"test[\"SIZE2\"] = np.log(test[\"SIZE\"])\n",
"\n",
"# test[\"SIZE2\"] = test[\"SIZE\"]\n",
"# model = smf.ols(\"TIME~SIZE + SIZE2\",data=test)\n",
"\n",
"model = sm.OLS(test[\"TIME\"], test[[\"SIZE\", \"SIZE2\"]])\n",
"results = model.fit()\n",
"print(results.summary())"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 864x576 with 4 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": []
},
{
"cell_type": "code",
"execution_count": 120,
"metadata": {},
"outputs": [
{
"ename": "PatsyError",
"evalue": "Error evaluating factor: NameError: name 'SIZE3' is not defined\n SIZE3\n ^^^^^",
"output_type": "error",
"traceback": [
"\u001b[1;31m---------------------------------------------------------------------------\u001b[0m",
"\u001b[1;31mNameError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\compat.py\u001b[0m in \u001b[0;36mcall_and_wrap_exc\u001b[1;34m(msg, origin, f, *args, **kwargs)\u001b[0m\n\u001b[0;32m 35\u001b[0m \u001b[1;32mtry\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 36\u001b[1;33m \u001b[1;32mreturn\u001b[0m \u001b[0mf\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m*\u001b[0m\u001b[0margs\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;33m**\u001b[0m\u001b[0mkwargs\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 37\u001b[0m \u001b[1;32mexcept\u001b[0m \u001b[0mException\u001b[0m \u001b[1;32mas\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\eval.py\u001b[0m in \u001b[0;36meval\u001b[1;34m(self, expr, source_name, inner_namespace)\u001b[0m\n\u001b[0;32m 164\u001b[0m \u001b[0mcode\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mcompile\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexpr\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0msource_name\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"eval\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mflags\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 165\u001b[1;33m return eval(code, {}, VarLookupDict([inner_namespace]\n\u001b[0m\u001b[0;32m 166\u001b[0m + self._namespaces))\n",
"\u001b[1;32m<string>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n",
"\u001b[1;31mNameError\u001b[0m: name 'SIZE3' is not defined",
"\nThe above exception was the direct cause of the following exception:\n",
"\u001b[1;31mPatsyError\u001b[0m Traceback (most recent call last)",
"\u001b[1;32m<ipython-input-120-7b7e59571e48>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0msm\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mgraphics\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot_partregress\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"SIZE\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"SIZE2\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[1;34m\"SIZE3\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m=\u001b[0m\u001b[0mtest\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mobs_labels\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mFalse\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\statsmodels\\graphics\\regressionplots.py\u001b[0m in \u001b[0;36mplot_partregress\u001b[1;34m(endog, exog_i, exog_others, data, title_kwargs, obs_labels, label_kwargs, ax, ret_coords, **kwargs)\u001b[0m\n\u001b[0;32m 390\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 391\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexog_others\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mstr\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 392\u001b[1;33m \u001b[0mRHS\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mdmatrix\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexog_others\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 393\u001b[0m \u001b[1;32melif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexog_others\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 394\u001b[0m \u001b[0mRHS\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;34m\"+\"\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mjoin\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexog_others\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\highlevel.py\u001b[0m in \u001b[0;36mdmatrix\u001b[1;34m(formula_like, data, eval_env, NA_action, return_type)\u001b[0m\n\u001b[0;32m 288\u001b[0m \"\"\"\n\u001b[0;32m 289\u001b[0m \u001b[0meval_env\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mEvalEnvironment\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcapture\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0meval_env\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mreference\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 290\u001b[1;33m (lhs, rhs) = _do_highlevel_design(formula_like, data, eval_env,\n\u001b[0m\u001b[0;32m 291\u001b[0m NA_action, return_type)\n\u001b[0;32m 292\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mlhs\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mshape\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m \u001b[1;33m!=\u001b[0m \u001b[1;36m0\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\highlevel.py\u001b[0m in \u001b[0;36m_do_highlevel_design\u001b[1;34m(formula_like, data, eval_env, NA_action, return_type)\u001b[0m\n\u001b[0;32m 162\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0mdata_iter_maker\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 163\u001b[0m \u001b[1;32mreturn\u001b[0m \u001b[0miter\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 164\u001b[1;33m design_infos = _try_incr_builders(formula_like, data_iter_maker, eval_env,\n\u001b[0m\u001b[0;32m 165\u001b[0m NA_action)\n\u001b[0;32m 166\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mdesign_infos\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\highlevel.py\u001b[0m in \u001b[0;36m_try_incr_builders\u001b[1;34m(formula_like, data_iter_maker, eval_env, NA_action)\u001b[0m\n\u001b[0;32m 64\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mformula_like\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mModelDesc\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 65\u001b[0m \u001b[1;32massert\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0meval_env\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mEvalEnvironment\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 66\u001b[1;33m return design_matrix_builders([formula_like.lhs_termlist,\n\u001b[0m\u001b[0;32m 67\u001b[0m formula_like.rhs_termlist],\n\u001b[0;32m 68\u001b[0m \u001b[0mdata_iter_maker\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\build.py\u001b[0m in \u001b[0;36mdesign_matrix_builders\u001b[1;34m(termlists, data_iter_maker, eval_env, NA_action)\u001b[0m\n\u001b[0;32m 691\u001b[0m \u001b[1;31m# on some data to find out what type of data they return.\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 692\u001b[0m (num_column_counts,\n\u001b[1;32m--> 693\u001b[1;33m \u001b[0mcat_levels_contrasts\u001b[0m\u001b[1;33m)\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0m_examine_factor_types\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mall_factors\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 694\u001b[0m \u001b[0mfactor_states\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 695\u001b[0m \u001b[0mdata_iter_maker\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\build.py\u001b[0m in \u001b[0;36m_examine_factor_types\u001b[1;34m(factors, factor_states, data_iter_maker, NA_action)\u001b[0m\n\u001b[0;32m 441\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mdata\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mdata_iter_maker\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 442\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mfactor\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mlist\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mexamine_needed\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 443\u001b[1;33m \u001b[0mvalue\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mfactor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0meval\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mfactor_states\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mfactor\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 444\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mfactor\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mcat_sniffers\u001b[0m \u001b[1;32mor\u001b[0m \u001b[0mguess_categorical\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mvalue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 445\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mfactor\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mcat_sniffers\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\eval.py\u001b[0m in \u001b[0;36meval\u001b[1;34m(self, memorize_state, data)\u001b[0m\n\u001b[0;32m 562\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 563\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0meval\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmemorize_state\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 564\u001b[1;33m return self._eval(memorize_state[\"eval_code\"],\n\u001b[0m\u001b[0;32m 565\u001b[0m \u001b[0mmemorize_state\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 566\u001b[0m data)\n",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\eval.py\u001b[0m in \u001b[0;36m_eval\u001b[1;34m(self, code, memorize_state, data)\u001b[0m\n\u001b[0;32m 545\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m_eval\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcode\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmemorize_state\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdata\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 546\u001b[0m \u001b[0minner_namespace\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mVarLookupDict\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mdata\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mmemorize_state\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"transforms\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m--> 547\u001b[1;33m return call_and_wrap_exc(\"Error evaluating factor\",\n\u001b[0m\u001b[0;32m 548\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 549\u001b[0m \u001b[0mmemorize_state\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"eval_env\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0meval\u001b[0m\u001b[1;33m,\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\compat.py\u001b[0m in \u001b[0;36mcall_and_wrap_exc\u001b[1;34m(msg, origin, f, *args, **kwargs)\u001b[0m\n\u001b[0;32m 41\u001b[0m origin)\n\u001b[0;32m 42\u001b[0m \u001b[1;31m# Use 'exec' to hide this syntax from the Python 2 parser:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 43\u001b[1;33m \u001b[0mexec\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"raise new_exc from e\"\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 44\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 45\u001b[0m \u001b[1;31m# In python 2, we just let the original exception escape -- better\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n",
"\u001b[1;32mc:\\python3.8\\lib\\site-packages\\patsy\\compat.py\u001b[0m in \u001b[0;36m<module>\u001b[1;34m\u001b[0m\n",
"\u001b[1;31mPatsyError\u001b[0m: Error evaluating factor: NameError: name 'SIZE3' is not defined\n SIZE3\n ^^^^^"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAABXsAAAFACAYAAADtWq/nAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjEsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+j8jraAAAgAElEQVR4nO3dcZDXZZ0H8PeCboCLdiACLXsjWRSNtA53g6PdQHYsk8qgtCl1jcwydpNxYVFOYt5QU9yRx3DT5OKllprcJnHFEqk1eMHJjGWZIy6TsdeJVEPDDrmhywZswu/+cNg73cX9we6y8eX1mvGf5/k+3/18nfl95rvvfXh+FaVSqRQAAAAAAE5rw4a6AAAAAAAA+k/YCwAAAABQAMJeAAAAAIACEPYCAAAAABSAsBcAAAAAoACEvQAAAAAABXDCYe+zzz6bqVOn5uc//3lZ17e3t2f58uWZNWtWamtrU19fn82bN59woQAAAAAAHN8Jhb2/+c1v8olPfCJHjx4t6/rOzs40NDSkubk5V199dZYtW5bhw4dnyZIl2bhx40kVDAAAAABAT2eVe+HWrVuzbNmy7N+/v+ybNzU1pbW1NY2Njamrq0uS1NfXZ8GCBVm5cmXmzJmTUaNGnXjVAAAAAAC8Rlk7ez/zmc/kpptuyvnnn5+5c+eWffONGzemurq6O+hNksrKyixcuDD79+/Ptm3bTrxiAAAAAAB6KCvsff7557N06dI0NzfnwgsvLOvGHR0d2bVrV2pra3vMTZs2LUnS0tJSfqUAAAAAABxXWcc4rF+/PpWVlSd047a2tpRKpUyYMKHH3Pjx45Mke/bsOaF7AgAAAADQu7J29p5o0Ju8urM3Sa9n8o4YMSJJcvDgwRO+LwAAAAAAPZUV9p6MUqmUJKmoqOgxd2ystzkAAAAAAE5cWcc4nIxjO3p727176NChJElVVdUJ3/cPf+jM0aOl/hUHFN7YsVV58cUDQ10GcBrQL4By6RdAufQLoBzDhlXkL/7inAG956CFvZMmTUry6tm9r7d3794k6fU8374cPVoS9gJl0SuAcukXQLn0C6Bc+gUwFAbtGIeqqqpMnjw5O3bs6DHX0tKSJKmtrR2sHw8AAAAAcEYZtLA3SebOnZvdu3dny5Yt3WNdXV1Zu3ZtxowZk5kzZw7mjwcAAAAAOGMM2DEOO3fuTGtra6ZPn56ampokyaJFi7Jp06YsXbo0DQ0NmThxYpqbm/Pcc89l1apVGTFixED9eAAAAACAM9qA7ex97LHH8tnPfjZPPfVU99g555yTpqamXHnllVm3bl3uuOOOHDlyJGvWrMm8efMG6kcDAAAAAJzxKkql0ml1YviLLx5wyDnQp3HjRmffvo6hLgM4DegXQLn0C6Bc+gVQjmHDKjJ2bNXA3nNA7wYAAAAAwJAQ9gIAAAAAFICwFwAAAACgAIS9AAAAAAAFIOwFAAAAACgAYS8AAAAAQAEIewEAAAAACkDYCwAAAABQAMJeAAAAAIACEPYCAAAAABSAsBcAAAAAoACEvQAAAAAABSDsBQAAAAAoAGEvAAAAAEABCHsBAAAAAApA2AsAAAAAUADCXgAAAACAAhD2AgAAAAAUgLAXAAAAAKAAhL0AAAAAAAUg7AUAAAAAKABhLwAAAABAAQh7AQAAAAAKQNgLAAAAAFAAwl4AAAAAgAIQ9gIAAAAAFICwFwAAAACgAIS9AAAAAAAFIOwFAAAAACgAYS8AAAAAQAEIewEAAAAACkDYCwAAAABQAMJeAAAAAIACEPYCAAAAABSAsBcAAAAAoACEvQAAAAAABSDsBQAAAAAoAGEvAAAAAEABCHsBAAAAAApA2AsAAAAAUABlh73t7e1Zvnx5Zs2aldra2tTX12fz5s1lrf31r3+dm2++OZdeemmmTZuWefPmpbm5+aSLBgAAAADgtcoKezs7O9PQ0JDm5uZcffXVWbZsWYYPH54lS5Zk48aNb7j2d7/7XRYsWJDHH3881113XZYtW5ZRo0Zl2bJlueeeewbkIQAAAAAAznRnlXNRU1NTWltb09jYmLq6uiRJfX19FixYkJUrV2bOnDkZNWpUr2sfeOCB/OEPf8hXvvKVXHnllUmS66+/Ph/4wAfS2NiYD3/4wxk9evQAPQ4AAAAAwJmprJ29GzduTHV1dXfQmySVlZVZuHBh9u/fn23bth137e7du5Mks2bN6h47++yzM3PmzBw+fDjPP//8SZYOAAAAAMAxfYa9HR0d2bVrV2pra3vMTZs2LUnS0tJy3PVvfetbk6RHqPvCCy8kSS644ILyqwUAAAAAoFd9hr1tbW0plUqZMGFCj7nx48cnSfbs2XPc9TfeeGMmT56c2267LT/72c/y29/+NnfddVd+9KMfZf78+XnLW97Sj/IBAAAAAEjKOLO3o6MjSXo9k3fEiBFJkoMHDx53/bhx4/KpT30qt912W2644Ybu8SuuuCJf+tKXTrjgsWOrTngNcGYaN8554EB59AugXPoFUC79AhgKfYa9pVIpSVJRUdFj7thYb3PH3HPPPVm9enUuvPDCLFq0KGPHjs3PfvazfOtb38qiRYvyta99LVVV5Qe4L754IEePlsq+HjgzjRs3Ovv2dQx1GcBpQL8AyqVfAOXSL4ByDBtWMeAbW/sMe4/t6O1t9+6hQ4eS5Lhh7YEDB7JmzZpMnDgx3/nOdzJ69Kt/1aqrq8u73vWuLFu2LPfee2+WLl160g8AAAAAAEAZZ/ZOmjQpyatn977e3r17k6TX83yTV7+E7dChQ6mrq+sOeo+55pprMnLkyDzxxBMnXDQAAAAAAK/VZ9hbVVWVyZMnZ8eOHT3mWlpakiS1tbW9rq2srEySHD169Lj3f6M5AAAAAADK02fYmyRz587N7t27s2XLlu6xrq6urF27NmPGjMnMmTN7Xff2t7891dXVefTRR/P73//+NXPf/e53c/DgwbznPe/pR/kAAAAAACRJRenYN7C9gc7OzsyfPz9tbW1paGjIxIkT09zcnO3bt2fVqlWZN29ekmTnzp1pbW3N9OnTU1NTkyR54okn8rGPfSxjx47N9ddfn/PPPz/PPPNMvve972Xy5MlZt25dzj333LIL9gVtQDl8IQJQLv0CKJd+AZRLvwDKMRhf0FZW2Jsk+/bty+rVq7N169Z0dXXloosuyk033ZTZs2d3X3PnnXemsbExK1euzAc+8IHu8V/84he566678vOf/zydnZ0ZP3585syZk8WLF/c4y7cvwl6gHF6ugHLpF0C59AugXPoFUI4hDXv/XAh7gXJ4uQLKpV8A5dIvgHLpF0A5BiPsLevMXgAAAAAA/rwJewEAAAAACkDYCwAAAABQAMJeAAAAAIACEPYCAAAAABSAsBcAAAAAoACEvQAAAAAABSDsBQAAAAAoAGEvAAAAAEABCHsBAAAAAApA2AsAAAAAUADCXgAAAACAAhD2AgAAAAAUgLAXAAAAAKAAhL0AAAAAAAUg7AUAAAAAKABhLwAAAABAAQh7AQAAAAAKQNgLAAAAAFAAwl4AAAAAgAIQ9gIAAAAAFICwFwAAAACgAIS9AAAAAAAFIOwFAAAAACgAYS8AAAAAQAEIewEAAAAACkDYCwAAAABQAMJeAAAAAIACEPYCAAAAABSAsBcAAAAAoACEvQAAAAAABSDsBQAAAAAoAGEvAAAAAEABCHsBAAAAAApA2AsAAAAAUADCXgAAAACAAhD2AgAAAAAUgLAXAAAAAKAAhL0AAAAAAAVQdtjb3t6e5cuXZ9asWamtrU19fX02b95c1tpXXnkl9913X6666qpMmzYt73vf+7JixYq89NJLJ104AAAAAAD/p6ywt7OzMw0NDWlubs7VV1+dZcuWZfjw4VmyZEk2btzY5/pbbrkld9xxR972trfl9ttvz9/8zd+kqakpf//3f5+urq5+PwQAAAAAwJnurHIuampqSmtraxobG1NXV5ckqa+vz4IFC7Jy5crMmTMno0aN6nXtD37wg/zgBz/IokWLsmzZsu7x6urq/Ou//mv+8z//M1ddddUAPAoAAAAAwJm
"text/plain": [
"<Figure size 1728x360 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"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
}