diff --git a/data/plots.ipynb b/data/plots.ipynb index 7c82145..4d1854a 100644 --- a/data/plots.ipynb +++ b/data/plots.ipynb @@ -297,7 +297,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 16, "metadata": { "collapsed": false }, @@ -340,63 +340,31 @@ }, { "cell_type": "code", - "execution_count": 15, + "execution_count": 17, "metadata": { "collapsed": false }, "outputs": [ { - "ename": "KeyError", - "evalue": "'cellid'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m\u001b[0m", - "\u001b[0;31mKeyError\u001b[0mTraceback (most recent call last)", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2894\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2895\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2896\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'cellid'", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mKeyError\u001b[0mTraceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgantt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"./gantt_parallel.csv\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"../graphics/gantt_parallel.pdf\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgantt\u001b[0;34m(infile, outfile)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mdfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minfile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"cellid\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdfp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"start\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"white\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2904\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2905\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2906\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2907\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2908\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2895\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2896\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2897\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2898\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2899\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtolerance\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'cellid'" + "name": "stderr", + "output_type": "stream", + "text": [ + ":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" ] }, { "data": { + "image/png": "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\n", "text/plain": [ - "
" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" - }, - { - "ename": "KeyError", - "evalue": "'cellid'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m\u001b[0m", - "\u001b[0;31mKeyError\u001b[0mTraceback (most recent call last)", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2894\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2895\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2896\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'cellid'", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mKeyError\u001b[0mTraceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgantt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"./gantt_parallel.csv\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"../graphics/gantt_parallel.pdf\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgantt\u001b[0;34m(infile, outfile)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mdfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minfile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"cellid\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdfp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"start\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"white\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2904\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2905\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2906\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2907\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2908\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2895\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2896\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2897\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2898\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2899\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtolerance\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'cellid'" - ] } ], "source": [ @@ -406,63 +374,31 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [ { - "ename": "KeyError", - "evalue": "'cellid'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m\u001b[0m", - "\u001b[0;31mKeyError\u001b[0mTraceback (most recent call last)", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2894\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2895\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2896\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'cellid'", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mKeyError\u001b[0mTraceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgantt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"./gantt_serial.csv\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"../graphics/gantt_serial.pdf\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgantt\u001b[0;34m(infile, outfile)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mdfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minfile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"cellid\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdfp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"start\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"white\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2904\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2905\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2906\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2907\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2908\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2895\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2896\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2897\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2898\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2899\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtolerance\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'cellid'" + "name": "stderr", + "output_type": "stream", + "text": [ + ":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" ] }, { "data": { + "image/png": "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\n", "text/plain": [ - "
" + "
" ] }, - "metadata": {}, + "metadata": { + "needs_background": "light" + }, "output_type": "display_data" - }, - { - "ename": "KeyError", - "evalue": "'cellid'", - "output_type": "error", - "traceback": [ - "\u001b[0;31m\u001b[0m", - "\u001b[0;31mKeyError\u001b[0mTraceback (most recent call last)", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2894\u001b[0m \u001b[0;32mtry\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2895\u001b[0;31m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2896\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/index.pyx\u001b[0m in \u001b[0;36mpandas._libs.index.IndexEngine.get_loc\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", - "\u001b[0;32mpandas/_libs/hashtable_class_helper.pxi\u001b[0m in \u001b[0;36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[0;34m()\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'cellid'", - "\nThe above exception was the direct cause of the following exception:\n", - "\u001b[0;31mKeyError\u001b[0mTraceback (most recent call last)", - "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mplt\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mgantt\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"./gantt_serial.csv\"\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;34m\"../graphics/gantt_serial.pdf\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m\u001b[0m in \u001b[0;36mgantt\u001b[0;34m(infile, outfile)\u001b[0m\n\u001b[1;32m 6\u001b[0m \u001b[0mdfp\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mpd\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mread_csv\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0minfile\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 7\u001b[0m \u001b[0mfig\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mfigure\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mfigsize\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;36m6\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0;36m3\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 8\u001b[0;31m \u001b[0mx\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdf\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"cellid\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 9\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 10\u001b[0m \u001b[0mplt\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbar\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mdfp\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"start\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m,\u001b[0m\u001b[0mcolor\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"white\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/frame.py\u001b[0m in \u001b[0;36m__getitem__\u001b[0;34m(self, key)\u001b[0m\n\u001b[1;32m 2904\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mnlevels\u001b[0m \u001b[0;34m>\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2905\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_getitem_multilevel\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2906\u001b[0;31m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mcolumns\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2907\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mis_integer\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2908\u001b[0m \u001b[0mindexer\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0mindexer\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;32m~/.pyenv/versions/3.9.0/lib/python3.9/site-packages/pandas/core/indexes/base.py\u001b[0m in \u001b[0;36mget_loc\u001b[0;34m(self, key, method, tolerance)\u001b[0m\n\u001b[1;32m 2895\u001b[0m \u001b[0;32mreturn\u001b[0m \u001b[0mself\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0m_engine\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mget_loc\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mcasted_key\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2896\u001b[0m \u001b[0;32mexcept\u001b[0m \u001b[0mKeyError\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m-> 2897\u001b[0;31m \u001b[0;32mraise\u001b[0m \u001b[0mKeyError\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mkey\u001b[0m\u001b[0;34m)\u001b[0m \u001b[0;32mfrom\u001b[0m \u001b[0merr\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2898\u001b[0m \u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 2899\u001b[0m \u001b[0;32mif\u001b[0m \u001b[0mtolerance\u001b[0m \u001b[0;32mis\u001b[0m \u001b[0;32mnot\u001b[0m \u001b[0;32mNone\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", - "\u001b[0;31mKeyError\u001b[0m: 'cellid'" - ] } ], "source": [