441 lines
286 KiB
Text
441 lines
286 KiB
Text
|
|
{
|
||
|
|
"cells": [
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 23,
|
||
|
|
"id": "c09834e2-1f4d-4b97-b5bb-50f8940bfcab",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"import sys\n",
|
||
|
|
"import csv\n",
|
||
|
|
"import matplotlib\n",
|
||
|
|
"import numpy as np\n",
|
||
|
|
"import pandas as pd\n",
|
||
|
|
"import seaborn as sns\n",
|
||
|
|
"import matplotlib.pyplot as plt"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "67f7914b-a7a7-4d96-b92f-9cb6c788f063",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"# 1 - Oil production\n",
|
||
|
|
"\n",
|
||
|
|
"Relative oil production per country between 1900 and 2023"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 24,
|
||
|
|
"id": "6f8dcf94-577f-4b44-a658-1e9fd07469d4",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# load data, set index, and workout total production in given unit\n",
|
||
|
|
"oil = pd.read_csv(\"version_2/input/oilproductionrelative_v2.csv\")\n",
|
||
|
|
"oil.set_index(\"Year\", inplace=True)\n",
|
||
|
|
"oil['Total'] = oil.sum(axis=1)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 25,
|
||
|
|
"id": "19d81163-1d42-407b-bf34-2fe194593285",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# relative percentage of production into \"country_percent\" columns\n",
|
||
|
|
"for column in oil:\n",
|
||
|
|
" oil[column + \"_percent\"] = oil[column] / oil.Total"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 29,
|
||
|
|
"id": "49ba427d-7d99-4b11-a121-1bfe1c9aec42",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABboAAAKqCAYAAAD8EOgBAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XeYXGX9/vF7ys7s7mzvJbubtumdJBBaAgHBgqARUKkCKkoxSrMhTSwIUkSELwYSAZWOSqRDICKQQEhCSUJIL5tsL7Nl+u8PzPxY0rbMzDPl/bquvZKdc85z7p1sdmc+5zmfxxIKhUICAAAAAAAAACBBWU0HAAAAAAAAAABgMCh0AwAAAAAAAAASGoVuAAAAAAAAAEBCo9ANAAAAAAAAAEhoFLoBAAAAAAAAAAmNQjcAAAAAAAAAIKFR6AYAAAAAAAAAJDQK3QAAAAAAAACAhEahGwAAAAAAAACQ0Ch0AwAAAAAAAAASGoVuAAAAAAAAAEBCo9ANAAAAAAAAAEhoFLoBAAAAAAAAAAnN3tcdg8FgNHMAAAAAAAAAwF6sVubq4uD4LgEAAAAAAAAAJDRmdAMAAAAAAACISxaLZUDHNTc3RzjJ/hUUFMTsXJK0cOFCzZ8/X62trTE9b7zrc6G7vb09mjkAAAAAAAAAoBen0ymXy2U6RlRs27ZN11xzjZ599lk1NjaqvLxcp5xyin7xi1+osLBQkjR06FDNnz9f8+fPNxs2AdC6BAAAAAAAAABiaOPGjZo+fbrWr1+vv/3tb/r44491991366WXXtKsWbNiOiN9D5/PF/NzRhKFbgAAAAAAAACIoYsuukgOh0PPP/+8Zs+ererqan3+85/Xiy++qB07duhnP/uZ5syZoy1btuiHP/yhLBbLXm1cnnvuOY0dO1ZZWVk68cQTVVdX12v7n//8Z40dO1bp6ekaM2aM7rrrrvC2zZs3y2Kx6OGHH9bs2bOVnp6uhx56SFu2bNFJJ52k/Px8uVwujR8/Xv/+979j8pwMVp9blwAAAAAAAAAABqe5uVnPPfecbrzxRmVkZPTaVlZWpjPOOEMPP/yw1q9frylTpug73/mOvv3tb/far6urSzfffLMeeOABWa1WnXnmmbr88sv10EMPSZIeeugh/eIXv9Cdd96pqVOn6t1339W3v/1tuVwunXPOOeFxfvzjH+uWW27R1KlTlZ6erm9/+9vyer167bXX5HK59OGHHyorKyv6T0oEUOgGAAAAAAAAgBhZv369QqGQxo4du8/tY8eOVUtLiwKBgGw2m7Kzs1VWVtZrH5/Pp7vvvlsjRoyQJF188cW6/vrrw9uvueYa3XLLLfrqV78qSRo2bJg+/PBD3XPPPb0K3fPnzw/vI0lbt27VvHnzNHHiREnS8OHDI/NFxwCFbgAAAAAAAACIsVAoNOBjMzMzw0VuSSovL1d9fb0kqbOzUxs2bND555/faya43+9Xbm5ur3GmT5/e6/NLL71U3/ve9/T888/ruOOO07x58zRp0qQB54wlenQDAAAAAAAAQIyMHDlSFotFa9as2ef2NWvWKD8/X8XFxfsdIy0trdfnFoslXDh3u92SpHvvvVcrV64Mf7z//vt68803ex3ncrl6fX7BBRdo48aNOuuss/Tee+9p+vTp+sMf/tDvr9EECt0AAAAAAAAAECOFhYU6/vjjddddd6m7u7vXtl27dumhhx7S6aefLovFIofDoUAg0K/xS0tLVVFRoY0bN2rkyJG9PoYNG3bQ46uqqnThhRfqiSee0GWXXaZ77723X+c3hUI3AAAAAAAAAMTQnXfeKY/HoxNOOEGvvfaatm3bpmeffVbHH3+8KisrdeONN0qShg4dqtdee007duxQY2Njn8e/7rrr9Otf/1p33HGHPvroI7333nu6//779fvf//6Ax82fP1/PPfecNm3apBUrVuiVV17Zby/xeEOPbgAAAAAAAABJpaCgwHSEA6qtrdXbb7+ta665Rqeddpqam5tVVlamU045Rddcc004//XXX6/vfve7GjFihDweT5/7el9wwQXKzMzU7373O11xxRVyuVyaOHGi5s+ff8DjAoGALrroIm3fvl05OTk68cQTdeuttw72y40JS6iPz05zc3O0swAAAAAAAABAmNPp3KuPNLAvzOgGAAAAAAAAEBf8fr/cbrcaGxu1fft25ebmau7cuaZjIQFQ6AYAAAAAAADiVCgUksViMR0jIkKhkAKBQLiYXV9fr61bt4Z7SH/00Ud7tea48MILKXSjTyh0AwAAAAAAAHGkq6tLb7/9th544AGtW7dOkmSz2VRSUqKysjIVFxerqKhIBQUFys/PV05OjnJycpSZmamMjAylp6crLS1NaWlpstlsfSqUh0IhBYNBBQIB+Xw+eb1e9fT0qKenJ/z4nj/39Xe/3y+Px6PW1la1tLSoqalJ9fX1qq+v165du+TxeKL9tCHFUegGAAAAAAAADHO73Vq2bJkWLVqkTZs27bU9EAiorq5OdXV1Axp/T6G8pKREhYWFcrvdamhoUH19vTo7OwcbHzCOQjcAAAAAAEhqe2aq7pmB6vf7Zbfb5XA4ZLVaTcdDCmtvb9cbb7yhhQsXaseOHVE912AL5UC8o9ANGBIIBHTnnXcqLS1N2dnZysrKksvlCt9mtOdWI4fDIafTqaKioqTpyQUAAAAA/bGnUO31euXxeNTV1SW326329vZeLRIaGxvV2toabp3Q1tZ20LEtFouGDBmi2tpa1dTUqLKyUqWlpSooKFBOTo7S09MlScFgsFdrh08Xzvd8+P3+cKuH7u5udXZ2hrPuybvno6ioSJMnT9bIkSNVXl6u7Oxs2Wy2aD+ViJJQKCSv1yuv1yu/3y+fzxdu/7Hn+3bPR3d3t1paWvToo49q9+7dpqMDSYNCN2BAMBjUhRdeqK1bt6q7u7tPx+Tm5urnP/+5Zs6cScEbAAAAQNzYU+Dr7OxUR0dH+M89Rejm5mY1NTWpoaFBu3btUkNDg3w+n+nYYaFQSNu2bdO2bdtifu7nn3++1+cul0szZ87U1KlTNXLkSFVUVCgnJ0dWq3Wv94EHel+4pwj/6YKrx+PpVYDv7u4Of97T06Ourq7wtj0fbrdbXV1dqqio0Lhx4zRs2DBVVlaqoKBALpdLdnt0ykp7LiB8ukf0noJxT09PuFjc3d2trq6ucN7u7m7l5eWptLRUhYWFysvLU3Z2tlwuV7hn9WBm8AeDwXCReufOndq0aZPWrl2rVatWqbGxMYLPAICBsIQ+u5TpfjQ3N0c7C5ASgsGgLr74YmVnZ8vr9So3N1d+v1+bN2/W1q1bD3p8Xl6err76ak2fPp2CNwAAAICoCoVC8ng86uzsVEtLi+rr67Vjxw5t3rxZ69ev14YNG+KqaI3Yslgsqq2t1cSJE1VbW6vKykpZrdZwoToUCvX689Oz4b1eb/gCSH19verq6rRjx44+TwYbjKysLJWXl4cXarTZbLLb7bLZbLJarbLb7bJareFtra2tWr16NYspGnLhhRfq4osvNh0DCYBCNxBDoVBIP/zhD2WxWBQKhfTZ/35ZWVlKS0vT7t27tW7dOvn9/v2OVVBQoKuvvlqHHHJItGMDAAAASGI+n09ut1uNjY3hWapr1qzRe++9J7fbbToegBRHoRt9ResSIEZCoZCuvPJK+f1+paWl7VXklhR+EelwOHTIIYcoOztb7e3tWrNmjTo6Onrt29zcrB/+8IcqKirS1VdfralTp8bk6wAAAACQGPa0fujq6gq3EWloaFBdXZ22bdumDz74QDt37jQdEwCiYsKECTE71/vvvx+zcyUai8WiJ598UqecckrUz0WhG4iBUCikn//852pra1NWVpYCgcBBj9lzG5ckjRo1StnZ2XrttdcUDAZ77dfY2Kgf/OAHKi4u1i9+8QtNnjw5Kl8DAAAAgMH7dO/kPYsX7vn47MJ1e3oR9/T09Npnz357+i5/+rHdu3dr48aNfVqEEQBgxkknnSSfz6dnn312r21Lly7V0UcfrVWrVmnSpEkG0iUuCt1ADNxwww3asWOHiouL5fV6+318MBhUW1u
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1700x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# grey palette for black and white printing\n",
|
||
|
|
"sns.set_palette(\"Greys\")\n",
|
||
|
|
"\n",
|
||
|
|
"# decent size and light grey background\n",
|
||
|
|
"fig, ax = plt.subplots(figsize = (17,8))\n",
|
||
|
|
"ax.set_facecolor('#fdfdfd')\n",
|
||
|
|
"\n",
|
||
|
|
"# actual plot\n",
|
||
|
|
"ax.stackplot(\n",
|
||
|
|
" oil.index,\n",
|
||
|
|
" oil.Argentina_percent,\n",
|
||
|
|
" oil.Brazil_percent,\n",
|
||
|
|
" oil.Colombia_percent,\n",
|
||
|
|
" oil.Ecuador_percent,\n",
|
||
|
|
" oil.Mexico_percent,\n",
|
||
|
|
" oil.Venezuela_percent,\n",
|
||
|
|
" oil.Others_percent\n",
|
||
|
|
")\n",
|
||
|
|
"\n",
|
||
|
|
"# minimalistic x axis with fancy labels\n",
|
||
|
|
"plt.xticks(np.arange(1900, 2023, 10))\n",
|
||
|
|
"ax.get_yaxis().set_ticks([])\n",
|
||
|
|
"ax.tick_params(length=4, color=\"white\")\n",
|
||
|
|
"ax.tick_params(rotation=35)\n",
|
||
|
|
"plt.xticks(ha='left')\n",
|
||
|
|
"\n",
|
||
|
|
"# no border, clean layout, no non-sense\n",
|
||
|
|
"ax.spines['top'].set_visible(False)\n",
|
||
|
|
"ax.spines['right'].set_visible(False)\n",
|
||
|
|
"ax.spines['bottom'].set_visible(False)\n",
|
||
|
|
"ax.spines['left'].set_visible(False)\n",
|
||
|
|
"ax.set_ymargin(0.005)\n",
|
||
|
|
"ax.set_xmargin(0)\n",
|
||
|
|
"\n",
|
||
|
|
"# legend placement is manual (and tricky)\n",
|
||
|
|
"labels_legend = [\n",
|
||
|
|
" 'Argentina',\n",
|
||
|
|
" 'Brazil',\n",
|
||
|
|
" 'Colombia',\n",
|
||
|
|
" 'Ecuador',\n",
|
||
|
|
" 'Mexico',\n",
|
||
|
|
" 'Venezuela',\n",
|
||
|
|
" 'Others']\n",
|
||
|
|
"ax.legend(labels=labels_legend, loc='right', bbox_to_anchor=(0.558, 0.5, 0.545, 0.77), edgecolor=\"white\", reverse=True)\n",
|
||
|
|
"\n",
|
||
|
|
"# output to file\n",
|
||
|
|
"plt.savefig(\"version_2/output/1_oil.png\")"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "6d1ead40-e7ae-4dc3-826e-3c437108080d",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"# 2 - Selected\n",
|
||
|
|
"\n",
|
||
|
|
"Subset of 3 countries with raw amounts\n",
|
||
|
|
"\n",
|
||
|
|
"__Important__: match the colors to other graphics"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 16,
|
||
|
|
"id": "afdca3f2-4605-4147-a0bb-f7a67af65341",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# load data, set index\n",
|
||
|
|
"selected = pd.read_csv(\"final_sources/1-laselected.csv\")\n",
|
||
|
|
"selected.set_index(\"Year\", inplace=True)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 30,
|
||
|
|
"id": "f051778e-eed5-4288-8027-e62b1c68598d",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABbgAAAKrCAYAAAAzueuZAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAsmVJREFUeJzs3Xd01fXh//HXzYQkQED2HgEBWYYhoAzFFhw4cFVbW6t1ttKqRdyK4qijti4ElC0CAgKCsmSHIRshIJsAIRCSm3lzb27uvb8//JqflJVx733f8Xyc4/nWJPfzecKhfHte+eR9LR6PxyMAAAAAAAAAAIJMhOkAAAAAAAAAAAAqgoEbAAAAAAAAABCUGLgBAAAAAAAAAEGJgRsAAAAAAAAAEJQYuAEAAAAAAAAAQYmBGwAAAAAAAAAQlBi4AQAAAAAAAABBiYEbAAAAAAAAABCUGLgBAAAAAAAAAEGJgRsAAAAAAAAAEJQYuAEAAAAAAAAAQYmBGwAAAAAAAAAQlBi4AQAAAAAAAABBiYEbAAAAAAAAABCUosr6hW6325cdAAAAAAAAAHCWiAie0cX5lXngBgAAAAAAAIBA1qFDB7/eb+fOnX69X7CwWCz6+uuvdcstt/j8Xnz7AwAAAAAAIAQ4nU7TCQAuYPDgwRo0aNA5P7d69WpZLBbt2LHDz1XBj4EbAAAAAAAgSOXk5GjatGn6/e9/r8cee8x0DoALeOCBB7RkyRIdO3bsrM+NHz9e3bp1U6dOnQyUBTcGbgAAAAAAgCBSXFysxYsXa+jQobrmmmv0xhtv6Mcff9SGDRuUkpJiOg/Aedx4442qU6eOJkyYcMbHCwoK9NVXX+mBBx7QmjVr1KdPH1WtWlVNmjTR0KFDVVhYWPq1zZs31xtvvKH7779f1apVU9OmTTVmzJgzrnf06FHdeeedSkxMVK1atXTzzTfr8OHDpZ+3WCxn/dO8eXNJ0oQJE5SYmHjG9ebMmSOLxXLGx+bOnavk5GRVqVJFLVu21IgRI1RSUnLeX/vw4cPVpk0bxcXFqWXLlnrxxRe99lMnDNwAAAAAAAABzuPxaNOmTXrllVd09dVX65///KdWrFhx1qD0n//8R26321AlgAuJiorSH//4R02YMEEej6f041999ZVcLpd69eqlQYMG6bbbbtOOHTs0ffp0rVmzRn/729/OuM57772nbt26aevWrXrsscf06KOP6qeffpL081FFAwcOVLVq1bR69WqlpKQoISFBgwYNUnFxsSTpxIkTpf/s379fSUlJ6tu3b5l/HatXr9Yf//hH/f3vf1dqaqpGjx6tCRMm6PXXXz/va6pVq6YJEyYoNTVV//3vfzV27Fi9//775fntOy+L59e/mxfAX44AAAAAAAD+dfToUc2ZM0cLFixQenp6mV7z+uuva/DgwT4uA/wnIqLsz+gG+ptM7tmzR+3atdPy5cvVv39/SVLfvn3VrFkzxcbGKjIyUqNHjy79+jVr1qhfv34qLCxUlSpV1Lx5c/Xp00eTJ0+W9PM3v+rXr68RI0bokUce0ZQpUzRy5Ejt3r279Knr4uJiJSYmas6cOfrtb39bem2Px6PbbrtNaWlpWr16tapWraoJEyboH//4h3Jyckq/bs6cObr11ltLR/lrr71WAwYM0LPPPlv6NVOmTNHTTz9d+vfUxd5k8t1339W0adO0adOmcv3+nUtUpa8AAAAAAAAAr9q/f7/Gjh2rxYsXy+Vyleu1H330kQYOHKiYmBgf1QGoqLZt26p3794aN26c+vfvr/3792v16tV69dVXNWzYMO3YsUNffPFF6dd7PB653W4dOnRI7dq1k6Qzzum2WCyqX7++Tp06JUnavn279u/fr2rVqp1xX7vdrgMHDpzxseeee07r1q3Tpk2bVLVq1TL/GrZv366UlJQznth2uVyy2+2y2WyKi4s76zXTp0/XBx98oAMHDqigoEAlJSWqXr16me95IQzcAAAAAAAAASI1NVVjxozR8uXLVcYfuj/LiRMnNHXqVN13333ejQPgFQ888IAef/xxffzxxxo/frxatWqlfv36qaCgQA8//LCGDh161muaNm1a+p+jo6PP+JzFYik9faOgoEBdu3Y9YyT/RZ06dUr/85QpU/T+++9rxYoVatSoUenHIyIizvq753/Pyi4oKNCIESM0ZMiQs+5RpUqVsz62bt06/f73v9eIESM0cOBA1ahRQ9OmTdN777131tdWBAM3AAAAAACAYVu3btWYMWO89iaRn332mYYMGeK1JyQBeM+dd96pv//975o6daomTZqkRx99VBaLRcnJyUpNTVVSUlKFr52cnKzp06erbt265/3v/7p16/SXv/xFo0ePVs+ePc/4XJ06dZSfn6/CwkLFx8dLkrZt23bWPX766acyd65du1bNmjXT888/X/qxI0eOlONXdWG8ySQAAAAAAIAh69ev1/33368//elPXhu3JSkvL0+fffaZ164HwHsSEhJ011136dlnn9WJEydKf9pi+PDhWrt2rf72t79p27Zt2rdvn+bOnXvWm0xeyO9//3vVrl1bN998s1avXq1Dhw5pxYoVGjp0qI4dO6aMjAzdeuut+t3vfqeBAwcqIyNDGRkZyszMlCRdccUViouL03PPPacDBw5o6tSpmjBhwhn3eOmllzRp0iSNGDFCu3bt0u7duzVt2jS98MIL52xq3bq10tLSNG3aNB04cEAffPCBvv766wr93p0LT3ADAAAAAAD42YoVKzR27Fj9+OOPPrvHl19+qXvuuUf169f32T2AQFPeN3005YEHHtDnn3+u66+/Xg0bNpT089naK1eu1PPPP68+ffrI4/GoVatWuuuuu8p83bi4OK1atUrDhw/XkCFDlJ+fr0aNGmnAgAGqXr26tmzZopMnT2rixImaOHFi6euaNWumw4cPq1atWpoyZYqGDRumsWPHasCAAXrllVf00EMPlX7twIEDNX/+fL366qv617/+pejoaLVt21Z/+ctfztl000036YknntDf/vY3ORwO3XDDDXrxxRf1yiuvVOw3739YPGU80OmXc1wAAAAAAABQcampqfrd737nl3sNHjz4jDeCA4JRRASHUOD8+NMBAAAAAADgR0uWLPHbvRYsWKC9e/f67X4A4G8M3AAAAAAAAH60dOlSv93L7Xbr/fff99v9AMDfGLgBAAAAAAD8ZO/evTpy5Ihf75mSkqINGzb49Z4A4C8M3AAAAAAAAH7iz+NJfu39999XGd+GDQCCCgM3AAAAAACAn/jzeJJfS01N1XfffWfk3gDgSwzcAAAAAAAAfnDw4EEdOHDA2P0//PBDOZ1OY/cHAF9g4AYAAAAAAPADU8eT/OL48eOaPn260QYA8DYGbgAAAAAAAD8wPXBL0tixY1VQUGA6AwC8hoEbAAAAAADAx9LS0rR3717TGbJarRo3bpzpDAB+smLFClksFuXk5JhO8Zko0wEAAAAAAAChLhCe3v7FlClTdMcdd6hBgwamUwCvu/fee/16v8mTJ5f7Nffdd58mTpyohx9+WJ9++ukZn/vrX/+qTz75RH/60580YcKESvf17t1bJ06cUI0aNSp9rUDFE9wAAAAAAAA+FkgDt91u18svvyyPx2M6BQhbTZo00bRp01RUVFT6MbvdrqlTp6pp06Zeu09MTIzq168vi8XitWsGGgZuAAAAAAAAHzp+/LhSU1NNZ5xh/fr1vOEkYFBycrKaNGmi2bNnl35s9uzZatq0qS6//PLSj7ndbr355ptq0aKFqlatqs6dO2vmzJmSJI/Ho2uvvVYDBw4s/YZVdna2GjdurJdeeknSuY8oSUlJUf/+/RUXF6eaNWtq4MCBslqtkiSHw6GhQ4eqbt26qlKliq666ipt3LjR178dlcLADQAAAAAA4ENLly41nXBO//73v5WWlmY6Awhb999/v8aPH1/67+PGjdOf//znM77mzTff1KRJk/Tpp59q165deuKJJ/SHP/xBK1eulMVi0cSJE7Vx40Z98MEHkqRHHnlEjRo1Kh24/9e2bds0YMAAtW/fXuvWrdOaNWs0ePBguVwuSdL
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1700x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# custom palette to match country colors to first plot\n",
|
||
|
|
"palette_selected = [\"#d1d1d1\", \"#5c5c5c\", \"#2b2b2b\"]\n",
|
||
|
|
"sns.set_palette(sns.color_palette(palette_selected))\n",
|
||
|
|
"\n",
|
||
|
|
"# all plots with same lightest grey background\n",
|
||
|
|
"fig, ax = plt.subplots(figsize = (17,8))\n",
|
||
|
|
"ax.set_facecolor('#fdfdfd')\n",
|
||
|
|
"\n",
|
||
|
|
"# actual plot\n",
|
||
|
|
"ax.stackplot(\n",
|
||
|
|
" selected.index,\n",
|
||
|
|
" selected.Brazil,\n",
|
||
|
|
" selected.Mexico,\n",
|
||
|
|
" selected.Venezuela\n",
|
||
|
|
")\n",
|
||
|
|
"\n",
|
||
|
|
"# minimalistic x axis with fancy labels\n",
|
||
|
|
"plt.xticks(np.arange(1900, 2023, 10))\n",
|
||
|
|
"ax.get_yaxis().set_ticks([])\n",
|
||
|
|
"ax.tick_params(length=4, color=\"white\")\n",
|
||
|
|
"ax.tick_params(rotation=35)\n",
|
||
|
|
"plt.xticks(ha='left')\n",
|
||
|
|
"\n",
|
||
|
|
"# no border, clean layout, no non-sense\n",
|
||
|
|
"ax.spines['top'].set_visible(False)\n",
|
||
|
|
"ax.spines['right'].set_visible(False)\n",
|
||
|
|
"ax.spines['bottom'].set_visible(False)\n",
|
||
|
|
"ax.spines['left'].set_visible(False)\n",
|
||
|
|
"ax.set_ymargin(0.005)\n",
|
||
|
|
"ax.set_xmargin(0)\n",
|
||
|
|
"\n",
|
||
|
|
"# legend placement is manual (and tricky)\n",
|
||
|
|
"labels_legend = [\n",
|
||
|
|
" 'Brazil',\n",
|
||
|
|
" 'Mexico',\n",
|
||
|
|
" 'Venezuela',\n",
|
||
|
|
"]\n",
|
||
|
|
"ax.legend(labels=labels_legend, loc='right', bbox_to_anchor=(0.558, 0.5, 0.544, 0.91), edgecolor=\"white\", reverse=True)\n",
|
||
|
|
"\n",
|
||
|
|
"# output to file\n",
|
||
|
|
"plt.savefig(\"version_2/output/2_selected.png\")"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "d950448c-503b-4c77-a48a-a4ffcb686d14",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"# 3 - Raffinage\n",
|
||
|
|
"Raw data of oil refinment by country of shorter period of time (1940-2023)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 31,
|
||
|
|
"id": "863148f6-5ad4-456a-81ac-ccbbc347a9da",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# load data, set index\n",
|
||
|
|
"raffinage = pd.read_csv(\"version_2/input/2-refining.csv\")\n",
|
||
|
|
"raffinage.set_index(\"Year\", inplace=True)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 32,
|
||
|
|
"id": "44fd6c05-2fd9-4a71-8ff3-28e35eb2a4fb",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABboAAAKpCAYAAAB6hJqvAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAA5hlJREFUeJzs3Xd4W/X99vH7aEu25L2ynD1JyAbCSCi0oRNauigUaOEHAcJogVJmIQQIhUChhdAREiibQoASdiAQRsiChJBFNiHbU7asrecPaj0xWY4j+0j2+3VduiJLR+fcshPHvvXV5xiJRCIhAAAAAAAAAAAylMXsAAAAAAAAAAAAHA6KbgAAAAAAAABARqPoBgAAAAAAAABkNIpuAAAAAAAAAEBGo+gGAAAAAAAAAGQ0im4AAAAAAAAAQEaj6AYAAAAAAAAAZDSKbgAAAAAAAABARqPoBgAAAAAAAABkNIpuAAAAAAAAAEBGo+gGAAAAAAAAAGQ0im4AAAAAAAAAQEazNXfDeDzemjkAAAAAAAAAYC8WC2t1cXD8LQEAAAAAAAAAZLRmr+gGAAAAAAAAgENRVVWlUCjU4sdnZ2fL5/OlMBHaK4puAAAAAAAAAC0WiUT05ZdfasOGDdqwYYM2btyY/NPv9x/WvidMmKCJEyce8uOOOOKIwzruoVi+fHmbHSvTGIahWbNm6bTTTmv1Y1F0AwAAAAAAADio6urqZJndWGRv3LhRX331laLRqNnxMsYPf/hDRSIRvfbaa3vdN2/ePJ1wwglaunSphgwZYkK6zEXRDQAAAAAAAHRQkUhE1dXVqqqqUk1Njaqrq/e6bNmyRRs2bFB1dbXZcduF8847T6effrq2bNmiLl26NLlvxowZGjlyJCV3C1B0AwAAAAAAABkkHo8rGAzudWloaFAoFEpeDwaDCoVC8vv9ySL7m3/W19eb/XQ6nB/84AcqKirSzJkzdcMNNyRvr6ur07PPPqu77rpL77//vq699lotWrRIhYWF+vGPf6w77rhDWVlZkqTu3bvrggsu0Nq1a/Xss88qLy9PN9xwgy644ILk/r788ktdeeWVeuONN2SxWHT88cfrvvvuU/fu3SV9PVbkm8rLy7Vx40bNnDlTV1xxRZMXN1544QX9+Mc/ViKRSN724osv6pZbbtGKFSvUqVMnnXPOObr++utls+27dr7mmms0a9YsbdmyRaWlpTrzzDN10003yW63H86nVBJFNwAAAAAAAJB21q1bp48++kjz58/Xpk2bksV1MBhUOBw2Ox4Og81m09lnn62ZM2fq+uuvTxbOzz77rGKxmI455hgde+yxmjx5sh5++GHt2rVLEydO1MSJEzVjxozkfqZOnapbb71V1113nf7zn//ooosu0tixY9WvXz9FIhGNHz9exxxzjObNmyebzabJkyfrlFNO0bJly+RwOLRt27bkvurr63XKKafomGOOafbzmDdvns4++2zdf//9Ov7447Vu3bpk0f6nP/1pn4/xer2aOXOmOnXqpM8++0z/93//J6/Xqz/84Q8t+VQ2YST2rOAPIB6PH/bBAAAAAAAAAOxt586dmj9/vubPn68FCxZo586dZkdKC+31ZJSrVq3SgAED9M4772jcuHGSpBNOOEHl5eVyOp2yWq36+9//ntz+/fff19ixY1VfXy+Xy6Xu3bvr+OOP17///W9JUiKRUGlpqW655RZNmDBBjz32mCZPnqyVK1cmi/RwOKzc3Fy98MIL+s53vpPcdyKR0Omnn67Nmzdr3rx5crvdzVrRffLJJ+ukk07Stddem9zmscce0x/+8Adt3bpV0sFPRnn33Xfrqaee0qJFiw75c/hNrOgGAAAAAAAA2lh9fb0WLlyo+fPn6+OPP9a6devMjoQ21L9/f40ZM0YPP/ywxo0bp7Vr12revHmaNGmSrr76ai1btkyPP/54cvtEIqF4PK4NGzZowIABktRkjrdhGCotLU2+QLJ06VKtXbtWXq+3yXGDweBef9euu+46ffTRR1q0aJHcbnezn8PSpUv1wQcf6LbbbkveFovFFAwGFQgE5PF49nrM008/rfvvv1/r1q1TXV2dotGofD5fs495IBTdAAAAAAAAQCuLRqNatmxZstj+7LPPFI1GzY4FE5133nm69NJL9cADD2jGjBnq1auXxo4dq7q6Ol144YW67LLL9npMt27dkte/OdfaMIzkVI66ujqNGDGiSVneqKioKHn9scce07333qu5c+eqc+fOydstFou+OQgkEok0+biurk633HKLfvKTn+x1DJfLtddtH330kc4880zdcsstGj9+vHJycvTUU09p6tSpe23bEhTdAAAAAAAAQCv44osv9PHHH2v+/PlavHgxJ35EEz//+c91+eWX64knntCjjz6qiy66SIZhaPjw4VqxYoV69+7d4n0PHz5cTz/9tIqLi/e7Yvqjjz7S+eefr7///e86+uijm9xXVFQkv9+v+vr65AkwP/30072OsXr16mbn/PDDD1VeXq7rr78+edumTZsO4VkdGEU3AAAAAAAAkAI7duxoMmd7165dZkdCGsvOztYvfvELXXvttaqtrdW5554rSbrmmmt09NFHa+LEiTr//POVlZWlFStW6M0339Tf/va3Zu37zDPP1F133aVTTz1VkyZNUpcuXbRp0yY9//zz+sMf/iCbzaYf//jH+uUvf6nx48dr+/btkiSr1aqioiIdddRR8ng8uu6663TZZZfp448/1syZM5sc46abbtIPfvADdevWTT/96U9lsVi0dOlSLV++XJMnT94rU58+fbR582Y99dRTGjVqlGbPnq1Zs2Yd1udwTxTdAAAAAAAAQAv4/f7knO358+dr48aNZkfC/7TkBJFmOO+88zR9+nR973vfU6dOnSR9PXv73Xff1fXXX6/jjz9eiURCvXr10i9+8Ytm79fj8ei9997TNddco5/85Cfy+/3q3LmzTjrpJPl8Pi1ZskQ7duzQI488okceeST5uPLycm3cuFH5+fl67LHHdPXVV+uf//ynTjrpJN1888264IILktuOHz9eL7/8siZNmqQ777xTdrtd/fv31/nnn7/PTD/60Y/0u9/9ThMnTlQoFNL3v/993Xjjjbr55ptb9sn7BiPxzWEr+9E43wUAAAAAAADoiCKRiD799NNksb1ixQrFYjGzY7VrEyZM0MSJE82OgQzAim4AAAAAAADgf0KhkKqrq1VTU6Pq6mpVV1frq6++0scff6wlS5YoGAyaHRHAPlB0AwAAAAAAoF1bu3attm3b1qS83rPM3vN2imwgM1F0AwAAAAAAoF2qrKzUXXfdpdmzZ5sdBUAro+gGAAAAAABAu/Piiy9q6tSpqq6uNjsKgDZA0Q0AAAAAAIB248svv9Stt96q+fPnmx0FQBui6AYAAAAAAEDGi0ajevTRR/XQQw8xZxvogCi6AQAAAAAAkNE+//xz3XLLLVq1apXZUQCYhKIbAAAAAAAAGSkQCOhvf/ubnnzyScViMbPjADARRTcAAAAAAAAyzrx583Tbbbdp69atZkcBkAYougEAAAAAAJAxKioqdOedd+q1114zOwrS2K9//es2O9a///3vNjtWS8ydO1cnnniiqqqqlJuba3acVmMxOwAAAAAAAADQHLNmzdKpp55KyY2Md+6558owDE2YMGGv+y655BIZhqFzzz03JccaM2aMtm3bppycnJTsL11RdAMAAAAAACCtbd68Weedd57+9Kc/qba21uw4QEp07dpVTz31lBoaGpK3BYNBPfHEE+rWrVvKjuNwOFRaWirDMFK2z3RE0Q0AAAAAAIC09dRTT+mnP/2pFi5caHYUIKWGDx+url276vnnn0/e9vzzz6tbt24aNmxY8rZ4PK477rhDPXr0kNvt1pFHHqn//Oc/kqREIqGTTz5Z48ePVyKRkCRVVlaqS5cuuummmyR9PbrEMAxVV1cn9/nBBx9o3Lhx8ng8ysvL0/jx41VVVSVJCoVCuuyyy1RcXCyXy6XjjjsuI/79UXQDAAAAAAAg7ezatUsXXXSRbr/9dgWDQbPjAK3it7/9rWbMmJH8+OG
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1700x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# Same palette as first (oil) plot but Ecuador is now Peru\n",
|
||
|
|
"sns.set_palette(\"Greys\")\n",
|
||
|
|
"\n",
|
||
|
|
"# same size and background color\n",
|
||
|
|
"fig, ax = plt.subplots(figsize = (17,8))\n",
|
||
|
|
"ax.set_facecolor('#fdfdfd')\n",
|
||
|
|
"\n",
|
||
|
|
"# actual plot\n",
|
||
|
|
"ax.stackplot(\n",
|
||
|
|
" raffinage.index,\n",
|
||
|
|
" raffinage.Argentina,\n",
|
||
|
|
" raffinage.Brazil,\n",
|
||
|
|
" raffinage.Colombia,\n",
|
||
|
|
" raffinage.Peru,\n",
|
||
|
|
" raffinage.Mexico,\n",
|
||
|
|
" raffinage.Venezuela\n",
|
||
|
|
")\n",
|
||
|
|
"\n",
|
||
|
|
"# same minimalist look, update timespan\n",
|
||
|
|
"plt.xticks(np.arange(1940, 2023, 10))\n",
|
||
|
|
"ax.get_yaxis().set_ticks([])\n",
|
||
|
|
"ax.tick_params(length=4, color=\"white\")\n",
|
||
|
|
"ax.tick_params(rotation=35)\n",
|
||
|
|
"plt.xticks(ha='left')\n",
|
||
|
|
"\n",
|
||
|
|
"# same minimalist look\n",
|
||
|
|
"ax.spines['top'].set_visible(False)\n",
|
||
|
|
"ax.spines['right'].set_visible(False)\n",
|
||
|
|
"ax.spines['bottom'].set_visible(False)\n",
|
||
|
|
"ax.spines['left'].set_visible(False)\n",
|
||
|
|
"ax.set_ymargin(0.005)\n",
|
||
|
|
"ax.set_xmargin(0)\n",
|
||
|
|
"\n",
|
||
|
|
"# legend\n",
|
||
|
|
"labels_legend = [\n",
|
||
|
|
" 'Argentina',\n",
|
||
|
|
" 'Brazil',\n",
|
||
|
|
" 'Colombia',\n",
|
||
|
|
" 'Peru',\n",
|
||
|
|
" 'Mexico',\n",
|
||
|
|
" 'Venezuela',\n",
|
||
|
|
"]\n",
|
||
|
|
"ax.legend(labels=labels_legend, loc='right', bbox_to_anchor=(0.558, 0.5, 0.545, 0.80), edgecolor=\"white\", reverse=True)\n",
|
||
|
|
"\n",
|
||
|
|
"# output to file\n",
|
||
|
|
"plt.savefig(\"version_2/output/3_raffinage.png\")"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "0d8dd45e-5b6d-4e1d-a283-10e05265b599",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"# 4 - Energy mix\n",
|
||
|
|
"General proportion of energy production source from 1800 to 2000"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 33,
|
||
|
|
"id": "85b04a56-62a4-46db-9b92-499b09177afb",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# load data, set index, and workout total production in given unit\n",
|
||
|
|
"mix = pd.read_csv(\"version_2/input/3-energymix.csv\")\n",
|
||
|
|
"mix.set_index(\"Year\", inplace=True)\n",
|
||
|
|
"mix['Total'] = mix.sum(axis=1)"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 34,
|
||
|
|
"id": "d05090cd-2c40-4920-88df-97b8d2aec519",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": [
|
||
|
|
"# workout percentages in their columns\n",
|
||
|
|
"for column in mix:\n",
|
||
|
|
" mix[column + \"_percent\"] = mix[column] / mix.Total"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": 35,
|
||
|
|
"id": "0a446974-6469-44ac-b406-88ab0247bbd1",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [
|
||
|
|
{
|
||
|
|
"data": {
|
||
|
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAABdMAAAKoCAYAAACcKmawAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjMsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvZiW1igAAAAlwSFlzAAAPYQAAD2EBqD+naQAAigxJREFUeJzs3XmY5XldH/rP7yy1d0/v3TNDw0AGwgAjI4iJYx6BR5IhiTwIejWGoICKBiSXIDcq0ciNeo3Xq5clSq5iENxNWEJEZwYGB2ZjZnr23tfqrq59X845dfb7x9iVqenq7qruU3XqVL1ez9PPcH7n9/v+3t32+MC7v/35JvV6vR4AAAAAAMAlpZodAAAAAAAA1jtlOgAAAAAAXIEyHQAAAAAArkCZDgAAAAAAV6BMBwAAAACAK1CmAwAAAADAFSjTAQAAAADgCpTpAAAAAABwBcp0AAAAAAC4AmU6AAAAAABcgTIdAAAAAACuILPWL6zVamv9SgAAAABgk0ul7Cvm2vgdBAAAAAAAV7DmO9Pr9XrU6/W1fi0AAAAAsInZmc61WvMyfX5+PorF4lq/FgAAAADYxHbs2NHsCLS4NS/TAQAAAADWq4mJiTV932qU/L29vfHiF784nnjiibjtttsavv5m5e82AAAAAAC0kHe9612RJMnCj507d8ab3/zmePrppyMiYv/+/TE4OBivetWrmpx0Y1GmAwAAAAC0mDe/+c0xODgYg4ODcc8990Qmk4nv+77vi4iIdDod+/bti0zGYJJGUqYDAAAAALSY9vb22LdvX+zbty9uu+22+Pmf//no6+uL0dHR6O3tjSRJ4sknn1y4/xvf+EZ853d+Z7S3t8f1118fP//zPx+VSmXh+ze84Q3xgQ98ID74wQ/G9u3bY+/evfH7v//7kcvl4t3vfnds2bIlbr755vibv/mbhWeq1Wr8+I//eLz4xS+Ozs7O+Pt//+/Hxz/+8UU577333vjO7/zO6O7ujm3btsV3f/d3x9mzZyMi4qmnnoo3vvGNsWXLlti6dWu89rWvjQMHDqzuL9w1UKYDAAAAALSwubm5+OM//uO4+eabY+fOnRd939/fH//sn/2zeN3rXhdPPfVUfOpTn4o/+IM/iF/91V9ddN9nP/vZ2LVrVzzyyCPxgQ98IP71v/7X8b/9b/9b3H777fH444/HP/kn/yTe+c53Rj6fj4iIWq0WL3jBC+K//bf/FocPH47/8B/+Q3zkIx+Jv/zLv4yIiEqlEt///d8fr3/96+Ppp5+Ohx56KN773vdGkiQREfGOd7wjXvCCF8Sjjz4ajz32WPz8z/98ZLPZVf7VunpJvV6vr+ULc7lcFIvFtXwlAAAAALDJLfegz1Y4gPRd73pX/PEf/3F0dHRExLOd6/XXXx9/9Vd/Fa95zWsuOoD03//7fx+f//zn48iRIwtF9u/+7u/Gz/3cz8X09HSkUql4wxveENVqNe67776IeHbX+XXXXRdvf/vb43Of+1xERAwNDcX1118fDz30UPzDf/gPl8z2Mz/zMzE0NBT//b//95iYmIidO3fGvffeG69//esvunfr1q3xyU9+Mn7sx35sxb8GzWBnOgAAAABAi3njG98YTz75ZDz55JPxyCOPxB133BH/9J/+04URKs915MiR+K7v+q6FIj0i4ru/+7tjbm4uzp8/v3Dt277t2xb+czqdjp07d8att966cG3v3r0RETEyMrJw7Xd+53fita99bezevTt6enri937v9+LcuXMR8ewfFLzrXe+KO+64I97ylrfExz/+8RgcHFx49kMf+lD8xE/8RLzpTW+K//Sf/lOcOnWqAb8yq0eZDgAAAADQYrq7u+Pmm2+Om2++OV73utfFpz/96cjlcvH7v//7V73m80esJEmy6NqFMr5Wq0VExJ//+Z/Hhz/84fjxH//xuPvuu+PJJ5+Md7/73VEqlRae+cxnPhMPPfRQ3H777fEXf/EX8bKXvSy+9a1vRUTERz/60Th06FD883/+z+PrX/96vOIVr4gvfvGLV51/tSnTAQAAAABaXJIkkUqlolAoXPTdLbfcEg899FA8d+L3Aw88EFu2bIkXvOAFV/3OBx54IG6//fZ43/veF9/+7d8eN99885K7y7/92789fuEXfiEefPDBeNWrXhV/+qd/uvDdy172svi3//bfxt133x1vf/vb4zOf+cxV51ltynQAAAAAgBZTLBZjaGgohoaG4siRI/GBD3wg5ubm4i1vectF977vfe+Lvr6++MAHPhBHjx6N//E//kf88i//cnzoQx+KVOrqK+KXvvSlceDAgbjrrrvi+PHj8Uu/9Evx6KOPLnx/5syZ+IVf+IV46KGH4uzZs3H33XfHiRMn4pZbbolCoRA/8zM/E/fee2+cPXs2HnjggXj00Ufjlltuueo8qy3T7AAAAAAAAOvF1RwI2gx33nlnXH/99RERsWXLlnj5y18e/+2//bd4wxveEL29vYvuvfHGG+Ov//qv4//4P/6PePWrXx07duyIH//xH49f/MVfvKYMP/VTPxVPPPFE/PAP/3AkSRI/8iM/Eu973/vib/7mbyIioqurK44ePRqf/exnY3x8PK6//vp4//vfHz/1Uz8VlUolxsfH40d/9EdjeHg4du3aFW9/+9vj//w//89ryrSakvpz9/avgVwuF8VicS1fCQAAAABscq1SkrN+GfMCAAAAAABXoEwHAAAAAIArUKYDAAAAAMAVKNMBAAAAAOAKlOkAAAAAAHAFynQAAAAAALgCZToAAAAAAFyBMh0AAAAAAK5AmQ4AAAAAsIEkSRJf+tKXmvLuN7zhDfHBD35wWffee++9kSRJTE1NrWqmRsk0OwAAAAAAwHrx9NNPr+n7vu3bvm3Fz7zrXe+Kz372sxddv+OOO+LOO+9sRKxFkiSJL37xi/H93//9V7z3C1/4QmSz2WWte/vtt8fg4GBcd911ERHxh3/4h/HBD35w3ZbrynQAAAAAgBbz5je/OT7zmc8sutbe3t6kNBGlUina2tpix44dy36mra0t9u3bt4qpGsuYFwAAAACAFtPe3h779u1b9GP79u1L3tvX1xc/9EM/FNu2bYsdO3bEW9/61ujt7V10z3/9r/81XvnKV0Z7e3tcf/318TM/8zMREXHTTTdFRMTb3va2SJJk4fNHP/rRuO222+LTn/50vPjFL46Ojo6IuHjMS7FYjJ/7uZ+L/fv3R3t7e9x8883xB3/wBxGxeMzLvffeG+9+97tjeno6kiSJJEniox/9aPzH//gf41WvetVFP6fbbrstfumXfukafgVXTpkOAAAAALBBlcvluOOOO2LLli1x3333xQMPPBA9PT3x5je/OUqlUkREfOpTn4r3v//98d73vjeeeeaZ+PKXvxw333xzREQ8+uijERHxmc98JgYHBxc+R0ScPHkyPv/5z8cXvvCFePLJJ5d8/4/+6I/Gn/3Zn8UnPvGJOHLkSPx//9//Fz09PRfdd/vtt8fHPvax2Lp1awwODsbg4GB8+MMfjve85z1x5MiRRe994okn4umnn453v/vdjfplWhZjXgAAAAAAWsxf/dVfXVRKf+QjH4mPfOQji679xV/8RdRqtfj0pz8dSZJExLPF+LZt2+Lee++Nf/JP/kn86q/+avzsz/5s/O//+/++8NzrXve6iIjYvXt3RERs27btopEspVIpPve5zy3c83zHjx+Pv/zLv4yvfvWr8aY3vSkiIl7ykpcseW9bW1tcd911kSTJovf09PTEHXfcEZ/5zGcWMn3mM5+J17/+9Zdca7Uo0wEAAAAAWswb3/jG+NSnPrXo2lLzyp966qk4efJkbNmyZdH1+fn5OHXqVIyMjMTAwEB87/d+74ozvOhFL7pkkR4R8eSTT0Y6nY7Xv/71K177uX7yJ38y3vOe98Rv//ZvRyqVij/90z+N//f//X+vac2roUwHAAAAAGgx3d3dC6NYLmdubi5e+9rXxp/8yZ9c9N3u3bsjlbr6SeDd3d2X/b6zs/Oq136ut7zlLdHe3h5f/OIXo62tLcrlcvzgD/5gQ9ZeCWU6AAAAAMAG9ZrXvCb
|
||
|
|
"text/plain": [
|
||
|
|
"<Figure size 1700x800 with 1 Axes>"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
"metadata": {},
|
||
|
|
"output_type": "display_data"
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"source": [
|
||
|
|
"# custom palette to prevent dark grey \"biomass\" to empty printer black ink\n",
|
||
|
|
"paletto = [\n",
|
||
|
|
" \"#ededed\",\n",
|
||
|
|
" \"#d1d1d1\",\n",
|
||
|
|
" \"#adadad\",\n",
|
||
|
|
" \"#828282\",\n",
|
||
|
|
" \"#5c5c5c\"\n",
|
||
|
|
"]\n",
|
||
|
|
"\n",
|
||
|
|
"# same settings as before\n",
|
||
|
|
"fig, ax = plt.subplots(figsize = (17,8))\n",
|
||
|
|
"ax.set_facecolor('#fdfdfd')\n",
|
||
|
|
"\n",
|
||
|
|
"# actual plot\n",
|
||
|
|
"ax.stackplot(\n",
|
||
|
|
" mix.index,\n",
|
||
|
|
" mix.Coal_percent,\n",
|
||
|
|
" mix.Oil_percent,\n",
|
||
|
|
" mix[\"Natural gas_percent\"],\n",
|
||
|
|
" mix.Electricity_percent,\n",
|
||
|
|
" mix.Biomass_percent,\n",
|
||
|
|
" colors = paletto[::-1]\n",
|
||
|
|
")\n",
|
||
|
|
"\n",
|
||
|
|
"# changed x axis labels anchor\n",
|
||
|
|
"plt.xticks(np.arange(1800, 2001, 10))\n",
|
||
|
|
"ax.get_yaxis().set_ticks([])\n",
|
||
|
|
"ax.tick_params(length=4, color=\"white\")\n",
|
||
|
|
"ax.tick_params(rotation=35)\n",
|
||
|
|
"#plt.xticks(ha='left')\n",
|
||
|
|
"\n",
|
||
|
|
"# same clean look\n",
|
||
|
|
"ax.spines['top'].set_visible(False)\n",
|
||
|
|
"ax.spines['right'].set_visible(False)\n",
|
||
|
|
"ax.spines['bottom'].set_visible(False)\n",
|
||
|
|
"ax.spines['left'].set_visible(False)\n",
|
||
|
|
"ax.set_ymargin(0.005)\n",
|
||
|
|
"ax.set_xmargin(0)\n",
|
||
|
|
"\n",
|
||
|
|
"# legend\n",
|
||
|
|
"labels_legend = [\n",
|
||
|
|
" 'Coal',\n",
|
||
|
|
" 'Oil',\n",
|
||
|
|
" 'Natural gas',\n",
|
||
|
|
" 'Electricity',\n",
|
||
|
|
" 'Biomass'\n",
|
||
|
|
"]\n",
|
||
|
|
"ax.legend(labels=labels_legend, loc='right', bbox_to_anchor=(0.558, 0.5, 0.55, 0.832), edgecolor=\"white\", reverse=True)\n",
|
||
|
|
"\n",
|
||
|
|
"# output to file\n",
|
||
|
|
"plt.savefig(\"version_2/output/4_mix.png\")"
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "markdown",
|
||
|
|
"id": "4cb24807-ee27-4f07-a850-a3d86b8ac20f",
|
||
|
|
"metadata": {},
|
||
|
|
"source": [
|
||
|
|
"__Note regarding x axis labels placement__\n",
|
||
|
|
"\n",
|
||
|
|
"In most of the plots (oil, raffinage, selected), labels on the x axis are \"anchored left of their ticks\". It means that they are shifted slightly to the right relative to the actual date. Their respective individual tick, placed on the x axis at the precise date, are aligned with the tip of the first character of the label, not the middle, as is the case with the above plot (mix).\n",
|
||
|
|
"This was done to prevent the first and last label to be visualy misaligned with the frame of the plot. The first label would be halfway out of the frame, and the last (2020) would be entirely inside the frame, as the source data have yearly datapoints until 2023.\n",
|
||
|
|
"Label have been shifted to visualy mark this imprecision. Conveying a sense of temporal blur, it underlines the function of these visual representations: these are not precise analytical tools, but allow the reader to perceive historical trends in the data."
|
||
|
|
]
|
||
|
|
},
|
||
|
|
{
|
||
|
|
"cell_type": "code",
|
||
|
|
"execution_count": null,
|
||
|
|
"id": "eac58e10-4305-4175-b01c-3744a319e014",
|
||
|
|
"metadata": {},
|
||
|
|
"outputs": [],
|
||
|
|
"source": []
|
||
|
|
}
|
||
|
|
],
|
||
|
|
"metadata": {
|
||
|
|
"kernelspec": {
|
||
|
|
"display_name": "Python 3 (ipykernel)",
|
||
|
|
"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.12.9"
|
||
|
|
}
|
||
|
|
},
|
||
|
|
"nbformat": 4,
|
||
|
|
"nbformat_minor": 5
|
||
|
|
}
|