{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Problem 7.3" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Integrated Energy Grids**\n", "\n", "\n", "**Problem 7.3**\n", "\n", "**Assume that we have three locations (1,2,3) with an electric bus and a heating bus. The electricity loads are [0, 10, 20] MWh and the heating loads are [30, 20, 10] MWh. The electric buses are connected with transmission lines in a ring and there is a gas power generator at node 1 with an efficiency of 0.3 and a marginal cost of 50 EUR/MWh. At each location the electric and heating buses are connected with heat pumps with a coefficient of performance (COP) of 3; heat can also be supplied to every heat bus with a gas boiler with an efficiency of 0.9 and a marginal cost of 20 EUR/MWh.** \n", "\n", "**(a) Calculate the optimal heat generation by every component and the optical power flowing through the lines.**\n", "\n", "**(b) Repeat (a) assuming that the marginal cost of heat pumps is 10 EUR/MWh.**\n", "\n", "_Note: This problem is based on the PyPSA example [LOPF with coupling to heating sector](https://pypsa.readthedocs.io/en/stable/examples/lopf-with-heating.html)._" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ ":::{note}\n", "If you have not yet set up Python on your computer, you can execute this tutorial in your browser via [Google Colab](https://colab.research.google.com/). Click on the rocket in the top right corner and launch \"Colab\". If that doesn't work download the `.ipynb` file and import it in [Google Colab](https://colab.research.google.com/).\n", "\n", "Then install the following packages by executing the following command in a Jupyter cell at the top of the notebook.\n", "\n", "```sh\n", "!pip install numpy pypsa\n", "```\n", ":::" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "import pandas as pd\n", "import pypsa" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We start by building the network object that will contain the optimization problem" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "network = pypsa.Network()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Add three buses of AC and heat carrier each" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
v_nomtypexycarrierunitv_mag_pu_setv_mag_pu_minv_mag_pu_maxcontrolgeneratorsub_network
Bus
electric bus 020.00.00.0AC1.00.0infPQ
heat bus 01.00.00.0heat1.00.0infPQ
electric bus 120.00.00.0AC1.00.0infPQ
heat bus 11.00.00.0heat1.00.0infPQ
electric bus 220.00.00.0AC1.00.0infPQ
heat bus 21.00.00.0heat1.00.0infPQ
\n", "
" ], "text/plain": [ " v_nom type x y carrier unit v_mag_pu_set v_mag_pu_min \\\n", "Bus \n", "electric bus 0 20.0 0.0 0.0 AC 1.0 0.0 \n", "heat bus 0 1.0 0.0 0.0 heat 1.0 0.0 \n", "electric bus 1 20.0 0.0 0.0 AC 1.0 0.0 \n", "heat bus 1 1.0 0.0 0.0 heat 1.0 0.0 \n", "electric bus 2 20.0 0.0 0.0 AC 1.0 0.0 \n", "heat bus 2 1.0 0.0 0.0 heat 1.0 0.0 \n", "\n", " v_mag_pu_max control generator sub_network \n", "Bus \n", "electric bus 0 inf PQ \n", "heat bus 0 inf PQ \n", "electric bus 1 inf PQ \n", "heat bus 1 inf PQ \n", "electric bus 2 inf PQ \n", "heat bus 2 inf PQ " ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for i in range(3):\n", " network.add(\"Bus\", f\"electric bus {i}\", v_nom=20.0)\n", " network.add(\"Bus\", f\"heat bus {i}\", carrier=\"heat\")\n", "network.buses" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we add three transmission lines in a ring" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
bus0bus1typexrgbs_noms_nom_mods_nom_extendable...v_ang_minv_ang_maxsub_networkx_pur_pug_pub_pux_pu_effr_pu_effs_nom_opt
Line
line 0electric bus 0electric bus 10.10.00.00.01000.00.0False...-infinf0.00.00.00.00.00.00.0
line 1electric bus 1electric bus 20.10.00.00.01000.00.0False...-infinf0.00.00.00.00.00.00.0
line 2electric bus 2electric bus 00.10.00.00.01000.00.0False...-infinf0.00.00.00.00.00.00.0
\n", "

3 rows × 31 columns

\n", "
" ], "text/plain": [ " bus0 bus1 type x r g b s_nom \\\n", "Line \n", "line 0 electric bus 0 electric bus 1 0.1 0.0 0.0 0.0 1000.0 \n", "line 1 electric bus 1 electric bus 2 0.1 0.0 0.0 0.0 1000.0 \n", "line 2 electric bus 2 electric bus 0 0.1 0.0 0.0 0.0 1000.0 \n", "\n", " s_nom_mod s_nom_extendable ... v_ang_min v_ang_max sub_network \\\n", "Line ... \n", "line 0 0.0 False ... -inf inf \n", "line 1 0.0 False ... -inf inf \n", "line 2 0.0 False ... -inf inf \n", "\n", " x_pu r_pu g_pu b_pu x_pu_eff r_pu_eff s_nom_opt \n", "Line \n", "line 0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "line 1 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "line 2 0.0 0.0 0.0 0.0 0.0 0.0 0.0 \n", "\n", "[3 rows x 31 columns]" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for i in range(3):\n", " network.add(\n", " \"Line\",\n", " f\"line {i}\",\n", " bus0=f\"electric bus {i}\",\n", " bus1=f\"electric bus {(i + 1) % 3}\",\n", " x=0.1,\n", " s_nom=1000,\n", " )\n", "network.lines" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We connect every electricity bus to its corresponding heat bus using a heat pump with Coefficient of Performance (COP) 3" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
bus0bus1typecarrierefficiencyactivebuild_yearlifetimep_nomp_nom_mod...shut_down_costmin_up_timemin_down_timeup_time_beforedown_time_beforeramp_limit_upramp_limit_downramp_limit_start_upramp_limit_shut_downp_nom_opt
Link
heat pump 0electric bus 0heat bus 03.0True0inf100.00.0...0.00010NaNNaN1.01.00.0
heat pump 1electric bus 1heat bus 13.0True0inf100.00.0...0.00010NaNNaN1.01.00.0
heat pump 2electric bus 2heat bus 23.0True0inf100.00.0...0.00010NaNNaN1.01.00.0
\n", "

3 rows × 34 columns

\n", "
" ], "text/plain": [ " bus0 bus1 type carrier efficiency active \\\n", "Link \n", "heat pump 0 electric bus 0 heat bus 0 3.0 True \n", "heat pump 1 electric bus 1 heat bus 1 3.0 True \n", "heat pump 2 electric bus 2 heat bus 2 3.0 True \n", "\n", " build_year lifetime p_nom p_nom_mod ... shut_down_cost \\\n", "Link ... \n", "heat pump 0 0 inf 100.0 0.0 ... 0.0 \n", "heat pump 1 0 inf 100.0 0.0 ... 0.0 \n", "heat pump 2 0 inf 100.0 0.0 ... 0.0 \n", "\n", " min_up_time min_down_time up_time_before down_time_before \\\n", "Link \n", "heat pump 0 0 0 1 0 \n", "heat pump 1 0 0 1 0 \n", "heat pump 2 0 0 1 0 \n", "\n", " ramp_limit_up ramp_limit_down ramp_limit_start_up \\\n", "Link \n", "heat pump 0 NaN NaN 1.0 \n", "heat pump 1 NaN NaN 1.0 \n", "heat pump 2 NaN NaN 1.0 \n", "\n", " ramp_limit_shut_down p_nom_opt \n", "Link \n", "heat pump 0 1.0 0.0 \n", "heat pump 1 1.0 0.0 \n", "heat pump 2 1.0 0.0 \n", "\n", "[3 rows x 34 columns]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for i in range(3):\n", " network.add(\n", " \"Link\",\n", " f\"heat pump {i}\",\n", " bus0=f\"electric bus {i}\",\n", " bus1=f\"heat bus {i}\",\n", " p_nom=100,\n", " efficiency=3.0,\n", " )\n", " \n", "network.links" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We add a gas generator at electric bus 0 and a boiler at all heat buses" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
buscontroltypep_nomp_nom_modp_nom_extendablep_nom_minp_nom_maxp_min_pup_max_pu...min_up_timemin_down_timeup_time_beforedown_time_beforeramp_limit_upramp_limit_downramp_limit_start_upramp_limit_shut_downweightp_nom_opt
Generator
gas generatorelectric bus 0PQ100.00.0False0.0inf0.01.0...0010NaNNaN1.01.01.00.0
boiler 0heat bus 0PQ1000.00.0False0.0inf0.01.0...0010NaNNaN1.01.01.00.0
boiler 1heat bus 1PQ1000.00.0False0.0inf0.01.0...0010NaNNaN1.01.01.00.0
boiler 2heat bus 2PQ1000.00.0False0.0inf0.01.0...0010NaNNaN1.01.01.00.0
\n", "

4 rows × 37 columns

\n", "
" ], "text/plain": [ " bus control type p_nom p_nom_mod \\\n", "Generator \n", "gas generator electric bus 0 PQ 100.0 0.0 \n", "boiler 0 heat bus 0 PQ 1000.0 0.0 \n", "boiler 1 heat bus 1 PQ 1000.0 0.0 \n", "boiler 2 heat bus 2 PQ 1000.0 0.0 \n", "\n", " p_nom_extendable p_nom_min p_nom_max p_min_pu p_max_pu \\\n", "Generator \n", "gas generator False 0.0 inf 0.0 1.0 \n", "boiler 0 False 0.0 inf 0.0 1.0 \n", "boiler 1 False 0.0 inf 0.0 1.0 \n", "boiler 2 False 0.0 inf 0.0 1.0 \n", "\n", " ... min_up_time min_down_time up_time_before \\\n", "Generator ... \n", "gas generator ... 0 0 1 \n", "boiler 0 ... 0 0 1 \n", "boiler 1 ... 0 0 1 \n", "boiler 2 ... 0 0 1 \n", "\n", " down_time_before ramp_limit_up ramp_limit_down \\\n", "Generator \n", "gas generator 0 NaN NaN \n", "boiler 0 0 NaN NaN \n", "boiler 1 0 NaN NaN \n", "boiler 2 0 NaN NaN \n", "\n", " ramp_limit_start_up ramp_limit_shut_down weight p_nom_opt \n", "Generator \n", "gas generator 1.0 1.0 1.0 0.0 \n", "boiler 0 1.0 1.0 1.0 0.0 \n", "boiler 1 1.0 1.0 1.0 0.0 \n", "boiler 2 1.0 1.0 1.0 0.0 \n", "\n", "[4 rows x 37 columns]" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "network.add(\n", " \"Generator\",\n", " \"gas generator\",\n", " bus=\"electric bus 0\",\n", " p_nom=100,\n", " marginal_cost=50,\n", " efficiency=0.3,\n", ")\n", "\n", "for i in range(3):\n", " network.add(\n", " \"Generator\",\n", " f\"boiler {i}\",\n", " bus=f\"heat bus {i}\",\n", " p_nom=1000,\n", " efficiency=0.9,\n", " marginal_cost=20.0,\n", " carrier=\"gas\",\n", " )\n", "\n", "network.generators" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Add electric loads and heat loads." ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
buscarriertypep_setq_setsignactive
Load
electric load 0electric bus 00.00.0-1.0True
electric load 1electric bus 110.00.0-1.0True
electric load 2electric bus 220.00.0-1.0True
heat load 0heat bus 030.00.0-1.0True
heat load 1heat bus 120.00.0-1.0True
heat load 2heat bus 210.00.0-1.0True
\n", "
" ], "text/plain": [ " bus carrier type p_set q_set sign active\n", "Load \n", "electric load 0 electric bus 0 0.0 0.0 -1.0 True\n", "electric load 1 electric bus 1 10.0 0.0 -1.0 True\n", "electric load 2 electric bus 2 20.0 0.0 -1.0 True\n", "heat load 0 heat bus 0 30.0 0.0 -1.0 True\n", "heat load 1 heat bus 1 20.0 0.0 -1.0 True\n", "heat load 2 heat bus 2 10.0 0.0 -1.0 True" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "for i in range(3):\n", " network.add(\n", " \"Load\",\n", " f\"electric load {i}\",\n", " bus=f\"electric bus {i}\",\n", " p_set=i * 10,\n", " )\n", "\n", "for i in range(3):\n", " network.add(\n", " \"Load\",\n", " f\"heat load {i}\",\n", " bus=f\"heat bus {i}\",\n", " p_set=(3 - i) * 10,\n", " )\n", "\n", "network.loads" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:pypsa.consistency:The following generators have carriers which are not defined:\n", "Index(['boiler 0', 'boiler 1', 'boiler 2'], dtype='object', name='Generator')\n", "WARNING:pypsa.consistency:The following buses have carriers which are not defined:\n", "Index(['electric bus 0', 'heat bus 0', 'electric bus 1', 'heat bus 1',\n", " 'electric bus 2', 'heat bus 2'],\n", " dtype='object', name='Bus')\n", "WARNING:pypsa.consistency:The following links have carriers which are not defined:\n", "Index(['heat pump 0', 'heat pump 1', 'heat pump 2'], dtype='object', name='Link')\n", "WARNING:pypsa.consistency:The following lines have carriers which are not defined:\n", "Index(['line 0', 'line 1', 'line 2'], dtype='object', name='Line')\n", "WARNING:pypsa.consistency:The following lines have zero r, which could break the linear load flow:\n", "Index(['line 0', 'line 1', 'line 2'], dtype='object', name='Line')\n", "WARNING:pypsa.consistency:The following generators have carriers which are not defined:\n", "Index(['boiler 0', 'boiler 1', 'boiler 2'], dtype='object', name='Generator')\n", "WARNING:pypsa.consistency:The following buses have carriers which are not defined:\n", "Index(['electric bus 0', 'heat bus 0', 'electric bus 1', 'heat bus 1',\n", " 'electric bus 2', 'heat bus 2'],\n", " dtype='object', name='Bus')\n", "WARNING:pypsa.consistency:The following links have carriers which are not defined:\n", "Index(['heat pump 0', 'heat pump 1', 'heat pump 2'], dtype='object', name='Link')\n", "WARNING:pypsa.consistency:The following lines have carriers which are not defined:\n", "Index(['line 0', 'line 1', 'line 2'], dtype='object', name='Line')\n", "WARNING:pypsa.consistency:The following lines have zero r, which could break the linear load flow:\n", "Index(['line 0', 'line 1', 'line 2'], dtype='object', name='Line')\n", "INFO:linopy.model: Solve problem using Highs solver\n", "INFO:linopy.io: Writing time: 0.04s\n", "INFO:linopy.constants: Optimization successful: \n", "Status: ok\n", "Termination condition: optimal\n", "Solution: 10 primals, 27 duals\n", "Objective: 2.50e+03\n", "Solver model: available\n", "Solver message: optimal\n", "\n", "INFO:pypsa.optimization.optimize:The shadow-prices of the constraints Generator-fix-p-lower, Generator-fix-p-upper, Line-fix-s-lower, Line-fix-s-upper, Link-fix-p-lower, Link-fix-p-upper, Kirchhoff-Voltage-Law were not assigned to the network.\n" ] }, { "data": { "text/plain": [ "('ok', 'optimal')" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "network.optimize()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can calculate and plot the energy produced by every boiler, heat pumps and trasmitted through the lines" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "demands = network.loads_t.p.loc[\"now\"]\n", "generators = network.generators_t.p.loc[\"now\"]\n", "links = network.links_t.p0.loc[\"now\"]\n", "lines = network.lines_t.p0.loc[\"now\"]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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O3fu1P3336/bb79d/fv31w9/+ENt3LhR48aNk3T53kP/9V//pS5duig4OFg/+MEP9NFHH7l+TlZWlu644w698sor6tmzp0JCQjRp0iTV1ta6jrEsS4sXL9att96qwMBADRw4UH/5y19c+9999105HA699dZbSkxMlNPp1Pvvv68DBw4oLS1NERER6tSpk+688069/fbbru9LTk7WkSNHlJmZKYfDIYfD4dr317/+Vf369ZPT6VTPnj31wgsvuP379+zZU4sWLdK0adMUEhKixx9/3Ot/xgC+HfEB+InTp09r8+bNmj59ujp27HjVYxwOhyzL0tixY1VZWak333xTxcXFGjx4sO655x6dOXPGdeyBAwe0YcMGvfHGG3rjjTdUWFio559/3rX/F7/4hVatWqXly5errKxMmZmZevDBB1VYWOj2nLNnz1ZOTo727NmjAQMGqK6uTmPGjNHbb7+t0tJS3XvvvRo3bpyOHj0qSVq3bp26deumZ555RidOnNCJEyckScXFxbr//vs1adIk7d69W1lZWZo/f75Wr17t9ny/+tWvlJCQoOLiYs2fP98bf7QAPGUB8Avbt2+3JFnr1q1z2x4eHm517NjR6tixozV79mzrnXfesYKDg60vvvjC7bhevXpZv//97y3LsqwFCxZYHTp0sGpqalz7n3rqKSspKcmyLMuqq6uzAgICrKKiIref8eijj1qTJ0+2LMuy/vGPf1iSrA0bNnzr7PHx8dZvfvMb19c9evSwli5d6nZMenq6lZKS4rbtqaeesuLj492+b/z48d/6fAB8i2s+AD/z1ZcppMt3T25qatKUKVNUX1+v4uJi1dXVKTw83O24ixcv6sCBA66ve/bsqaCgINfXUVFRqqqqkiR98skn+uKLL5SSkuL2MxoaGjRo0CC3bYmJiW5fnz9/XgsXLtQbb7yh48eP69KlS7p48aLrzMfX2bNnj9LS0ty2DR8+XLm5uWpsbFTbtm2v+nwAzCM+AD/Ru3dvORwOffrpp27bb731VklSYGCgJKmpqUlRUVF69913m/2M0NBQ1z/fdNNNbvscDoeamppcP0OSNm7cqK5du7od53Q63b7+95eAnnrqKb311lv69a9/rd69eyswMFD/+Z//qYaGhm/897Msq1lYWVe5ddXXveQEwBziA/AT4eHhSklJUV5enp588smv/SU8ePBgVVZWql27durZs+c1PVd8fLycTqeOHj2qESNGePS977//vqZNm6YJEyZIunzn58OHD7sd0759ezU2NjZ7zq1bt7ptKyoqUp8+fVxnPQDcGLjgFPAjv/vd73Tp0iUlJibqz3/+s/bs2aO9e/fqj3/8oz799FO1bdtWo0aN0tChQzV+/Hi99dZbOnz4sIqKivSLX/xCO3fu/E7PExQUpFmzZikzM1P5+fk6cOCASktL9dvf/lb5+fnf+L29e/fWunXrtGvXLn300UdKT093nUm5omfPnnrvvfdUUVGhU6dOSZJ+9rOf6Z133tGzzz6rffv2KT8/X3l5eZo1a9a1/WEB8BnOfAB+pFevXiotLVV2drbmzp2rY8eOyel0Kj4+XrNmzVJGRoYcDofefPNNzZs3T4888ohOnjypyMhI3X333YqIiPjOz/Xss8+qS5cuysnJ0cGDBxUaGqrBgwfr5z//+Td+39KlS/XII49o2LBh6ty5s55++mnV1NS4HfPMM8/oiSeeUK9evVRfXy/LsjR48GD97//+r375y1/q2WefVVRUlJ555hlNmzbtWv6oAPiQw7rai6IAAAA+wssuAADAKOIDAAAYRXwAAACjiA8AAGAU8QEAAIwiPgAAgFHEBwAAMIr4AAAARhEfAADAKOIDAAAYRXwAAACj/h+zM4Z4UL8l9wAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "generators.plot.bar()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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ACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUokPACCV+AAAUvVbfPzwhz+M1tbWGDp0aEybNi1+/etf99elAIABpF/i45ZbbonzzjsvLr744njwwQfj2GOPjRNOOCG2bt3aH5cDAAaQfomPhQsXxr/8y7/E5z//+XjXu94VixYtipaWlliyZEl/XA4AGECGVPob7ty5M9avXx9z587tc3zmzJlx33337XZ+d3d3dHd39z7u7OyMiIiurq5Kj1ZxPd07ih6hJgyE/60HCjtZOfayMuxk5VT7Tr46X7lc/rvnVjw+/vjHP8auXbti9OjRfY6PHj062tvbdzu/ra0t5s+fv9vxlpaWSo9GlWpaVPQEsDt7SbUZKDu5ffv2aGpqet1zKh4fryqVSn0el8vl3Y5FRMybNy/mzJnT+7inpyeef/752G+//fZ4Pm9cV1dXtLS0xLZt22L48OFFjwN2kqpkLyujXC7H9u3bo7m5+e+eW/H4ePvb3x6DBw/e7S5HR0fHbndDIiIaGhqioaGhz7F999230mPVteHDh/s/FFXFTlKN7OVb9/fueLyq4m843WuvvWLatGmxfPnyPseXL18eRx11VKUvBwAMMP3yssucOXPiM5/5TBx++OFx5JFHxtVXXx1bt26NL3zhC/1xOQBgAOmX+PjkJz8Zzz33XCxYsCCeffbZmDx5ctx1111xwAEH9MfleA0NDQ3xzW9+c7eXtaAodpJqZC/zlcpv5GdiAAAqxGe7AACpxAcAkEp8AACpxAcAkEp8AACpxEeNWLduXZx++unR2toae++9dwwbNixaW1vj9NNPjwceeKDo8aCPxx9/PI4//viix6AOPfvss3HjjTfGXXfdFTt37uzz3IsvvhgLFiwoaLL64kdta8Btt90W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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "links.plot.bar()" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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/LtSevyVldNOOy0uuOCCrMfoVSoqKvxPSFKsSVJjTZ4av+6KyrvcYAsAJE2sAABJEyt0yOfz8dWvfjXy+XzWo0BEWJOkx5rMRo+/wRYA6N1cWQEAkiZWAICkiRUAIGliBQBImlgBAJLW47/Blvfn1VdfjdbW1sjlclFdXR3Dhg3LeiQA6MSVlT7qz//8z6O+vj4uvPDCaGhoiHHjxsWFF14Y9fX1cd9992U9HnTyn//5n9GvX7+sx6CPWb16ddx2222xcOHC+NnPftbp2IEDB+ITn/hERpP1PWKlD/ra174WTU1N0djYGFu2bInXX389XnvttdiyZUs0NjZGU1NT/Nmf/VnWY0InvhKK7vTII4/EH/zBH0Rra2ts2LAhLr300vje977Xcfzw4cOxbt26DCfsW3wpXB9UX18fK1asiE9+8pNdHv/7v//7aGxsjNdff717B6PPuuGGG457vK2tLZ5++uk4cuRIN01EXzdmzJj47Gc/G1/4whciIuJv//Zv47Of/Wzcd999ceutt8Ybb7wRdXV11mQ3cc9KH7Rv3774rd/6rWMeHzVqVBw4cKAbJ6Kve/zxx+Pqq6+O6urqLo/7hUB3+5//+Z+49tprOx7feOONUVVVFddff328/fbb8alPfSrD6foesdIHXX755bF06dJYtWpV9O/feQm88847sWzZsrj88sszmo6+6AMf+EB8+tOfjltvvbXL41u3bo1/+qd/6uap6MsqKirijTfeiBEjRnTsmzBhQjz++ONx7bXXxmuvvZbhdH2PWOmDVqxYEZMmTYrzzz8/rrrqqqiuro5cLhetra3xzDPPRD6fj7Vr12Y9Jn3I2LFj4z/+4z+OGSv5fD6GDh3azVPRl11++eXxox/9KMaNG9dp/1VXXdURLHQf96z0UQcPHoy//uu/jo0bN0Zra2tERNTU1ERDQ0NMnz49KioqMp6QvqRYLMaRI0di4MCBWY8CERGxbt26WL9+fSxatKjL408//XQ89NBD8eCDD3bzZH2TWAEAkuajywBA0sQKAJA0sQIAJE2sAABJEyvEtm3b4oknnoi33norInytOdmzJkmNNZktsdKH7du3L37v934vRo0aFb//+78fu3fvjoiI2267Le64446Mp6MvsiZJjTWZBrHSh33xi1+M/v37x86dOzt9v8XNN98c//zP/5zhZPRV1iSpsSbT4Bts+7A1a9bEE088ERdccEGn/SNHjoxXX301o6noy6xJUmNNpsGVlT7s0KFDXX5j6N69eyOfz2cwEX2dNUlqrMk0iJU+7Morr4yHH36443Eul4v29vZYvnx5TJw4McPJ6KusSVJjTabB1+33YS+99FJMmDAhxo4dG08++WRcf/318eKLL8b+/fvj3//93+Oiiy7KekT6GGuS1FiTaRArfVxra2usXLkytmzZEu3t7TFmzJiYM2dO1NbWZj0afZQ1SWqsyeyJFQAgaT4N1Me9+eab8eMf/zj27NkT7e3tnY790R/9UUZT0ZdZk6TGmsyeKyt92OOPPx5/+Id/GIcOHYrBgwdHLpfrOJbL5WL//v0ZTkdfZE2SGmsyDWKlD3v3GxmXLVvW5UfzoLtZk6TGmkyDWOnDBg0aFC+88EJceOGFWY8CEWFNkh5rMg2+Z6UPmzx5cmzevDnrMaCDNUlqrMk0uMG2D5s6dWr8yZ/8Sbz00kvxoQ99KE4//fROx6+//vqMJqOvsiZJjTWZBm8D9WGnnXbsC2u5XC6OHDnSjdOANUl6rMk0iBUAIGnuWQEAkuaelT7m/vvvj8997nNx5plnxv3333/cc+fOndtNU9GXWZOkxppMj7eB+pgRI0bE5s2b49xzz40RI0Yc87xcLhevvPJKN05GX2VNkhprMj1iBQBImntWAICkuWelj5k/f/4Jn3vvvfeWcRL4JWuS1FiT6RErfczzzz9/Que99x/rgnKyJkmNNZke96wAAElzzwoAkDSxAgAkTawAAEkTKwBA0sQKkIRcLhePPfZY1mMACfLRZaDbzJw5M958880uo2T37t1xzjnndP9QQPLECpCEmpqarEcAEuVtICAJ730baMeOHZHL5eIHP/hBTJw4MQYOHBiXXHJJbNiwodNz1q9fH1deeWUMGDAg6uvrY+7cuXHo0KEMpgfKSawAyVq8eHEsWLAgtm7dGqNGjYrPfOYz8c4770RExAsvvBCTJ0+OG264IX7yk5/Eo48+Gs8++2w0NjZmPDVwqokVIFkLFiyIqVOnxqhRo2LJkiXx6quvxrZt2yIiYvny5TF9+vSYN29ejBw5MsaPHx/3339/PPzww/F///d/GU8OnEpiBUjWhz/84Y4/19bWRkTEnj17IiJiy5YtsWrVqjjrrLM6tsmTJ0d7e3ts3749k3mB8nCDLZCs008/vePP7/6jce3t7R3/vf3222Pu3LlHPW/o0KHdMyDQLcQK0CONGTMmXnzxxbj44ouzHgUoM7ECdKu2trbYunVrp31Dhgw56df50pe+FOPGjYs5c+bErFmzYtCgQfHTn/401q5dGytWrDhF0wIpECtAt3r66afj0ksv7bRvxowZJ/06H/7wh2PdunWxePHi+PjHPx6lUikuuuiiuPnmm0/VqEAicqVSqZT1EAAAx+LTQABA0sQKAJA0sQIAJE2sAABJEysAQNLECgCQNLECACRNrAAASRMrAEDSxAoAkDSxAgAkTawAAEn7f5xB7U+WoSxUAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lines.plot.bar()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**(b) Repeat (a) assuming that the marginal cost of heat pumps is 10 EUR/MWh.**" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We update the marginal cost of heat pumps and redo the optimization" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "network.links.marginal_cost = 10" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "WARNING:pypsa.consistency:The following generators have carriers which are not defined:\n", "Index(['boiler 0', 'boiler 1', 'boiler 2'], dtype='object', name='Generator')\n", "WARNING:pypsa.consistency:The following buses have carriers which are not defined:\n", "Index(['electric bus 0', 'heat bus 0', 'electric bus 1', 'heat bus 1',\n", " 'electric bus 2', 'heat bus 2'],\n", " dtype='object', name='Bus')\n", "WARNING:pypsa.consistency:The following sub_networks have carriers which are not defined:\n", "Index(['0'], dtype='object', name='SubNetwork')\n", "WARNING:pypsa.consistency:The following links have carriers which are not defined:\n", "Index(['heat pump 0', 'heat pump 1', 'heat pump 2'], dtype='object', name='Link')\n", "WARNING:pypsa.consistency:The following lines have carriers which are not defined:\n", "Index(['line 0', 'line 1', 'line 2'], dtype='object', name='Line')\n", "WARNING:pypsa.consistency:The following lines have zero r, which could break the linear load flow:\n", "Index(['line 0', 'line 1', 'line 2'], dtype='object', name='Line')\n", "WARNING:pypsa.consistency:The following generators have carriers which are not defined:\n", "Index(['boiler 0', 'boiler 1', 'boiler 2'], dtype='object', name='Generator')\n", "WARNING:pypsa.consistency:The following buses have carriers which are not defined:\n", "Index(['electric bus 0', 'heat bus 0', 'electric bus 1', 'heat bus 1',\n", " 'electric bus 2', 'heat bus 2'],\n", " dtype='object', name='Bus')\n", "WARNING:pypsa.consistency:The following sub_networks have carriers which are not defined:\n", "Index(['0'], dtype='object', name='SubNetwork')\n", "WARNING:pypsa.consistency:The following links have carriers which are not defined:\n", "Index(['heat pump 0', 'heat pump 1', 'heat pump 2'], dtype='object', name='Link')\n", "WARNING:pypsa.consistency:The following lines have carriers which are not defined:\n", "Index(['line 0', 'line 1', 'line 2'], dtype='object', name='Line')\n", "WARNING:pypsa.consistency:The following lines have zero r, which could break the linear load flow:\n", "Index(['line 0', 'line 1', 'line 2'], dtype='object', name='Line')\n", "INFO:linopy.model: Solve problem using Highs solver\n", "INFO:linopy.io: Writing time: 0.03s\n", "INFO:linopy.constants: Optimization successful: \n", "Status: ok\n", "Termination condition: optimal\n", "Solution: 10 primals, 27 duals\n", "Objective: 2.70e+03\n", "Solver model: available\n", "Solver message: optimal\n", "\n", "INFO:pypsa.optimization.optimize:The shadow-prices of the constraints Generator-fix-p-lower, Generator-fix-p-upper, Line-fix-s-lower, Line-fix-s-upper, Link-fix-p-lower, Link-fix-p-upper, Kirchhoff-Voltage-Law were not assigned to the network.\n" ] } ], "source": [ "network.optimize()\n", "\n", "demands = network.loads_t.p.loc[\"now\"]\n", "generators = network.generators_t.p.loc[\"now\"]\n", "links = network.links_t.p0.loc[\"now\"]\n", "lines = network.lines_t.p0.loc[\"now\"]" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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/fRT/eUvf1F6eroWL15s93jwMtbbv7Det8CCLUaOHGnNmzfPsizLmjNnjnX33Xdbzz//vBUdHW0NHTrU5ungC2+++abVsmVLy+FwWA6Hw2rRooW1ePFiu8eCj7De/oX19gzf82GT8+fP68qVK4qMjFRVVZV++9vfauvWrWrTpo1mzpypn/zkJ3aPCB85d+6cqqqqFBoaavcoMID19i+s980hPmxw9epVLV++XI8++qjCw8PtHgcAAKOID5twCebar1u3bte8eOC17N6928fTwNdYb//Cet8eTji1Sc+ePbVnzx7ioxYbMmSI3SPAINbbv7Det4cjHzb5v//7P02bNk2TJ0/mEswAAL9CfNiESzADAPwVb7vYhEsw134hISE6dOiQmjVrpp/85Cc3fH/4/PnzBieDL7De/oX1vj3Eh00416P2W7BggYKCgiSJi0v5Adbbv7Det4e3XWz09ttv64033tCxY8e0fft2RUdHKyMjQzExMRo8eLDd4wEA4BMc+bDJokWL9Ktf/UqTJk3Sr3/962qXYCY+ap/KykqtWbNGBw4ckMPhUIcOHfT444+7XQUTtQfr7V9Yb89w5MMmHTp0UFpamoYMGaKgoCB99tlnuueee/TFF18oLi5O586ds3tEeNHXX3+tAQMGKD8/X+3bt5dlWTp06JCioqK0du1atW7d2u4R4UWst39hvT1HfNgkMDBQX331laKjo93i4/Dhw+rSpYsuX75s94jwogEDBsiyLC1fvlwhISGSpKKiIj399NOqU6eO1q5da/OE8CbW27+w3p7jbRebfH8J5n8/8ZRLMNdOOTk52rFjh+s/TJLUtGlTvfbaa+rTp4+Nk8EXWG//wnp7jviwCZdg9i9Op1OlpaXVtpeVlalevXo2TARfYr39C+t9C8xdQBf/jksw+49nnnnG6tixo7Vjxw6rqqrKqqqqsrZv32516tTJGj16tN3jwctYb//CenuOcz7uAFyCufa7ePGiRo8erb///e+66667JH13dePHH39cS5cuVXBwsM0TwptYb//CenuO+AAMOnz4sA4cOCDpu088tWnTxuaJ4Eust39hvW8e8WGTf/3rX5oyZYo+/PBDFRYW6t+XgWu71F7fr/XNXo4bNRvr7V9Y75tT/epmMCI5OVm7d+/WzJkz9de//lWrVq1yu6H2eeutt9SpUyfVr19f9evX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VVWKiIjQ5s2bqz1HkyZNXL++66673B5zOByqqqpyPYckrV27Vs2bN3fbz+l0ut3/97eAXnzxRW3YsEG//e1v1aZNGwUGBupnP/uZKioqbvj7syyrWlhZ17h01fXecgJgDvEB+ImmTZsqISFBmZmZmjhx4nX/Ee7evbsKCgoUEBCgVq1a3dJrdejQQU6nUydPnlS/fv08+tmPPvpIycnJGjp0qKTvrvx8/Phxt33q1aunysrKaq+5detWt23btm1Tu3btXEc9ANwZOOEU8CN/+MMfdPXqVcXGxuqdd97RgQMHdPDgQf35z3/WV199pbp166p///7q1auXhgwZog0bNuj48ePatm2bfvnLX2rXrl039TpBQUGaMmWKJk+erKysLB05ckR79uzR73//e2VlZd3wZ9u0aaNVq1Zp7969+uyzzzRq1CjXkZTvtWrVSlu2bFF+fr7OnTsnSfrFL36hDz/8UK+++qoOHTqkrKwsZWZmasqUKbf2hwXAZzjyAfiR1q1ba8+ePUpLS9P06dN16tQpOZ1OdejQQVOmTNH48ePlcDi0bt06zZgxQ2PGjNHZs2cVHh6uvn37Kiws7KZf69VXX1VoaKjS09N19OhRNWnSRN27d9fLL798w59bsGCBxowZo969e6tZs2Z66aWXVFJS4rbPK6+8onHjxql169YqLy+XZVnq3r27/vd//1e/+tWv9OqrryoiIkKvvPKKkpOTb+WPCoAPOaxrvSkKAADgI7ztAgAAjCI+AACAUcQHAAAwivgAAABGER8AAMAo4gMAABhFfAAAAKOIDwAAYBTxAQAAjCI+AACAUcQHAAAw6v8BD5yTHe4QweQAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "generators.plot.bar()\n" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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161bF6NGjYrhw4fHypUr46abborx48fHU0891bDPCy+8EJdeemn85je/iZqamujTp09UV1fHe++919KnAwC0AZlsNpttyV8wdOjQGDx4cNx9990N20444YS48MILY9q0aU32v+GGG2LevHmxZs2ahm3jxo2L1atXR01NTbO/Y8+ePdG9e/eYPXt2/O3f/u0Xrqm+vj5KS0ujrq4uSkpKvsRZAQCtLZe/3y16BWfXrl2xYsWKqK6ubrS9uro6lixZ0uwxNTU1TfY/++yzY/ny5bF79+5mj9mxY0fs3r07Dj300Gaf37lzZ9TX1zd6AADpatHA2bp1a+zZsyfKysoabS8rK4va2tpmj6mtrW12/08//TS2bt3a7DE33nhjHHnkkTFixIhmn582bVqUlpY2PMrLy7/E2QAAbUWr3GScyWQa/ZzNZpts+6L9m9seETFjxox47LHHYs6cOVFcXNzs602ePDnq6uoaHhs3bsz1FACANqRTS754jx49omPHjk2u1mzZsqXJVZrP9ezZs9n9O3XqFIcddlij7bfffnvcdttt8eyzz8agQYP2uY6ioqIoKir6kmcBALQ1LXoFp0uXLlFZWRmLFi1qtH3RokUxbNiwZo+pqqpqsv/ChQtjyJAh0blz54ZtP/nJT+JHP/pRLFiwIIYMGfLVLx4AaLNa/C2qiRMnxv333x8PPvhgrFmzJq699trYsGFDjBs3LiI+e/vof3/yady4cfHOO+/ExIkTY82aNfHggw/GAw88EJMmTWrYZ8aMGfGDH/wgHnzwwejXr1/U1tZGbW1t/PGPf2zp0wEA2oAWfYsqImLMmDGxbdu2mDp1amzevDkGDhwY8+fPj759+0ZExObNmxt9J05FRUXMnz8/rr322rjzzjujd+/eMWvWrLjooosa9rnrrrti165d8dd//deNftctt9wSU6ZMaelTAgAKXIt/D04h8j04AND2FMz34AAA5IPAAQCSI3AAgOQIHAAgOQIHAEiOwAEAkiNwAIDkCBwAIDkCBwBIjsABAJIjcACA5AgcACA5AgcASI7AAQCSI3AAgOQIHAAgOQIHAEiOwAEAkiNwAIDkCBwAIDkCBwBIjsABAJIjcACA5AgcACA5AgcASI7AAQCSI3AAgOQIHAAgOQIHAEiOwAEAkiNwAIDkCBwAIDkCBwBIjsABAJIjcACA5AgcACA5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Zo+pqKiInj17xqJFi+Lkk0+OiIhdu3bF4sWLY/r06Q371dfXx9lnnx1FRUUxb968KC4uzvU0AICEtdg9OCeccEKMHDkyrrzyyli6dGksXbo0rrzyyjjvvPMafYJqwIABMXfu3Ij47K2pCRMmxG233RZz586N3/3ud3HFFVdE165d47LLLouIz67cVFdXx8cffxwPPPBA1NfXR21tbdTW1saePXta6nQAgDYk5ys4uXj00Udj/PjxDZ+KGj16dMyePbvRPmvXrm30JX3XX399fPLJJ/H9738/Pvzwwxg6dGgsXLgwunXrFhERK1asiFdeeSUiIo455phGr7Vu3bro169fC54RANAWtNj34BSyXD5HDwAUhoL4HhwAgHwROABAcgQOAJAcgQMAJEfgAADJETgAQHIEDgCQHIEDACRH4AAAyRE4AEByBA4AkByBAwAkR+AAAMkROABAcgQOAJAcgQMAJEfgAADJETgAQHIEDgCQHIEDACRH4AAAyRE4AEByBA4AkByBAwAkR+AAAMkROABAcgQOAJAcgQMAJEfgAADJETgAQHIEDgCQHIEDACRH4AAAyRE4AEByBA4AkByBAwAkR+AAAMkROABAcgQOAJAcgQMAJEfgAADJETgAQHIEDgCQHIEDACRH4AAAyRE4AEByBA4AkByBAwAkR+AAAMkROABAcgQOAJAcgQMAJEfgAADJETgAQHIEDgCQHIEDACSnRQPnww8/jLFjx0ZpaWmUlpbG2LFj46OPPtrvMdlsNqZMmRK9e/eOgw46KE4//fR4880397nvOeecE5lMJp5++umv/gQAgDapRQPnsssui1WrVsWCBQtiwYIFsWrVqhg7dux+j5kxY0bMnDkzZs+eHcuWLYuePXvGWWedFdu3b2+y7x133BGZTKallg8AtFGdWuqF16xZEwsWLIilS5fG0KFDIyLivvvui6qqqli7dm0cf/zxTY7JZrNxxx13xM033xzf/va3IyLioYceirKysvjFL34RV111VcO+q1evjpkzZ8ayZcuiV69e+13Lzp07Y+fOnQ0/19fXfxWnCAAUqBa7glNTUxOlpaUNcRMRceqpp0ZpaWksWbKk2WPWrVsXtbW1UV1d3bCtqKgoTjvttEbH7NixIy699NKYPXt29OzZ8wvXMm3atIa3yUpLS6O8vPzPODMAoNC1WODU1tbGEUcc0WT7EUccEbW1tfs8JiKirKys0faysrJGx1x77bUxbNiwuOCCCw5oLZMnT466urqGx8aNGw/0NACANijnwJkyZUpkMpn9PpYvXx4R0ez9Mdls9gvvm/m/z//vY+bNmxfPP/983HHHHQe85qKioigpKWn0AADSlfM9OFdffXVccskl+92nX79+8frrr8f777/f5Lk//OEPTa7QfO7zt5tqa2sb3VezZcuWhmOef/75eOutt+KQQw5pdOxFF10Uw4cPjxdeeCGHswEAUpRz4PTo0SN69OjxhftVVVVFXV1dvPrqq3HKKadERMQrr7wSdXV1MWzYsGaPqaioiJ49e8aiRYvi5JNPjoiIXbt2xeLFi2P69OkREXHjjTfG9773vUbHfeMb34if/vSncf755+d6OgBAglrsU1QnnHBCjBw5Mq688sr4t3/7t4iI+Id/+Ic477zzGn2CasCAATFt2rT4q7/6q8hkMjFhwoS47bbb4thjj41jjz02brvttujatWtcdtllEfHZVZ7mbizu06dPVFRUtNTpAABtSIsFTkTEo48+GuPHj2/4VNTo0aNj9uzZjfZZu3Zt1NXVNfx8/fXXxyeffBLf//7348MPP4yhQ4fGwoULo1u3bi25VAAgIZlsNpvN9yJaW319fZSWlkZdXZ0bjgGgjcjl77d/iwoASI7AAQCSI3AAgOQIHAAgOQIHAEiOwAEAkiNwAIDkCBwAIDkCBwBIjsABAJIjcACA5AgcACA5AgcASI7AAQCSI3AAgOQIHAAgOQIHAEiOwAEAkiNwAIDkCBwAIDkCBwBIjsABAJIjcACA5AgcACA5AgcASI7AAQCSI3AAgOQIHAAgOQIHAEiOwAEAkiNwAIDkCBwAIDkCBwBIjsABAJIjcACA5AgcACA5AgcASI7AAQCSI3AAgOQIHAAgOQIHAEiOwAEAktMp3wvIh2w2GxER9fX1eV4JAHCgPv+7/fnf8f1pl4Gzffv2iIgoLy/P80oAgFxt3749SktL97tPJnsgGZSYvXv3xqZNm6Jbt26RyWTyvZw2rb6+PsrLy2Pjxo1RUlKS7+WAmaQgmcuvRjabje3bt0fv3r2jQ4f932XTLq/gdOjQIY466qh8LyMpJSUl/peWgmImKUTm8s/3RVduPucmYwAgOQIHAEiOwOHPUlRUFLfccksUFRXleykQEWaSwmQuW1+7vMkYAEibKzgAQHIEDgCQHIEDACRH4AAAyRE4AEByBA4HbNmyZfGd73wnKioq4qCDDoquXbtGRUVFfOc734nly5fne3nQyFtvvRVnnnlmvpdBO7R58+b4+c9/HvPnz49du3Y1eu7jjz+OqVOn5mll7YuPiXNAnn766bj44ovjL//yL+Pss8+OsrKyyGazsWXLlli4cGE899xz8e///u9xwQUX5HupEBERq1evjsGDB8eePXvyvRTakWXLlkV1dXXs3bs3du/eHUcddVTMnTs3vv71r0dExPvvvx+9e/c2l61A4HBABg4cGJdffnnceOONzT4/ffr0ePjhh+PNN99s5ZXRXs2aNWu/z7/33ntx++23+0NCqzrrrLOiT58+cd9998XHH38cN954YzzxxBOxaNGiOPnkkwVOKxI4HJDi4uJ4/fXX47jjjmv2+bVr18ZJJ50Uf/rTn1p5ZbRXHTp0iF69ekWXLl2afX7Xrl1RW1vrDwmt6tBDD42lS5c2+r+VM2bMiH/6p3+KX//619GnTx+B00ra5b8mTu6OPvroePrpp+P6669v9vlnnnkm+vfv38qroj3r27dvTJ8+PS6++OJmn1+1alVUVla28qogmvw/etdff3106NAhqqur48EHH8zTqtofgcMBmTp1alxyySWxePHiqK6ujrKysshkMlFbWxuLFi2KhQsXxuOPP57vZdKOVFZWxooVK/YZOJlMJlygprUNHDgwlixZEoMGDWq0fdKkSZHNZuPSSy/N08raH29RccBqamriX/7lX6KmpiZqa2sjIqJnz55RVVUV11xzTVRVVeV5hbQn//mf/xk7duyIIUOGNPv87t27Y9OmTdG3b99WXhnt2f333x+LFy+ORx55pNnnZ8yYEXfffXesW7eulVfW/ggcACA5vgcHAEiOwAEAkiNwAIDkCBwAIDkCBwBIjsAhZ88991ycd955cfTRR8cxxxwT5513Xjz77LP5XhbtmJmkEJnL/BI45GT27NkxcuTI6NatW1xzzTUxfvz4KCkpiVGjRsXs2bPzvTzaITNJITKX+ed7cMjJkUceGZMnT46rr7660fY777wzfvzjH8emTZvytDLaKzNJITKX+ecKDjmpr6+PkSNHNtleXV0d9fX1eVgR7Z2ZpBCZy/wTOORk9OjRMXfu3Cbbn3nmmTj//PPzsCLaOzNJITKX+ectKnLy//7f/4vbb789vvnNbzb821NLly6Nl19+Oa677rooKSlp2Hf8+PH5WibtiJmkEJnL/BM45KSiouKA9stkMvH222+38GrATFKYzGX+CRwAIDnuwQEAktMp3wugbclms/HLX/4yfvOb38SWLVti7969jZ6fM2dOnlZGe2UmKUTmMv8EDjm55ppr4t57740zzjgjysrKIpPJ5HtJtHNmkkJkLvPPPTjk5NBDD42f//znMWrUqHwvBSLCTFKYzGX+uQeHnJSWlkb//v3zvQxoYCYpROYy/wQOOZkyZUrceuut8cknn+R7KRARZpLCZC7zz1tU5GTHjh3x7W9/O15++eXo169fdO7cudHzr732Wp5WRntlJilE5jL/3GRMTq644opYsWJFXH755W6coyCYSQqRucw/V3DIycEHHxy//vWv41vf+la+lwIRYSYpTOYy/9yDQ07Ky8sb/RsqkG9mkkJkLvNP4JCTf/7nf47rr78+1q9fn++lQESYSQqTucw/b1GRk+7du8eOHTvi008/ja5duza5ce6DDz7I08por8wkhchc5p+bjMnJHXfcke8lQCNmkkJkLvPPFRwAIDmu4JCTDRs27Pf5Pn36tNJK4DNmkkJkLvPPFRxy0qFDh/1+n8OePXtacTVgJilM5jL/XMEhJytXrmz08+7du2PlypUxc+bM+PGPf5ynVdGemUkKkbnMP1dw+Er86le/ip/85Cfxwgsv5HspEBFmksJkLluP78HhK3HcccfFsmXL8r0MaGAmKUTmsvV4i4qc1NfXN/o5m83G5s2bY8qUKXHsscfmaVW0Z2aSQmQu80/gkJNDDjmkyY1z2Ww2ysvL4/HHH8/TqmjPzCSFyFzmn3twyMnixYsb/dyhQ4c4/PDD45hjjolOnfQyrc9MUojMZf4JHAAgOTKSnK1duzb+9V//NdasWROZTCYGDBgQV199dQwYMCDfS6OdMpMUInOZXz5FRU5++ctfxsCBA2PFihVx0kknxaBBg+K1116Lb3zjG/Hkk0/me3m0Q2aSQmQu889bVOSkf//+cfnll8fUqVMbbb/lllvikUceibfffjtPK6O9MpMUInOZfwKHnHTt2jVef/31OOaYYxpt//3vfx8nnXRS7NixI08ro70ykxQic5l/3qIiJ6effnq8+OKLTba/9NJLMXz48DysiPbOTFKIzGX+ucmYnIwePTpuuOGGWLFiRZx66qkREbF06dJ48skn49Zbb4158+Y12hdampmkEJnL/PMWFTnp0OHALvplMhn/Wi6twkxSiMxl/gkcACA57sEBAJIjcACA5AgcACA5AgcASI7AAQCSI3DISceOHWPLli1Ntm/bti06duyYhxXR3plJCpG5zD+BQ0729a0CO3fujC5durTyasBMUpjMZf75JmMOyKxZsyLisy+luv/+++NrX/taw3N79uyJ3/72tzFgwIB8LY92yExSiMxl4fBFfxyQioqKiIh455134qijjmp0ibVLly7Rr1+/mDp1agwdOjRfS6SdMZMUInNZOAQOOTnjjDNizpw50b1793wvBSLCTFKYzGX+CRwAIDnuwSFn7777bsybNy82bNgQu3btavTczJkz87Qq2jMzSSEyl/klcMjJc889F6NHj46KiopYu3ZtDBw4MNavXx/ZbDYGDx6c7+XRDplJCpG5zD8fEycnkydPjuuuuy5+97vfRXFxcTz11FOxcePGOO200+Jv/uZv8r082iEzSSEyl/nnHhxy0q1bt1i1alUcffTR0b1793jppZfi61//eqxevTouuOCCWL9+fb6XSDtjJilE5jL/XMEhJwcffHDs3LkzIiJ69+4db731VsNzW7duzdeyaMfMJIXIXOafe3DIyamnnhovv/xynHjiiXHuuefGddddF2+88UbMmTMnTj311Hwvj3bITFKIzGX+eYuKnLz99tvxxz/+MQYNGhQ7duyISZMmxUsvvRTHHHNM/PSnP42+ffvme4m0M2aSQmQu80/gAADJcQ8OOfvoo4/i/vvvj8mTJ8cHH3wQERGvvfZavPfee3leGe2VmaQQmcv8cgWHnLz++usxYsSIKC0tjfXr18fatWujf//+8cMf/jDeeeedePjhh/O9RNoZM0khMpf55woOOZk4cWJcccUV8fvf/z6Ki4sbtp9zzjnx29/+No8ro70ykxQic5l/AoecLFu2LK666qom24888siora3Nw4po78wkhchc5p/AISfFxcVRX1/fZPvatWvj8MMPz8OKaO/MJIXIXOafwCEnF1xwQUydOjV2794dERGZTCY2bNgQN954Y1x00UV5Xh3tkZmkEJnL/HOTMTmpr6+PUaNGxZtvvhnbt2+P3r17R21tbVRVVcX8+fPj4IMPzvcSaWfMJIXIXOafwOFLef755+O1116LvXv3xuDBg2PEiBH5XhLtnJmkEJnL/BE4AEBy/FtU5Oy5556L5557LrZs2RJ79+5t9NyDDz6Yp1XRnplJCpG5zC+BQ05uvfXWmDp1agwZMiR69eoVmUwm30uinTOTFCJzmX/eoiInvXr1ihkzZsTYsWPzvRSICDNJYTKX+edj4uRk165dMWzYsHwvAxqYSQqRucw/gUNOvve978UvfvGLfC8DGphJCpG5zD9vUfGFJk6c2PDfe/fujYceeigGDRoUgwYNis6dOzfad+bMma29PNohM0khMpeFReDwhc4444wD2i+TycTzzz/fwqsBM0lhMpeFReAAAMlxDw4AkByBAwAkR+AAAMkROABAcgQOAJAcgQO0WZlMJp5++ukD3v9nP/tZHHLIIS22HqBw+Mc2gYJ2xRVXxEcffdRsyGzevDm6d+/e+osCCp7AAdqsnj175nsJQIHyFhXQZv3vt6jWr18fmUwm5syZE2eccUZ07do1TjrppKipqdnn8du2bYtTTjklRo8eHX/6059aadVAaxA4QFJuvvnmmDRpUqxatSqOO+64uPTSS+PTTz9tst+7774bw4cPjwEDBsScOXOiuLg4D6sFWorAAZIyadKkOPfcc+O4446LW2+9Nd555534n//5n0b7/Pd//3d885vfjBEjRsRDDz0UnTp5tx5SI3CApAwaNKjhv3v16hUREVu2bGnY9sknn8S3vvWtuPDCC2PWrFmRyWRafY1AyxM4QFI6d+7c8N+fx8vevXsbthUVFcWIESPiV7/6Vbz77rutvj6gdQgcoF3p0KFDPPLII1FZWRlnnnlmbNq0Kd9LAlqAN56BgldXVxerVq1qtO3QQw/90q/XsWPHePTRR+PSSy+NM888M1544QUfOYfECByg4L3wwgtx8sknN9r2d3/3d3/Wa3bq1Ckee+yxGDNmTEPkHHHEEX/WawKFI5PNZrP5XgQAwFfJPTgAQHIEDgCQHIEDACRH4AAAyRE4AEByBA4AkByBAwAkR+AAAMkROABAcgQOAJAcgQMAJOf/A6CyZCI5CskoAAAAAElFTkSuQmCC", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "links.plot.bar()" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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9bFq1arYvHlzrFixIiIiDjvssNhnn31i7Nix8YlPfCIuvPDCmD17dqxfvz6uu+66mDhxok8CAQAR0c2xctNNN8W8efM6Hg8dOjQiIh577LEYPXp07L777jF//vy44oor4tOf/nT07ds3xo8fHz/4wQ+6cywAoBcpVavVatFDfBSVSiXq6+ujtbXV1RiAXm7QDfOLHmGX8cqt44oeYZt25Oe33w0EAKQmVgCA1MQKAJCaWAEAUhMrAEBqYgUASE2sAACpiRUAIDWxAgCkJlYAgNTECgCQmlgBAFITKwBAamIFAEhNrAAAqYkVACA1sQIApCZWAIDUxAoAkJpYAQBSEysAQGpiBQBITawAAKmJFQAgNbECAKQmVgCA1MQKAJCaWAEAUhMrAEBqYgUASE2sAACpiRUAIDWxAgCkJlYAgNTECgCQmlgBAFITKwBAamIFAEhNrAAAqYkVACA1sQIApCZWAIDUxAoAkJpYAQBSEysAQGrdGiszZsyIUaNGRb9+/WLfffft8pxSqbTFds8993TnWABAL9KnO19806ZNce6558bIkSPj3nvv3ep59913X3z+85/veFxfX9+dYwEAvUi3xsr06dMjImLu3LnbPG/fffeNpqam7hwFAOilUtyzMmnSpGhoaIhPfepTcc8990R7e/tWz21ra4tKpdJpAwB2Xd16ZWV73HLLLfHZz342+vbtG3/605/i2muvjbVr18aNN97Y5fmzZs3quGIDAOz6dvjKyrRp07q8KfbD29KlS7f79W688cYYOXJkHHfccXHttdfGzTffHLNnz97q+VOmTInW1taObfXq1Tv6TwAAepEdvrIyadKkOP/887d5zqBBg/7XeWLEiBFRqVTirbfeisbGxi2Ol8vlKJfL//PrAwC9yw7HSkNDQzQ0NHTHLBERsXz58thrr722+lFnAKC2dOs9K6tWrYr169fHqlWrYvPmzbFixYqIiDjssMNin332iYcffjhaWlpi5MiR0bdv33jsscdi6tSpcdlll7l6AgBERDfHyk033RTz5s3reDx06NCIiHjsscdi9OjRsccee8Rdd90VkydPjvb29hgyZEjcfPPNceWVV3bnWABAL1KqVqvVoof4KCqVStTX10dra2vU1dUVPQ4AH8GgG+YXPcIu45VbxxU9wjbtyM/vFN+zAgCwNWIFAEhNrAAAqYkVACA1sQIApCZWAIDUxAoAkJpYAQBSEysAQGpiBQBITawAAKmJFQAgtW79rcsAsCOy//I9iuHKCgCQmlgBAFITKwBAamIFAEhNrAAAqYkVACA1sQIApCZWAIDUxAoAkJpYAQBSEysAQGpiBQBITawAAKmJFQAgtT5FD/BRVavViIioVCoFTwIAbK8Pfm5/8HN8W3p9rGzYsCEiIpqbmwueBADYURs2bIj6+vptnlOqbk/SJNbe3h5vvPFG9O/fP0qlUtHj9GqVSiWam5tj9erVUVdXV/Q4YE2SjjW581Sr1diwYUMMHDgwdttt23el9PorK7vttlscdNBBRY+xS6mrq/M/IalYk2RjTe4c/9cVlQ+4wRYASE2sAACpiRU6lMvl+M53vhPlcrnoUSAirEnysSaL0etvsAUAdm2urAAAqYkVACA1sQIApCZWAIDUxAoAkFqv/wZbPppXX301WlpaolQqRWNjYxxyyCFFjwQAnbiyUqN+9KMfRXNzcwwZMiRGjhwZI0aMiCFDhkRzc3PMmTOn6PGgk7///e+x++67Fz0GNWb+/Plx6aWXxvXXXx///Oc/Ox17++234zOf+UxBk9UesVKDbrnllpg2bVpMmjQpli1bFq+//nq89tprsWzZspg0aVJMmzYtvvvd7xY9JnTiK6HoSQ888EB88YtfjJaWlli8eHEMHTo0fv7zn3cc37RpUyxcuLDACWuLL4WrQc3NzXHHHXfEl770pS6P/+Y3v4lJkybF66+/3rODUbPOPvvsbR5vbW2Nxx9/PDZv3txDE1Hrhg0bFhdffHF84xvfiIiIX/7yl3HxxRfHnDlz4pJLLom33norBg4caE32EPes1KB169bFxz/+8a0eP+KII+Ltt9/uwYmodQ8//HCceuqp0djY2OVxPxDoaf/617/ijDPO6Hh8zjnnRENDQ5x11lnx3nvvxZe//OUCp6s9YqUGnXDCCTFjxoyYO3du9OnTeQm8//77MXPmzDjhhBMKmo5adOSRR8ZXvvKVuOSSS7o8vmLFivjtb3/bw1NRy+rq6uKtt96KwYMHd+wbPXp0PPzww3HGGWfEa6+9VuB0tUes1KA77rgjxo4dGx/72MfilFNOicbGxiiVStHS0hJPPPFElMvlWLBgQdFjUkOGDx8ef/vb37YaK+VyOQ4++OAenopadsIJJ8Tvf//7GDFiRKf9p5xySkew0HPcs1KjNmzYED/72c9iyZIl0dLSEhERTU1NMXLkyBg/fnzU1dUVPCG1pK2tLTZv3hz9+vUrehSIiIiFCxfGokWLYsqUKV0ef/zxx2PevHlx33339fBktUmsAACp+egyAJCaWAEAUhMrAEBqYgUASE2sEC+99FI88sgj8e6770aErzWneNYk2ViTxRIrNWzdunXxuc99Lo444oj4whe+EG+++WZERFx66aVx7bXXFjwdtciaJBtrMgexUsOuueaa6NOnT6xatarT91ucd9558Yc//KHAyahV1iTZWJM5+AbbGvboo4/GI488EgcddFCn/Ycffni8+uqrBU1FLbMmycaazMGVlRq2cePGLr8xdO3atVEulwuYiFpnTZKNNZmDWKlhJ598ctx///0dj0ulUrS3t8fs2bNjzJgxBU5GrbImycaazMHX7dew559/PkaPHh3Dhw+PP//5z3HWWWfFc889F+vXr4+//vWvceihhxY9IjXGmiQbazIHsVLjWlpa4u67745ly5ZFe3t7DBs2LK688soYMGBA0aNRo6xJsrEmiydWAIDUfBqoxr3zzjvx9NNPx5o1a6K9vb3Tsa997WsFTUUtsybJxposnisrNezhhx+Or371q7Fx48bo379/lEqljmOlUinWr19f4HTUImuSbKzJHMRKDfvgGxlnzpzZ5UfzoKdZk2RjTeYgVmrY3nvvHc8++2wMGTKk6FEgIqxJ8rEmc/A9KzXstNNOi6VLlxY9BnSwJsnGmszBDbY1bNy4cfGtb30rnn/++Tj66KNjjz326HT8rLPOKmgyapU1STbWZA7eBqphu+229QtrpVIpNm/e3IPTgDVJPtZkDmIFAEjNPSsAQGruWakxt99+e1x22WWx1157xe23377Nc6+66qoemopaZk2SjTWZj7eBaszgwYNj6dKlccABB8TgwYO3el6pVIqXX365ByejVlmTZGNN5iNWAIDU3LMCAKTmnpUaM3ny5O0+97bbbuvGSeC/rEmysSbzESs1Zvny5dt13od/WRd0J2uSbKzJfNyzAgCk5p4VACA1sQIApCZWAIDUxAoAkJpYAVIolUrx0EMPFT0GkJCPLgM95qKLLop33nmnyyh58803Y7/99uv5oYD0xAqQQlNTU9EjAEl5GwhI4cNvA73yyitRKpXi17/+dYwZMyb69esXxx57bCxevLjTcxYtWhQnn3xy9O3bN5qbm+Oqq66KjRs3FjA90J3ECpDW1KlT47rrrosVK1bEEUccERdccEG8//77ERHx7LPPxmmnnRZnn312/OMf/4gHH3wwnnzyyZg0aVLBUwM7m1gB0rruuuti3LhxccQRR8T06dPj1VdfjZdeeikiImbPnh3jx4+Pq6++Og4//PAYNWpU3H777XH//ffHf/7zn4InB3YmsQKkdcwxx3T8ecCAARERsWbNmoiIWLZsWcydOzf22Wefju20006L9vb2WLlyZSHzAt3DDbZAWnvssUfHnz/4pXHt7e0d/7388svjqquu2uJ5Bx98cM8MCPQIsQL0SsOGDYvnnnsuDjvssKJHAbqZWAF6VGtra6xYsaLTvv3333+HX+fb3/52jBgxIq688sqYOHFi7L333vHCCy/EggUL4o477thJ0wIZiBWgRz3++OMxdOjQTvsmTJiww69zzDHHxMKFC2Pq1Klx0kknRbVajUMPPTTOO++8nTUqkESpWq1Wix4CAGBrfBoIAEhNrAAAqYkVACA1sQIApCZWAIDUxAoAkJpYAQBSEysAQGpiBQBITawAAKmJFQAgNbECAKT2/wCrLKyqqP+4UwAAAABJRU5ErkJggg==", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "lines.plot.bar()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "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.8" } }, "nbformat": 4, "nbformat_minor": 4 }