{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# The Forest Fire Model\n", "\n", "The [Forest Fire Model](http://en.wikipedia.org/wiki/Forest-fire_model) is one of the simplest examples of an agent-based model that exhibits self-organized criticality. In this notebook, we'll go over a rapid-fire (pun intended, sorry) introduction to building and analyzing a model with Mesa." ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import numpy as np\n", "import pandas as pd\n", "import seaborn as sns\n", "\n", "from mesa import Model, Agent\n", "from mesa.time import RandomActivation\n", "from mesa.space import Grid\n", "from mesa.datacollection import DataCollector\n", "from mesa.batchrunner import BatchRunner" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Building the model\n", "\n", "Most models consist of basically two things: agents, and an world for the agents to be in. The Forest Fire model has only one kind of agent: a tree. A tree can either be unburned, on fire, or already burned. The environment is a grid, where each cell can either be empty or contain a tree.\n", "\n", "First, let's define our tree agent. The agent needs to be assigned **x** and **y** coordinates on the grid, and that's about it. We could assign agents a condition to be in, but for now let's have them all start as being 'Fine'. Since the agent doesn't move, and there is only at most one tree per cell, we can use a tuple of its coordinates as a unique identifier.\n", "\n", "Next, we define the agent's **step** method. This gets called whenever the agent needs to act in the world and takes the *model* object to which it belongs as an input. The tree's behavior is simple: If it is currently on fire, it spreads the fire to any trees above, below, to the left and the right of it that are not themselves burned out or on fire; then it burns itself out. " ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "class TreeCell(Agent):\n", " \"\"\"\n", " A tree cell.\n", " \n", " Attributes:\n", " x, y: Grid coordinates\n", " condition: Can be \"Fine\", \"On Fire\", or \"Burned Out\"\n", " unique_id: (x,y) tuple. \n", " \n", " unique_id isn't strictly necessary here, but it's good practice to give one to each\n", " agent anyway. \n", " \"\"\"\n", " def __init__(self, model, pos):\n", " \"\"\"\n", " Create a new tree.\n", " Args:\n", " pos: The tree's coordinates on the grid. Used as the unique_id\n", " \"\"\"\n", " super().__init__(pos, model)\n", " self.pos = pos\n", " self.unique_id = pos\n", " self.condition = \"Fine\"\n", " \n", " def step(self):\n", " '''\n", " If the tree is on fire, spread it to fine trees nearby.\n", " '''\n", " if self.condition == \"On Fire\":\n", " neighbors = self.model.grid.get_neighbors(self.pos, moore=False)\n", " for neighbor in neighbors:\n", " if neighbor.condition == \"Fine\":\n", " neighbor.condition = \"On Fire\"\n", " self.condition = \"Burned Out\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now we need to define the model object itself. The main thing the model needs is the grid, which the trees are placed on. But since the model is dynamic, it also needs to include time -- it needs a schedule, to manage the trees activation as they spread the fire from one to the other.\n", "\n", "The model also needs a few parameters: how large the grid is and what the density of trees on it will be. Density will be the key parameter we'll explore below.\n", "\n", "Finally, we'll give the model a data collector. This is a Mesa object which collects and stores data on the model as it runs for later analysis.\n", "\n", "The constructor needs to do a few things. It instantiates all the model-level variables and objects; it randomly places trees on the grid, based on the density parameter; and it starts the fire by setting all the trees on one edge of the grid (x=0) as being On \"Fire\".\n", "\n", "Next, the model needs a **step** method. Like at the agent level, this method defines what happens every step of the model. We want to activate all the trees, one at a time; then we run the data collector, to count how many trees are currently on fire, burned out, or still fine. If there are no trees left on fire, we stop the model by setting its **running** property to False." ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [], "source": [ "class ForestFire(Model):\n", " \"\"\"\n", " Simple Forest Fire model.\n", " \"\"\"\n", " def __init__(self, height, width, density):\n", " \"\"\"\n", " Create a new forest fire model.\n", " \n", " Args:\n", " height, width: The size of the grid to model\n", " density: What fraction of grid cells have a tree in them.\n", " \"\"\"\n", " # Initialize model parameters\n", " self.height = height\n", " self.width = width\n", " self.density = density\n", " \n", " # Set up model objects\n", " self.schedule = RandomActivation(self)\n", " self.grid = Grid(height, width, torus=False)\n", " self.dc = DataCollector({\"Fine\": lambda m: self.count_type(m, \"Fine\"),\n", " \"On Fire\": lambda m: self.count_type(m, \"On Fire\"),\n", " \"Burned Out\": lambda m: self.count_type(m, \"Burned Out\")})\n", " \n", " # Place a tree in each cell with Prob = density\n", " for x in range(self.width):\n", " for y in range(self.height):\n", " if self.random.random() < self.density:\n", " # Create a tree\n", " new_tree = TreeCell(self, (x, y))\n", " # Set all trees in the first column on fire.\n", " if x == 0:\n", " new_tree.condition = \"On Fire\"\n", " self.grid[y][x] = new_tree\n", " self.schedule.add(new_tree)\n", " self.running = True\n", " \n", " def step(self):\n", " \"\"\"\n", " Advance the model by one step.\n", " \"\"\"\n", " self.schedule.step()\n", " self.dc.collect(self)\n", " # Halt if no more fire\n", " if self.count_type(self, \"On Fire\") == 0:\n", " self.running = False\n", " \n", " @staticmethod\n", " def count_type(model, tree_condition):\n", " '''\n", " Helper method to count trees in a given condition in a given model.\n", " '''\n", " count = 0\n", " for tree in model.schedule.agents:\n", " if tree.condition == tree_condition:\n", " count += 1\n", " return count" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Running the model\n", "\n", "Let's create a model with a 100 x 100 grid, and a tree density of 0.6. Remember, ForestFire takes the arguments *height*, *width*, *density*." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "fire = ForestFire(100, 100, 0.6)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To run the model until it's done (that is, until it sets its **running** property to False) just use the **run_model()** method. This is implemented in the Model parent object, so we didn't need to implement it above." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "fire.run_model()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "That's all there is to it!\n", "\n", "But... so what? This code doesn't include a visualization, after all. \n", "\n", "Remember the data collector? Now we can put the data it collected into a pandas DataFrame:" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "results = fire.dc.get_model_vars_dataframe()" ] }, { "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", "
FineOn FireBurned Out
0582075137
1571752263
2561258362
3550264466
4537168593
............
77137864648
78137224658
79137024660
80136814663
81136604666
\n", "

82 rows × 3 columns

\n", "
" ], "text/plain": [ " Fine On Fire Burned Out\n", "0 5820 75 137\n", "1 5717 52 263\n", "2 5612 58 362\n", "3 5502 64 466\n", "4 5371 68 593\n", ".. ... ... ...\n", "77 1378 6 4648\n", "78 1372 2 4658\n", "79 1370 2 4660\n", "80 1368 1 4663\n", "81 1366 0 4666\n", "\n", "[82 rows x 3 columns]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And chart it, to see the dynamics." ] }, { "cell_type": "code", "execution_count": 8, "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", "
timestatecount
00Fine5820
11Fine5717
22Fine5612
33Fine5502
44Fine5371
............
24177Burned Out4648
24278Burned Out4658
24379Burned Out4660
24480Burned Out4663
24581Burned Out4666
\n", "

246 rows × 3 columns

\n", "
" ], "text/plain": [ " time state count\n", "0 0 Fine 5820\n", "1 1 Fine 5717\n", "2 2 Fine 5612\n", "3 3 Fine 5502\n", "4 4 Fine 5371\n", ".. ... ... ...\n", "241 77 Burned Out 4648\n", "242 78 Burned Out 4658\n", "243 79 Burned Out 4660\n", "244 80 Burned Out 4663\n", "245 81 Burned Out 4666\n", "\n", "[246 rows x 3 columns]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results_melted = pd.melt(results.reset_index().rename(columns={'index': 'time'}), value_name=\"count\", var_name=\"state\", id_vars=[\"time\"])\n", "results_melted" ] }, { "cell_type": "code", "execution_count": 9, "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", "
timestatecount
00Fine5820
820On Fire75
1640Burned Out137
\n", "
" ], "text/plain": [ " time state count\n", "0 0 Fine 5820\n", "82 0 On Fire 75\n", "164 0 Burned Out 137" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "results_melted[results_melted['time'] == 0]" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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9CYOvt3JgCQuVVMCUkUJ+w9dX9baV4FXwd+DVNVFiYiIiLhWULkhn+Jn9wSqPcdqurhXXhxTUwJSBtCs3P1kYLNDtYiIiIhITWRMYAilgpEcWE15d8wF2hljWhljQoELgc8drklERERERGqZGtGDZK0tM8bcAnyHf5rvN621yx0uS0REREREapkaEZAArLVfA187XYeIiIiIiNReNWWInYiIiIiISJVTQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQlQQBIREREREQkw1lqna6gSxpjtwEaHXj4e2OHQa9dEWl9HTuvsyGmdHRmtryOndXbktM6OjNbXkXPzOtthrR3pdBHyR7U2IDnJGDPPWtvX6TpqCq2vI6d1duS0zo6M1teR0zo7clpnR0br68hpncnR0BA7ERERERGRAAUkERERERGRAAWkqvGq0wXUMFpfR07r7MhpnR0Zra8jp3V25LTOjozW15HTOpMjpmOQREREREREAtSDJCIiIiIiEqCAJCIiIiIiEqCAVImMMSONMauNMeuMMfc6XY8bGWPeNMZkGmOWlWuLM8b8YIxZG7hu4GSNbmKMaWaM+ckYs9IYs9wYc3ugXevsAIwx4caYOcaYxYF19s9Au9bZQRhjPMaYhcaYLwP3tb4OwRiTaoxZaoxZZIyZF2jTejsAY0x9Y8wkY8yqwDZtoNbXgRljOgTeW3suOcaYO7TODswY85fAdn+ZMWZC4PNA60uOmAJSJTHGeICXgFOAzsBFxpjOzlblSm8B+58U7V5gqrW2HTA1cF/8yoC/WWs7AQOAmwPvK62zAysGjrfW9gB6AiONMQPQOjuU24GV5e5rfR2e4dbanuXOs6L1dmDPAd9aazsCPfC/37S+DsBauzrw3uoJ9AEKgE/ROquQMSYJuA3oa63tCniAC9H6kqOggFR5+gHrrLUp1toS4APgTIdrch1r7TRg137NZwLjA7fHA6OrsyY3s9ZusdYuCNzOxb9DkYTW2QFZv7zA3ZDAxaJ1dkDGmGTgVOD1cs1aX0dH660CxphYYCjwBoC1tsRam4XW1+EaAay31m5E6+xggoEIY0wwEAlsRutLjoICUuVJAtLL3c8ItMmhNbLWbgF/IAASHa7HlYwxLYFewGy0zg4qMFxsEZAJ/GCt1To7uGeBuwFfuTatr0OzwPfGmPnGmDGBNq23irUGtgPjAkM5XzfGRKH1dbguBCYEbmudVcBauwn4L5AGbAGyrbXfo/UlR0EBqfKYCto0h7pUCmNMNPAxcIe1NsfpetzOWusNDEtJBvoZY7o6XJJrGWNOAzKttfOdrqUGGmyt7Y1/aPXNxpihThfkYsFAb+Bla20vIB8NdTosxphQ4AzgI6drcbPAsUVnAq2ApkCUMeZSZ6uSmkoBqfJkAM3K3U/G37Urh7bNGNMEIHCd6XA9rmKMCcEfjt6z1n4SaNY6OwyBITw/4z/uTeusYoOBM4wxqfiHBh9vjHkXra9DstZuDlxn4j82pB9abweSAWQEenMBJuEPTFpfh3YKsMBauy1wX+usYicAG6y12621pcAnwCC0vuQoKCBVnrlAO2NMq8C3PRcCnztcU03xOXBF4PYVwGQHa3EVY4zBP2Z/pbX26XI/0jo7AGNMgjGmfuB2BP4PzVVonVXIWnuftTbZWtsS/3brR2vtpWh9HZQxJsoYE7PnNnASsAyttwpZa7cC6caYDoGmEcAKtL4Ox0XsHV4HWmcHkgYMMMZEBj47R+A/blfrS46YsVajwCqLMWYU/rH8HuBNa+2jzlbkPsaYCcBxQDywDfgH8BkwEWiOfwN3nrV2/4kc6iRjzLHAdGApe48PuR//cUhaZxUwxnTHfyCuB/+XQBOttf9njGmI1tlBGWOOA+601p6m9XVwxpjW+HuNwD987H1r7aNabwdmjOmJfyKQUCAFuIrA/yhaXxUyxkTiP765tbU2O9Cm99gBBE7rcAH+GWAXAtcC0Wh9yRFSQBIREREREQnQEDsREREREZEABSQREREREZEABSQREREREZEABSQREREREZEABSQREREREZEABSQRkTrKGFPfGHNT4HZTY8wkp2sSERFxmqb5FhGpo4wxLYEvrbVdna5FRETELYKdLkBERBzzONDGGLMIWAt0stZ2NcZcCYzGf7LdrsBT+E/ueRlQDIyy1u4yxrQBXgISgALgOmvtqur+JURERCqThtiJiNRd9wLrrbU9gbv2+1lX4GKgH/AoUGCt7QXMBC4PPOZV4FZrbR/gTuB/1VG0iIhIVVIPkoiIVOQna20ukGuMyQa+CLQvBbobY6KBQcBHxpg9y4RVf5kiIiKVSwFJREQqUlzutq/cfR/+z44gICvQ+yQiIlJraIidiEjdlQvEHM2C1tocYIMx5jwA49ejMosTERFxggKSiEgdZa3dCfxmjFkGPHkUT3EJcI0xZjGwHDizMusTERFxgqb5FhERERERCVAPkoiIiIiISIACkoiIiIiISIACkoiIiIiISIACkoiIiIiISIACkoiIiIiISIACkoiIiIiISIACkoiIiIiISMD/A63h0M0xoZFzAAAAAElFTkSuQmCC\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "line = sns.relplot(\n", " data=results_melted,\n", " x='time',\n", " y='count',\n", " hue='state',\n", " height=7,\n", " aspect=1.5,\n", " kind='line'\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "In this case, the fire burned itself out after about 90 steps, with many trees left unburned. You can try changing the density parameter and rerunning the code above, to see how different densities yield different dynamics. To really understand how the final outcome varies with density, we can't just tweak the parameter by hand over and over again. We need to do a batch run. " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Batch runs\n", "\n", "Batch runs, also called parameter sweeps, allow use to systemically vary the density parameter, run the model, and check the output. Mesa provides a BatchRunner object which takes a model class, a dictionary of parameters and the range of values they can take and runs the model at each combination of these values. We can also give it reporters, which collect some data on the model at the end of each run and store it, associated with the parameters that produced it.\n", "\n", "For ease of typing and reading, we'll first create the parameters to vary and the reporter, and then assign them to a new BatchRunner." ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "# Height and width are constant\n", "fixed_params = dict(\n", " height=50, \n", " width=50\n", ")\n", "\n", "# Vary density from 0.01 to 1, in 0.01 increments:\n", "variable_params = dict(\n", " density=np.linspace(0,1,101)[1:]\n", ")" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "# At the end of each model run, calculate the fraction of trees which are Burned Out\n", "model_reporter = {\n", " \"BurnedOut\": lambda m: (ForestFire.count_type(m, \"Burned Out\") / m.schedule.get_agent_count()) \n", "}" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/48/dds201d5405bqg1t2swvp0h40000gn/T/ipykernel_20440/3405709624.py:2: DeprecationWarning: BatchRunner class has been replaced by batch_run function. Please see documentation.\n", " param_run = BatchRunner(\n" ] } ], "source": [ "# Create the batch runner\n", "param_run = BatchRunner(\n", " ForestFire, \n", " variable_parameters=variable_params, \n", " fixed_parameters=fixed_params, \n", " model_reporters=model_reporter\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now the BatchRunner, which we've named param_run, is ready to go. To run the model at every combination of parameters (in this case, every density value), just use the **run_all()** method." ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "100it [00:05, 18.22it/s]\n" ] } ], "source": [ "param_run.run_all()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Like with the data collector, we can extract the data the batch runner collected into a dataframe:" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [], "source": [ "df = param_run.get_model_vars_dataframe()" ] }, { "cell_type": "code", "execution_count": 16, "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", "
densityRunBurnedOutheightwidth
00.0100.0454555050
10.0210.0000005050
20.0320.0000005050
30.0430.0111115050
40.0540.0076925050
\n", "
" ], "text/plain": [ " density Run BurnedOut height width\n", "0 0.01 0 0.045455 50 50\n", "1 0.02 1 0.000000 50 50\n", "2 0.03 2 0.000000 50 50\n", "3 0.04 3 0.011111 50 50\n", "4 0.05 4 0.007692 50 50" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "As you can see, each row here is a run of the model, identified by its parameter values (and given a unique index by the Run column). To view how the BurnedOut fraction varies with density, we can easily just plot them:" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "scatter = sns.relplot(\n", " data=df,\n", " x='density',\n", " y='BurnedOut',\n", " aspect=1.5,\n", " height=5,\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "And we see the very clear emergence of a critical value around 0.5, where the model quickly shifts from almost no trees being burned, to almost all of them.\n", "\n", "In this case we ran the model only once at each value. However, it's easy to have the BatchRunner execute multiple runs at each parameter combination, in order to generate more statistically reliable results. We do this using the *iteration* argument.\n", "\n", "Let's run the model 5 times at each parameter point, and export and plot the results as above." ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/var/folders/48/dds201d5405bqg1t2swvp0h40000gn/T/ipykernel_20440/2713269454.py:1: DeprecationWarning: BatchRunner class has been replaced by batch_run function. Please see documentation.\n", " param_run = BatchRunner(ForestFire, variable_params, fixed_params,\n", "500it [00:23, 21.27it/s] \n" ] } ], "source": [ "param_run = BatchRunner(ForestFire, variable_params, fixed_params, \n", " iterations=5, model_reporters=model_reporter)\n", "param_run.run_all()\n", "df = param_run.get_model_vars_dataframe()" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "scatter = sns.relplot(\n", " data=df,\n", " x='density',\n", " y='BurnedOut',\n", " aspect=1.5,\n", " height=5,\n", ")" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "anaconda-cloud": {}, "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.9.12" }, "widgets": { "state": {}, "version": "1.1.2" } }, "nbformat": 4, "nbformat_minor": 1 }