paper-ParallelPython-Short/data/plots.ipynb

505 lines
66 KiB
Plaintext
Raw Normal View History

2022-04-02 22:19:50 -04:00
{
"cells": [
{
"cell_type": "code",
2022-04-02 23:35:22 -04:00
"execution_count": 64,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt\n",
"import numpy as np\n",
"import pandas as pd\n",
"x = ['1K','10K','100K','1M','10M']\n",
"\n",
"term = pow (10,-6)\n",
"\n",
"labelfontsize = 22\n",
"ticfontsize=22\n",
"ticwidth=2\n",
"ticlength=6\n",
"mylinewidth=3"
]
},
{
"cell_type": "code",
"execution_count": 66,
2022-04-02 22:19:50 -04:00
"metadata": {
"collapsed": false
},
"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>datasize</th>\n",
" <th>coldruntime</th>\n",
" <th>hotruntime</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1K</td>\n",
" <td>0.100575</td>\n",
" <td>0.055373</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>10K</td>\n",
" <td>0.091807</td>\n",
" <td>0.054508</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>100K</td>\n",
" <td>0.130599</td>\n",
" <td>0.077568</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1M</td>\n",
" <td>0.755035</td>\n",
" <td>0.330882</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>10M</td>\n",
" <td>4.626190</td>\n",
" <td>3.199181</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" datasize coldruntime hotruntime\n",
"0 1K 0.100575 0.055373\n",
"1 10K 0.091807 0.054508\n",
"2 100K 0.130599 0.077568\n",
"3 1M 0.755035 0.330882\n",
"4 10M 4.626190 3.199181"
]
},
2022-04-02 23:35:22 -04:00
"execution_count": 66,
2022-04-02 22:19:50 -04:00
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
2022-04-02 23:35:22 -04:00
"# read data and setup plot metadata and settings\n",
"df=pd.read_csv(\"./scalability-write.csv\")\n",
"yseries = [ \"coldruntime\", \"hotruntime\" ]\n",
"colors = { \"coldruntime\": \"blue\",\n",
" \"hotruntime\": \"red\" }\n",
"serieslabels = { \"coldruntime\" : \"Cold cache\",\n",
" \"hotruntime\": \"Hot cache\" }\n",
"df"
2022-04-02 22:19:50 -04:00
]
},
{
"cell_type": "code",
2022-04-02 23:35:22 -04:00
"execution_count": 69,
2022-04-02 22:19:50 -04:00
"metadata": {
"collapsed": false
},
"outputs": [
2022-04-02 23:35:22 -04:00
{
"name": "stderr",
"output_type": "stream",
"text": [
"<ipython-input-69-d4eecc53a5f0>:21: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n",
" plt.axes().spines[axis].set_linewidth(ticwidth)\n"
]
},
2022-04-02 22:19:50 -04:00
{
"data": {
"text/plain": [
"<module 'matplotlib.pyplot' from '/Users/lord_pretzel/.pyenv/versions/3.9.0/lib/python3.9/site-packages/matplotlib/pyplot.py'>"
]
},
2022-04-02 23:35:22 -04:00
"execution_count": 69,
2022-04-02 22:19:50 -04:00
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
2022-04-02 23:35:22 -04:00
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAakAAADWCAYAAABrL337AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/Il7ecAAAACXBIWXMAAAsTAAALEwEAmpwYAABKiElEQVR4nO2dd3iUVfbHP4dAQg1FpBNaVIqioChFpFoQEBGQYsO6Yl2x7trw59pde1t1V1TQtexasGBZwQYWEBVQadIElSYC0pPz++O8kymZmcxMZjKT5H6e533ezG3vmTcz73fuveeeK6qKw+FwOByZSJV0G+BwOBwORyScSDkcDocjY3Ei5XA4HI6MxYmUw+FwODIWJ1IOh8PhyFicSDkcDocjY3Ei5XA4HI6MxYmUw+FwODKWqvFWEBEB8oHGQD3gN2AdsFTdymCHw+FwJBGJRVdEpAYwDhgG9AZywxTbAnwMvAo8r6o7kmemw+FwOCojUUVKROoBfwXOAeoCAijwM7AJE6ZcYB+gSUD+78ATwG2qujll1pczRMT1NB0OR6VDVSXRuhFFSkQuBCZhAvQLMBV4H/g8nPB4gtYdOBoYi4nWRuBGVX0kUQMrEk6kHA5HZSRVIlUIzAH+D3hLVQtjblQkCxgMXA90VdWsRA2sSPhEyk3dORyOyoC5MKROpE5U1VcTbTjZ7VQEnEg5HI7KREpFypF8nEg5HI7KRDJEyq2TShEioqFHum1yOByOeJk6FVq1gipVoHVre12WxNyTEpH6wEHYeqi1Eco0B9oB31Z2r75oouR6Ug6HozwwdSqcey7sCFhQVLMmPP44nHJKyfXLuid1KTADaBqlTBOvzEWJGlRRUFUJPdJtk8PhcMTDZZcFCxTA9u1w7bVlZ0M8IjUY60XNjVTAy1sGDCmtYQ6Hw+FIDzt2wIUXwvr14fNXrSo7W+IJi9Qa+CyGcouAwxOyxuFwOBxpZeFCGDMGFiyIXCYvr+zsiacnVQfYGkO5rVh0CofD4XCUE1ThscfgsMOCBSorZJVrzZpwyy1lZ1c8IvULcGAM5ToBGxIzp+LgvPscDkd5YdMmGDECJkyAnTstrUYNc5B4+mnz7hOxc6xOE8kiHu++qcAYYKiqvhWhzCDgTeBFVR2TNCvLIc67z+FwlAc++shE56ef/GkHHQT//jd07Fi6tsvau+9+7/y8iJwrIjkBhuSIyLnA81iA2QcSNaii4Lz7HA5HJrN3L9x4I/TrFyxQF18MX3xReoFKFnFFnBCRvwC3YEK0B/D5eLQEsrEo6Deo6t+SbGeFwEWccDgcmcDKldZ7+vRTf9o++8BTT8HQocm7TplHnFDV24ARwHxMlPK9I8dLG+EEyuFwODKXl16Cgw8OFqh+/eCbbyII1NSpFmoiTSEnEo7dJyKNgVZYr2qVqv6aTMMqIq4n5XA40sUff9ji3Cee8KdlZcH//R9cfXVxLz7ABOm882wFr484Qk64ALPlDCdSDocjHXzzja19+uEHf1rr1vD889C9e5SKrVvb2GAorVrBihUlXjdtIiUidYFuwL7ASlWdlagBlQknUg6HoyxRhYcegiuugN27/eljxtiaqLolrWiVCNoiAoUlbzFY5nNSIlJXRP4FrAPeAaZgW8v78s8RkbUiEk2bKwVunZTD4UgnGzbAsGFwySV+gapVy5wjnnuuBIFShUmTIueXYciJmEVKRGoBM4HxwG/A25g3XyBvAI2BE5NincPhcDji5oMPoHNnmDbNn9alC3z1FYwfH7mDBEBBAVxwAdx0U/j8Mg45EU9P6grgYKz31FZViwWRVdVfgO+A/skxr/zi1kk5HI6yZs8e+OtfYeBA+Plnf/rEiTB7Nuy/fwkN7NwJJ59sY4E+DjwQWrZMW8iJeERqFLAWOFdVt0cptxhoXiqrHA6Pt956i9NOO438/Hxq165NTk4OLVq0YPDgwTz22GNs3RpLOMmSEZGi8fN4aN26NSLCihgmkTOZFStWICK0bt063aY4EuTHH6F3b7jtNhutA2jUCN5+G/7+d8jJiV6f33+HQYPgv//1p40bB3PnWtjzwkJzlijLmEjEJ1JtgS9VdVcJ5XYC+yRuksMB69ato2/fvgwePJgpU6aQnZ3NMcccw/Dhw2ndujXvv/8+EyZMoG3btqwM533kcFQinn8eDjkEPv/cn3bMMebVd9xxMTTw88/Qpw/MnOlP+/Of4dlnITs7ucbGSTxbdewBqsdQriWwLTFzHA7YvHkzvXr1YunSpfTo0YPHHnuMzp07B5XZunUrjz76KLfccgu//fYbrVq1SpO1Dkf62LbNwhhNnuxPq1rVelMTJ9r62xJZutQUbflyf9rtt8NVV5UweVU2xCNSi4AuIpITqTflbTF/MPBVMoxzVE4uuugili5dyuGHH84HH3xA9erFfxvVqVOHq666ipNOOolatWqlwUqHI73MnQtjx8KSJf60du2sV9WtWxyNDBrk390wK8tW+555ZtLtTZR4hvteBhoBd0QpcytQG3ixNEY5Uk+aI51EZNmyZTz//PMAPPbYY2EFKpD8/HyaNm0alLZnzx4eeughjjjiCHJzc6lRowYdOnTgmmuuYePGjXHbtHLlSk4//XQaN25MjRo16NixI3feeScFBQVxtxVo4+OPP06/fv1o0KABOTk55OXlMWTIEKaG/DNWrlzJbbfdRr9+/WjZsiU5OTk0aNCAfv368dxzz0W9zurVq5k4cSIdO3akVq1a5Obm0qFDBy644AIWRNjVTlV55JFHOOSQQ6hZsyb169dn2LBhEcsDbNy4keuuu46DDjqI2rVrU6tWLbp27cq9997Lnj174r9BjogUFtocU48ewQJ1+ukwb14cAvX++9C3r1+gatSAV1/NKIEC7AMZywHUBBYCBcAnwESgEPgAmOCdC4CvgexY261MBxZCStPNlCmqNWuq2vSqHTVrWnq6ue+++xTQgw46KKH6O3bs0L59+yqgNWvW1MGDB+uoUaO0SZMmCmirVq102bJlxepF+t8sXLhQGzZsqIC2bNlSR48ercccc4xmZ2frSSedpK1atVJAly9fHrONmzZt0h49eiigOTk52r9/fx0zZoweddRRWq9ePW3VqlVQ+ZtvvlkBbdeunQ4cOFBHjx6tvXr10qysLAX04osvDnudd955R3NzcxXQZs2a6fDhw3XEiBHapUsXrVKlit54441FZZcvX150f04//XTNycnRo48+WkeOHFn0HnNzc8Peu2+//VabNWumgLZo0UIHDx6sgwYN0gYNGiigAwYM0F27dsV8fxyR+eUX1WOPDf7u1q6t+uyzcTb0wguq1ar5G6lfX/XTT5Nub8D3KvHnZlyFzWtvlidOBQFn399fAs1LY1BFPpItUoEf1Ew4ksFpp52mgJ511lkJ1b/yyisV0Pbt2+tPP/1UlL59+3YdMWKEAtq9e/di9SL9b7p27aqAnnbaaUEP2gULFui+++5bVC8ekRo2bJgC2qNHD12zZk1Q3o4dO/Stt94KSvviiy90wYIFxdpZvHixtmzZUgH97LPPgvJWrlypderUUUBvvvlm3bNnT7H8OXPmFL32iRSgbdq00aVLlxbl7dy5U48//ngF9JxzzglqZ/v27dqmTRsF9Lbbbgu6zsaNG3XgwIEKBAmiIzGmT1dt1Cj4O9etm2rAvyo2HnxQVcTfSPPmqmE+X8mgzEWqqBIch+0Z9Qa2qPdxYDhemCV3OJFKlOOOO04Bveaaa+Kuu337dq1du7YC+u677xbLX79+fVH+J598EpQX7n/z0UcfKaB169bVzZs3F2vvgQceiFuk5s2bp4DWqVNH161bF/ubi8Djjz+ugF5xxRVB6ZdeeqkCOnr06JjaCRSpadOmFcv//PPPiwQskEceeUQBPfnkk8O2u2bNGq1WrZo2bNhQCwsLY3xXjkB27VK9/PLi37err7a8mCksVL3uuuBG2rdXXbkyZbYnQ6TicZwoQlWnA9MTqetwpIq5c+eybds2mjVrxtFHH10sv2HDhgwdOpTnn3+emTNn0qtXr6jtffjhhwAMGTKEumFiyJx22mlccsklcdk
2022-04-02 22:19:50 -04:00
"text/plain": [
2022-04-02 23:35:22 -04:00
"<Figure size 432x216 with 1 Axes>"
2022-04-02 22:19:50 -04:00
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
2022-04-02 23:35:22 -04:00
"fig = plt.figure(figsize=(6,3))\n",
"\n",
"for s in yseries:\n",
" plt.plot(x, df[s],color=colors[s],label=serieslabels[s],linewidth=mylinewidth,marker=\"o\")\n",
2022-04-02 22:19:50 -04:00
"\n",
"#plt.xticks(x)\n",
"plt.yscale(\"log\")\n",
2022-04-02 23:35:22 -04:00
"\n",
"# axes\n",
"plt.xlabel('Dataset size (rows)', fontsize=labelfontsize)\n",
"plt.xticks(fontsize = ticfontsize)\n",
"plt.tick_params(width=ticwidth,length=ticlength,which='both')\n",
"\n",
"plt.ylabel('Runtime (sec)', fontsize=labelfontsize)\n",
"plt.yticks(fontsize = ticfontsize)\n",
"\n",
"# grid and axis lines\n",
"plt.grid(visible=True, linewidth=2, color=\"black\",which=\"major\", axis=\"y\")\n",
"\n",
"for axis in ['top','bottom','left','right']:\n",
" plt.axes().spines[axis].set_linewidth(ticwidth)\n",
"\n",
2022-04-02 22:19:50 -04:00
"plt.tight_layout()\n",
2022-04-02 23:35:22 -04:00
"\n",
"# legend\n",
"plt.legend(fontsize=labelfontsize,handlelength=1.5,frameon=False)\n",
"# save\n",
"plt.savefig('../graphics/scalability-write.pdf')\n",
2022-04-02 22:19:50 -04:00
"plt"
]
},
{
"cell_type": "code",
2022-04-02 23:35:22 -04:00
"execution_count": 72,
2022-04-02 22:19:50 -04:00
"metadata": {
"collapsed": false
},
"outputs": [],
2022-04-02 23:35:22 -04:00
"source": [
"def gantt(data, title):\n",
" from bokeh.plotting import figure, show\n",
"\n",
" columns = [str(row[\"id\"]) for row in data.rows]\n",
" components = [\"start\", \"runtime\"]\n",
" colors = [\"#fff\", \"#718dbf\"]\n",
" labelfontsize = \"13pt\"\n",
" p = figure(\n",
2022-04-02 23:42:50 -04:00
" x_range=columns,\n",
2022-04-02 23:35:22 -04:00
" height=250,\n",
" width=370\n",
" # title=title\n",
" )\n",
"\n",
" p.vbar_stack(components, x='id', width=0.9, color=colors, source=data.to_bokeh(),\n",
" legend_label=[\"\", \"Cell Executing\"])\n",
"\n",
" p.y_range.start = 0\n",
" p.x_range.range_padding = 0.1\n",
" p.xaxis.axis_label = \"Cell ID\"\n",
" p.xaxis.axis_label_text_font_size = labelfontsize\n",
" p.yaxis.axis_label = \"Time (s)\"\n",
" p.yaxis.axis_label_text_font_size = labelfontsize\n",
" p.xgrid.grid_line_color = None\n",
" p.axis.minor_tick_line_color = None\n",
" p.outline_line_color = None\n",
" p.legend.label_text_font_size = labelfontsize\n",
" p.legend.location = \"bottom_right\"\n",
" p.legend.orientation = \"horizontal\"\n",
" p.legend.background_fill_alpha = 0\n",
" p.legend.border_line_alpha = 0\n",
" export_png(p, filename=)\n",
" show(p)"
]
},
{
"cell_type": "code",
"execution_count": 77,
"metadata": {
"collapsed": false
},
"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>cellid</th>\n",
" <th>start</th>\n",
" <th>end</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1</td>\n",
" <td>1.262</td>\n",
" <td>3.288</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>2</td>\n",
" <td>4.644</td>\n",
" <td>17.450</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>3</td>\n",
" <td>4.659</td>\n",
" <td>18.390</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>4</td>\n",
" <td>4.676</td>\n",
" <td>15.598</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>5</td>\n",
" <td>4.691</td>\n",
" <td>15.455</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>6</td>\n",
" <td>4.708</td>\n",
" <td>18.359</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>7</td>\n",
" <td>4.727</td>\n",
" <td>18.292</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>8</td>\n",
" <td>4.753</td>\n",
" <td>18.345</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>9</td>\n",
" <td>4.771</td>\n",
" <td>18.049</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>10</td>\n",
" <td>4.790</td>\n",
" <td>18.294</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>11</td>\n",
" <td>4.811</td>\n",
" <td>18.225</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" cellid start end\n",
"0 1 1.262 3.288\n",
"1 2 4.644 17.450\n",
"2 3 4.659 18.390\n",
"3 4 4.676 15.598\n",
"4 5 4.691 15.455\n",
"5 6 4.708 18.359\n",
"6 7 4.727 18.292\n",
"7 8 4.753 18.345\n",
"8 9 4.771 18.049\n",
"9 10 4.790 18.294\n",
"10 11 4.811 18.225"
]
},
"execution_count": 77,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dfp = pd.read_csv(\"./gantt_parallel.csv\")\n",
"dfp"
]
},
{
"cell_type": "code",
2022-04-02 23:42:50 -04:00
"execution_count": 102,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"def gantt(infile,outfile):\n",
" import matplotlib.pyplot as plt\n",
" import numpy as np\n",
" import pandas as pd\n",
"\n",
" dfp = pd.read_csv(infile)\n",
" fig = plt.figure(figsize=(6,3))\n",
" x = df[\"cellid\"]\n",
"\n",
" plt.bar(x, dfp[\"start\"],color=\"white\")\n",
" plt.bar(x, dfp[\"end\"], bottom=dfp[\"start\"],color=\"blue\",zorder=3)\n",
"\n",
" # axes\n",
" plt.xlabel('Cell Position', fontsize=labelfontsize)\n",
" plt.xticks(fontsize = ticfontsize,ticks=[1,2,3,4,5,6,7,8,9,10,11])\n",
" plt.tick_params(width=ticwidth,length=ticlength,which='both')\n",
"\n",
" plt.ylabel('Runtime (sec)', fontsize=labelfontsize)\n",
" plt.yticks(fontsize = ticfontsize)\n",
"\n",
" # grid and axis lines\n",
" plt.grid(visible=True, linewidth=2, color=\"black\",which=\"major\", axis=\"y\")\n",
"\n",
" for axis in ['top','bottom','left','right']:\n",
" plt.axes().spines[axis].set_linewidth(ticwidth)\n",
"\n",
" plt.tight_layout()\n",
"\n",
" # legend\n",
" plt.legend(fontsize=labelfontsize,handlelength=1.5,frameon=False)\n",
" # save\n",
" plt.savefig(outfile)\n",
" plt"
]
},
{
"cell_type": "code",
"execution_count": 103,
2022-04-02 23:35:22 -04:00
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
2022-04-02 23:42:50 -04:00
"<ipython-input-102-d533f9bd3db5>:25: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n",
2022-04-02 23:35:22 -04:00
" plt.axes().spines[axis].set_linewidth(ticwidth)\n",
"No handles with labels found to put in legend.\n"
]
},
{
"data": {
2022-04-02 23:42:50 -04:00
"image/png": "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
2022-04-02 23:35:22 -04:00
"text/plain": [
2022-04-02 23:42:50 -04:00
"<Figure size 432x216 with 1 Axes>"
2022-04-02 23:35:22 -04:00
]
},
2022-04-02 23:42:50 -04:00
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"plt = gantt(\"./gantt_parallel.csv\", \"../graphics/gantt_parallel.pdf\")\n",
"plt"
]
},
{
"cell_type": "code",
"execution_count": 104,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"<ipython-input-102-d533f9bd3db5>:25: MatplotlibDeprecationWarning: Adding an axes using the same arguments as a previous axes currently reuses the earlier instance. In a future version, a new instance will always be created and returned. Meanwhile, this warning can be suppressed, and the future behavior ensured, by passing a unique label to each axes instance.\n",
" plt.axes().spines[axis].set_linewidth(ticwidth)\n",
"No handles with labels found to put in legend.\n"
]
2022-04-02 23:35:22 -04:00
},
{
"data": {
2022-04-02 23:42:50 -04:00
"image/png": "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
2022-04-02 23:35:22 -04:00
"text/plain": [
"<Figure size 432x216 with 1 Axes>"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
2022-04-02 23:42:50 -04:00
"plt = gantt(\"./gantt_serial.csv\", \"../graphics/gantt_serial.pdf\")\n",
2022-04-02 23:35:22 -04:00
"plt"
]
2022-04-02 22:19:50 -04:00
}
],
"metadata": {
"kernelspec": {
"argv": [
"python",
"-m",
"ipykernel_launcher",
"-f",
"{connection_file}"
],
"display_name": "Python 3",
"env": null,
"interrupt_mode": "signal",
"language": "python",
"metadata": null,
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.0"
},
"name": "plots.ipynb"
},
"nbformat": 4,
"nbformat_minor": 4
}