{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "c:\\Users\\jtrum\\miniconda3\\envs\\wash\\lib\\site-packages\\geopandas\\_compat.py:124: UserWarning: The Shapely GEOS version (3.11.1-CAPI-1.17.1) is incompatible with the GEOS version PyGEOS was compiled with (3.10.4-CAPI-1.16.2). Conversions between both will be slow.\n", " warnings.warn(\n", "C:\\Users\\jtrum\\AppData\\Local\\Temp\\ipykernel_9400\\3016180286.py:4: DeprecationWarning: Shapely 2.0 is installed, but because PyGEOS is also installed, GeoPandas still uses PyGEOS by default. However, starting with version 0.14, the default will switch to Shapely. To force to use Shapely 2.0 now, you can either uninstall PyGEOS or set the environment variable USE_PYGEOS=0. You can do this before starting the Python process, or in your code before importing geopandas:\n", "\n", "import os\n", "os.environ['USE_PYGEOS'] = '0'\n", "import geopandas\n", "\n", "In the next release, GeoPandas will switch to using Shapely by default, even if PyGEOS is installed. If you only have PyGEOS installed to get speed-ups, this switch should be smooth. However, if you are using PyGEOS directly (calling PyGEOS functions on geometries from GeoPandas), this will then stop working and you are encouraged to migrate from PyGEOS to Shapely 2.0 (https://shapely.readthedocs.io/en/latest/migration_pygeos.html).\n", " import geopandas as gpd\n" ] } ], "source": [ "import geemap\n", "import ee\n", "import folium\n", "import geopandas as gpd" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/html": [ "

To authorize access needed by Earth Engine, open the following\n", " URL in a web browser and follow the instructions:

\n", "

https://code.earthengine.google.com/client-auth?scopes=https%3A//www.googleapis.com/auth/earthengine%20https%3A//www.googleapis.com/auth/devstorage.full_control&request_id=lA-JCYjkURmcIVTYDc7nB1kZPFBzNIQ2fFUMDcnUkXQ&tc=JgbnF12_H_lSPdCy0Rug6FeXDJlx1vDYYJ-f08zgVKc&cc=f2cU2x8TjpCJ_FZL0LTr07tAVYW4u8jazne0ZUEcXLc

\n", "

The authorization workflow will generate a code, which you should paste in the box below.

\n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "ename": "KeyError", "evalue": "'client_id'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mKeyError\u001b[0m Traceback (most recent call last)", "\u001b[1;32mc:\\Users\\jtrum\\Desktop\\maps\\map_2_land-cover.ipynb Cell 2\u001b[0m line \u001b[0;36m1\n\u001b[1;32m----> 1\u001b[0m ee\u001b[39m.\u001b[39;49mAuthenticate()\n\u001b[0;32m 2\u001b[0m ee\u001b[39m.\u001b[39mInitialize()\n", "File \u001b[1;32mc:\\Users\\jtrum\\miniconda3\\envs\\wash\\lib\\site-packages\\ee\\__init__.py:104\u001b[0m, in \u001b[0;36mAuthenticate\u001b[1;34m(authorization_code, quiet, code_verifier, auth_mode, scopes)\u001b[0m\n\u001b[0;32m 77\u001b[0m \u001b[39mdef\u001b[39;00m \u001b[39mAuthenticate\u001b[39m(\n\u001b[0;32m 78\u001b[0m authorization_code: Optional[\u001b[39mstr\u001b[39m] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[0;32m 79\u001b[0m quiet: \u001b[39mbool\u001b[39m \u001b[39m=\u001b[39m \u001b[39mFalse\u001b[39;00m,\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 82\u001b[0m scopes: Optional[Sequence[\u001b[39mstr\u001b[39m]] \u001b[39m=\u001b[39m \u001b[39mNone\u001b[39;00m,\n\u001b[0;32m 83\u001b[0m ) \u001b[39m-\u001b[39m\u001b[39m>\u001b[39m \u001b[39mNone\u001b[39;00m:\n\u001b[0;32m 84\u001b[0m \u001b[39m \u001b[39m\u001b[39m\"\"\"Prompts the user to authorize access to Earth Engine via OAuth2.\u001b[39;00m\n\u001b[0;32m 85\u001b[0m \n\u001b[0;32m 86\u001b[0m \u001b[39m Args:\u001b[39;00m\n\u001b[1;32m (...)\u001b[0m\n\u001b[0;32m 102\u001b[0m \u001b[39m (auth_url, code_verifier) when called with quiet='init_only'\u001b[39;00m\n\u001b[0;32m 103\u001b[0m \u001b[39m \"\"\"\u001b[39;00m\n\u001b[1;32m--> 104\u001b[0m oauth\u001b[39m.\u001b[39;49mauthenticate(\n\u001b[0;32m 105\u001b[0m authorization_code, quiet, code_verifier, auth_mode, scopes\n\u001b[0;32m 106\u001b[0m )\n", "File \u001b[1;32mc:\\Users\\jtrum\\miniconda3\\envs\\wash\\lib\\site-packages\\ee\\oauth.py:430\u001b[0m, in \u001b[0;36mauthenticate\u001b[1;34m(cli_authorization_code, quiet, cli_code_verifier, auth_mode, scopes)\u001b[0m\n\u001b[0;32m 427\u001b[0m \u001b[39mif\u001b[39;00m flow\u001b[39m.\u001b[39mdisplay_instructions(quiet):\n\u001b[0;32m 428\u001b[0m _open_new_browser(flow\u001b[39m.\u001b[39mauth_url)\n\u001b[1;32m--> 430\u001b[0m flow\u001b[39m.\u001b[39;49msave_code()\n", "File \u001b[1;32mc:\\Users\\jtrum\\miniconda3\\envs\\wash\\lib\\site-packages\\ee\\oauth.py:479\u001b[0m, in \u001b[0;36mFlow.save_code\u001b[1;34m(self, code)\u001b[0m\n\u001b[0;32m 477\u001b[0m redirect_uri \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mserver\u001b[39m.\u001b[39murl\n\u001b[0;32m 478\u001b[0m code \u001b[39m=\u001b[39m \u001b[39mself\u001b[39m\u001b[39m.\u001b[39mserver\u001b[39m.\u001b[39mfetch_code() \u001b[39m# Waits for oauth callback\u001b[39;00m\n\u001b[1;32m--> 479\u001b[0m _obtain_and_write_token(code, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mcode_verifier, \u001b[39mself\u001b[39;49m\u001b[39m.\u001b[39;49mscopes, redirect_uri)\n", "File \u001b[1;32mc:\\Users\\jtrum\\miniconda3\\envs\\wash\\lib\\site-packages\\ee\\oauth.py:197\u001b[0m, in \u001b[0;36m_obtain_and_write_token\u001b[1;34m(auth_code, code_verifier, scopes, redirect_uri)\u001b[0m\n\u001b[0;32m 194\u001b[0m fetch_client \u001b[39m=\u001b[39m urllib\u001b[39m.\u001b[39mrequest\u001b[39m.\u001b[39mRequest(FETCH_URL, data\u001b[39m=\u001b[39mdata, headers\u001b[39m=\u001b[39mheaders)\n\u001b[0;32m 195\u001b[0m fetched_info \u001b[39m=\u001b[39m json\u001b[39m.\u001b[39mloads(\n\u001b[0;32m 196\u001b[0m urllib\u001b[39m.\u001b[39mrequest\u001b[39m.\u001b[39murlopen(fetch_client)\u001b[39m.\u001b[39mread()\u001b[39m.\u001b[39mdecode())\n\u001b[1;32m--> 197\u001b[0m client_info \u001b[39m=\u001b[39m {k: fetched_info[k] \u001b[39mfor\u001b[39;00m k \u001b[39min\u001b[39;00m [\u001b[39m'\u001b[39m\u001b[39mclient_id\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mclient_secret\u001b[39m\u001b[39m'\u001b[39m]}\n\u001b[0;32m 198\u001b[0m scopes \u001b[39m=\u001b[39m fetched_info\u001b[39m.\u001b[39mget(\u001b[39m'\u001b[39m\u001b[39mscopes\u001b[39m\u001b[39m'\u001b[39m) \u001b[39mor\u001b[39;00m scopes\n\u001b[0;32m 199\u001b[0m token \u001b[39m=\u001b[39m request_token(auth_code\u001b[39m.\u001b[39mstrip(), code_verifier, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mclient_info)\n", "File \u001b[1;32mc:\\Users\\jtrum\\miniconda3\\envs\\wash\\lib\\site-packages\\ee\\oauth.py:197\u001b[0m, in \u001b[0;36m\u001b[1;34m(.0)\u001b[0m\n\u001b[0;32m 194\u001b[0m fetch_client \u001b[39m=\u001b[39m urllib\u001b[39m.\u001b[39mrequest\u001b[39m.\u001b[39mRequest(FETCH_URL, data\u001b[39m=\u001b[39mdata, headers\u001b[39m=\u001b[39mheaders)\n\u001b[0;32m 195\u001b[0m fetched_info \u001b[39m=\u001b[39m json\u001b[39m.\u001b[39mloads(\n\u001b[0;32m 196\u001b[0m urllib\u001b[39m.\u001b[39mrequest\u001b[39m.\u001b[39murlopen(fetch_client)\u001b[39m.\u001b[39mread()\u001b[39m.\u001b[39mdecode())\n\u001b[1;32m--> 197\u001b[0m client_info \u001b[39m=\u001b[39m {k: fetched_info[k] \u001b[39mfor\u001b[39;00m k \u001b[39min\u001b[39;00m [\u001b[39m'\u001b[39m\u001b[39mclient_id\u001b[39m\u001b[39m'\u001b[39m, \u001b[39m'\u001b[39m\u001b[39mclient_secret\u001b[39m\u001b[39m'\u001b[39m]}\n\u001b[0;32m 198\u001b[0m scopes \u001b[39m=\u001b[39m fetched_info\u001b[39m.\u001b[39mget(\u001b[39m'\u001b[39m\u001b[39mscopes\u001b[39m\u001b[39m'\u001b[39m) \u001b[39mor\u001b[39;00m scopes\n\u001b[0;32m 199\u001b[0m token \u001b[39m=\u001b[39m request_token(auth_code\u001b[39m.\u001b[39mstrip(), code_verifier, \u001b[39m*\u001b[39m\u001b[39m*\u001b[39mclient_info)\n", "\u001b[1;31mKeyError\u001b[0m: 'client_id'" ] } ], "source": [ "ee.Authenticate()\n", "ee.Initialize()" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "fe1bd6cc513549098d1bbdef0c3bc006", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Map(center=[-8.980207755364754, 13.310742868350161], controls=(WidgetControl(options=['position', 'transparent…" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "datadir = 'C:/Users/jtrum/world_bank/data/'\n", "aoi_path = datadir + 'aoiLuanda.geojson'\n", "aoi = geemap.geojson_to_ee(aoi_path)\n", "\n", "esa = ee.ImageCollection(\"ESA/WorldCover/v100\").first()\n", "esa = esa.clip(aoi)\n", "esa_vis = {'bands': ['Map']}\n", "\n", "Map = geemap.Map()\n", "Map.add_basemap('CartoDB.DarkMatter')\n", "Map.addLayer(esa, esa_vis, \"ESA Land Cover\")\n", "Map.add_legend(title=\"ESA Land Cover\", builtin_legend='ESA_WorldCover')\n", "Map.centerObject(aoi, 10)\n", "#add title\n", "Map.add_text(x=-8.8, y=11.8, text=\"Land Cover (Luanda, Angola)\", fontsize=20, fontweight='bold', color='white')\n", "Map" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "Calculating area for group 10 ...\n", "Calculating area for group 20 ...\n", "Calculating area for group 30 ...\n", "Calculating area for group 40 ...\n", "Calculating area for group 50 ...\n", "Calculating area for group 60 ...\n", "Calculating area for group 80 ...\n", "Calculating area for group 90 ...\n", "Calculating area for group 95 ...\n" ] } ], "source": [ "df = geemap.image_area_by_group(esa, scale=1000, denominator=1e6, decimal_places=4, verbose=True)\n", "import pandas as pd\n", "data = {\n", " 'cover': ['Trees', 'Shrublands', 'Grasslands', 'Croplands', 'Built-Up', 'Barren', 'Snow and Ice', 'Water Bodies', 'Herbaceous Wetlands', 'Mangroves', 'Moss and Lichen'],\n", " 'group': ['10', '20', '30', '40', '50', '60', '70', '80', '90', '95', '100']\n", "}\n", "lc_df = pd.DataFrame(data)\n", "#join the two dataframes by 'group'\n", "lc = lc_df.join(df, on='group')\n", "lc['percentage'] = lc['percentage']*100\n", "lc = lc.fillna(0)\n", "lc" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "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", "
covergroup
0Trees10
1Shrublands20
2Grasslands30
3Croplands40
4Built-Up50
5Barren60
6Snow and Ice70
7Water Bodies80
8Herbaceous Wetlands90
9Mangroves95
10Moss and Lichen100
\n", "
" ], "text/plain": [ " cover group\n", "0 Trees 10\n", "1 Shrublands 20\n", "2 Grasslands 30\n", "3 Croplands 40\n", "4 Built-Up 50\n", "5 Barren 60\n", "6 Snow and Ice 70\n", "7 Water Bodies 80\n", "8 Herbaceous Wetlands 90\n", "9 Mangroves 95\n", "10 Moss and Lichen 100" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "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", "
areapercentage
group
1042.69930.0175
2010.79030.0044
301460.94250.5987
406.77400.0028
50505.17140.2070
60135.63230.0556
8037.04840.0152
90195.59000.0802
9545.38200.0186
\n", "
" ], "text/plain": [ " area percentage\n", "group \n", "10 42.6993 0.0175\n", "20 10.7903 0.0044\n", "30 1460.9425 0.5987\n", "40 6.7740 0.0028\n", "50 505.1714 0.2070\n", "60 135.6323 0.0556\n", "80 37.0484 0.0152\n", "90 195.5900 0.0802\n", "95 45.3820 0.0186" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "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", "
covergroupareapercentage
0Trees1042.69931.75
1Shrublands2010.79030.44
2Grasslands301460.942559.87
3Croplands406.77400.28
4Built-Up50505.171420.70
5Barren60135.63235.56
6Snow and Ice700.00000.00
7Water Bodies8037.04841.52
8Herbaceous Wetlands90195.59008.02
9Mangroves9545.38201.86
10Moss and Lichen1000.00000.00
\n", "
" ], "text/plain": [ " cover group area percentage\n", "0 Trees 10 42.6993 1.75\n", "1 Shrublands 20 10.7903 0.44\n", "2 Grasslands 30 1460.9425 59.87\n", "3 Croplands 40 6.7740 0.28\n", "4 Built-Up 50 505.1714 20.70\n", "5 Barren 60 135.6323 5.56\n", "6 Snow and Ice 70 0.0000 0.00\n", "7 Water Bodies 80 37.0484 1.52\n", "8 Herbaceous Wetlands 90 195.5900 8.02\n", "9 Mangroves 95 45.3820 1.86\n", "10 Moss and Lichen 100 0.0000 0.00" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [] }, { "cell_type": "code", "execution_count": 53, "metadata": {}, "outputs": [ { "data": { "text/html": [ "\n", " \n", " " ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAABEwAAAKnCAYAAACcUtjBAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/OQEPoAAAACXBIWXMAAA9hAAAPYQGoP6dpAACUhUlEQVR4nOzdd3zN5///8WdyYoQQRGqFiBUjQSpBKjRiNrZaae3Wqq32FjtGtbGr9ibhY6+in2obtMSmjdEWn6KK2ImT8/vDL+fb8w5FRWI87rdbbp+c6329r/N6n765fc7TdV1vO4vFYhEAAAAAAACs7FO7AAAAAAAAgJcNgQkAAAAAAIABgQkAAAAAAIABgQkAAAAAAIABgQkAAAAAAIABgQkAAAAAAIABgQkAAAAAAIABgQkAAAAAAICBQ2oXgDdHQkKCHjx4IHt7e9nZ2aV2OQAAAACA15zFYlFCQoIcHBxkb/9sc0YITJBiHjx4oCNHjqR2GQAAAACAN4y3t7fSpk37TOcQmCDFJKZ5xYsXf+YbFTAym806cuSIvL29ZTKZUrscvOK4n5CcuJ+QnLifkJy4n5CcXpX7KbHOZ51dIhGYIAUlLsMxmUwv9R8ovFq4n5CcuJ+QnLifkJy4n5CcuJ+QnF6V++nfbAvBpq8AAAAAAAAGBCYAXlmOjo6pXQJeI9xPSE7cT0hO3E9ITtxPwNNjSQ5S3KswXQsvP5PJpOLFi6d2GXhNcD8hOXE/ITlxPyE5cT8huZgTzKldQoogMEGK6zy7s47+djS1ywAAAAAAPCPPPJ76qstXMptf/9CEwAQp7peLv+jQuUOpXQYAAAAAAI/FHiYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAAAAGBCYAAAAAACBZ3bt3T2nSpJGdnZ3Nj5OTk7XP/Pnz5eXlpfTp06tAgQIKDQ3VgwcPnjj22rVrVaZMGTk5OalQoUIaMWKE4uLirMfz589vfT8HBwf5+vrKwcFBdnZ28vDweOprcHi2SwYAAAAAAPhnR48e1YMHD7R48WIVLFjQ2m4ymSRJn3/+uXr06KFGjRppwoQJunLlioYOHapDhw4pIiLiseNu375dDRs2VNOmTTVu3DgdO3ZMAwYM0J9//qnw8HBJ0po1a3T//n1Jktls1i+//KKrV6+qd+/e6tix41NfA4HJc7hz545mz56tLVu26OLFi3J0dFS5cuXUtWtXFS5cOMXq2Lt3r1q2bKlTp069kPE9PT21cOFClStX7oWMDwAAAAB4vURHR8vBwUGNGjVSunTpbI6ZzWaFhoaqWrVqWrVqlbX97bfflre3t7Zv365q1ao9ctx58+YpX758Wrx4sUwmk6pVq6ZLly5p8uTJmjx5stKkSSMfHx+b93rw4IFGjBihWrVqqV+/fk99DSzJ+Zdu376tkJAQbdy4UX369NHmzZv11VdfKWPGjGrWrJl+//331C4RAAAAAIBUER0draJFiyYJSyTp0qVL+uuvv1S7dm2bdi8vL2XPnl0bN2587Lj37t1TxowZrTNVJMnFxUVxcXG6efPmI8/56quvdPnyZU2bNu2ZroHA5F+aNm2arl69qoiICFWpUkV58uSRl5eXxo4dK29vb82fPz+1SwQAAAAAIFUkzjCpXr26MmbMqGzZsqlDhw66efOmsmTJIgcHB/36668251y7dk3Xrl3TmTNnHjtu586d9csvv2jixIm6fv26oqKiNGXKFAUHBytbtmxJ+v/2229avny5Pv30U7m7uz/TNRCY/AsJCQlas2aN2rRpo8yZMyc5HhYWpj59+igyMlLNmjVT586dVaZMGa1bt063bt3SgAED5O/vLy8vL9WsWVM7duywnrtp0ybVqFFD3t7eCg4Otjm2cOFCVa5cWd7e3mrYsKF+/PHHR9b3008/KSQkRKVKlVLp0qXVrl07Xb58WZIUGRmpFi1a6IsvvlC5cuXk6+ursWPHymKxWM+fOnWq/P39Va5cOZvpUZL0ww8/qF69evL29laVKlW0fPny5/osAQAAAACvF4vFosOHDysmJkb16tXT5s2bNWjQIC1btkzBwcFKnz69mjZtqqlTp2ru3Lm6du2aTp06pZCQEDk4OOj27duPHTsoKEh9+/ZVnz59lDVrVvn7++utt97S0qVLH9n/888/V9q0adWtW7dnvg4Ck3/ht99+019//SVfX99HHn/rrbeUPn16SdLBgwdVqFAhrVy5UgEBARo9erTOnj2ruXPnasOGDfL19dWgQYMUFxenq1evqm/fvurQoYO2bNmi999/X716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mOPHj1eHDh00duxYVa1aVZ988ommT5+uHTt26KeffnqRlwQAAAAAeAHe+MDE19dXR44csWnbu3ev3nrrLWuYkCg6Olply5Z94pjz589XREREstbp4+OjPXv2aM+ePdq4caNq166trl276vz588ky/urVqxUcHJwsY73MDh8+rI4dO6ply5ZatGjRU50THR2t0qVLP/Z4bGysWrRooQ8++MCmvWjRopKk06dP/+t6AQAAAACp440PTMqUKaPTp0/r9u3b1ra9e/fqo48+UnR0tO7du2dtP3To0FMFJhaLJdnrTJMmjVxdXeXq6qp8+fKpXbt2yp07t3bu3Jks42fLlk3p06dPlrFeZvny5VNMTIwmT55ss6Tmn0RHR+vmzZt65513lD59euXMmVP9+/dXfHy8JClLliz64osvVKFCBZvzEmcZlShRIlmvAQAAAADw4r3xgYm3t7fSpEmjY8eOSZL++OMPXbx4UY0bN1amTJl04MABSdLZs2d148YN+fr6ymKxaObMmQoKCpKXl5cCAgI0depUSVJkZKSmTp2qffv2ydPTU5IUFxenUaNGqVy5cipXrpx69+6t69evS3q48ainp6emTZsmPz8/hYaGPnXtxi/8Bw8eVEhIiEqXLq2goCAtW7bM5vjUqVPl7++vcuXKadWqVTbH/r4kx2KxaNq0aQoICJCvr686duyoixcvWvtu2rRJNWrUkLe3t4KDg7Vjx46nrjm1ZcuWTW5ubk/d/88//9SFCxd08uRJdezYUVu3blX79u312WefqXXr1o89b+/evRo3bpzq1KljszksAAAAAODV8MYHJmnTplWpUqV0+PBhSVJUVJS8vLyUMWNG+fn5WZflREdHq3DhwsqaNavWrl2rBQsWaPTo0dqyZYs6d+6s8PBwHTt2TMHBwWrbtq11CY0kTZ48WUePHtWXX36phQsX6tatW+revbtNHQcOHFBERIRatmz5xJotFot27Nihc+fOqVq1apIeLvto1aqV/Pz8FBkZqa5du2r8+PHavn27JGnFihVauHChxowZ88QlQ4sXL9b69es1adIkrVixQi4uLmrbtq3i4+N19epV9e3bVx06dNCWLVv0/vvvq1evXtYA6HWTMWNGbdu2TVFRUWrZsqXeffddhYaGaujQoVq6dKlOnDiR5JzvvvtONWvWlIeHh+bNm5cKVQMAAAAA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5ePjo9GjR+vUqVPGte7u7nrnnXfUvn17jR49WpK0a9cuBQQEyNPTU/369VNycrJx/datW9W7d295enrq8ccf1969e41zQUFBio+P18iRI9WqVSv16NFDu3fvliS9+uqr2rt3r+bOnaugoCBJ0r59+zR06FB5enqqdevWGjVqlP73v/8Z90tKSlLfvn3VqlUrPfPMM4qKitKrr75qnF+1apX8/Pzk5eWloKAgHT169JrvyYYNG+Tq6qp69epJkv7xj38oLS1N+fn5Onz4sOrXry9JmjdvnsLCwoqtLrnCz89PK1euvIHfBQAA7iwEJgAA4J51+fJlbdmyRXv27DFWSCxfvlwbNmxQTEyMVq9eLScnJ40YMUKXL1825u3YsUMrV67Uyy+/rNTUVIWFhalbt276+OOP1adPH4WHhys7O1tHjhzRK6+8orCwMH3yySfq16+fRo0apePHjxv3mj9/vh577DF9+umnevDBBzVp0iQVFRVpwoQJ8vLy0ogRIxQXF6fz588rNDRUDz/8sD799FMtWrRIJ06cMLbGZGVlKSwsTL169VJiYqI8PDy0YsUK43W2b9+uuXPnatKkSfroo4/k7e2tJ598UufOnSvxvdm9e7c6duxoHHfv3l01a9aUp6enkpKSNGrUKKWnp+v48ePq2rXrNd/jhx9+WElJScWebwIAwJ2OwAQAANxTpkyZIi8vL3l5ealVq1Z65ZVX9NRTT6lfv36SpIULF2rcuHFq37693Nzc9Nprr+ncuXPGyg9JGjJkiBo3bqwmTZpo3bp1atOmjcLDw9WoUSOFhIToqaee0m+//aZFixYpMDBQffv2lclk0pNPPqlOnTpZrLh49NFHNXDgQDVs2FBhYWH673//q+zsbNWqVUtVqlRR9erV5ejoqEuXLik8PFxjxozR/fffL29vb3Xv3l2pqamSpLVr16pVq1YKDw9X48aN9fzzz8vT09N4nYULFyo0NFRdunRRo0aN9MILL8jFxUWffPJJie/T4cOH5ebmZhxXrVpVK1as0O7du7Vt2zbdf//9xuqSlJQU9e3bV7169dKePXss7uPm5qazZ8/qp59++uu/eQAA3Ea25V0AAADA7RQREaHu3btLkuzs7OTs7KzKlStL+uO5HT///LNefPFFVar0//9f6dKlSzp27Jhx7OLiYnyfmZmpFi1aWLzGCy+8IElKT0/Xpk2btHr1auPc5cuX5evraxw3atTI+L5mzZqSpIKCgmJ1Ozs7a8CAAVqyZIl++OEHpaWl6ejRo2rTpo0k6ejRo/Lw8LCY07p1a2MFSXp6uqKjozV79mzjfF5ensWv62q//vqr6tSpU2y8bt26xv0yMjLUtWtX9e7dWy+99JL+/ve/KyQkRDt27JCdnZ0kGff49ddf1aBBgxJfCwCAOxGBCQAAuKc4OTnJZDKVeK6wsFCS9M4778jV1dXiXO3atY3vr4QB0h/PP7mWwsJCjRo1SgMGDLAYr1atmvH9lWenXK2k7SunT5/WoEGD1KJFC3Xs2FGBgYH64osvlJKSIkmqXLlysXlXHxcWFioyMlIdOnSwuOZKSGPNxsbGeD9KEh8fr7CwMJ07d04ZGRny9fU1fl2ZmZl68MEHJUlFRUXG/QAAqEjYkgMAAPD/ODg4yMnJSdnZ2TKZTDKZTKpfv76io6OVmZlZ4hyTyaQjR45YjD3xxBPauHGjXF1ddfLkSeNeJpNJq1ev1q5du0pd29atW1W7dm299957euqpp+Tj46OsrCwjFHnggQf0n//8x2LO1ceurq76+eefLWqZP3++Dhw4UOLrOTk56ezZsyWey8zMVHp6urp162asxLkSjBQWFloENWfOnJH0xwoZAAAqEgITAACAqwQHBys2Nlbbt2/XsWPHNHHiRO3fv1+NGzcu8fqhQ4fq22+/1eLFi3X8+HG99957Sk1NlY+Pj4KDg/XZZ59p2bJlOnHihJYsWaIlS5ZYbMO5nurVq+vYsWP65Zdf5OjoqFOnTik5OVlZWVlasGCBtmzZovz8fElSYGCgDhw4oAULFigzM1Pz58/Xt99+a6zsePrpp7V06VIlJibqxIkTio6O1qZNmyyeU3K15s2bX/NTdOLj4zV69GjZ2NjIwcFBJpNJa9as0WeffSbJcpvR0aNHVbduXePTdgAAqCjYkgMAAHCVkSNH6sKFC5o8ebJyc3PVsmVLLVq0yGJLztUaNmyouLg4xcTEaPbs2XrggQc0f/581atXT/Xq1dPMmTMVFxenmTNnqmHDhoqJiVHbtm1vqJbBgwcrMjJSzzzzjNatW6dvvvlGERERsrGxkYeHh1555RXFxcUpPz9fLi4umjNnjmbMmKE5c+bo4Ycflr+/v7Hlp3fv3srJydGcOXOUk5OjJk2aKD4+/prhzSOPPKL169cXGz9+/LhSU1M1Y8YMYywqKkrjx49XQUGB3nzzTdnb2xvn9u3bJ19fX7bkAAAqHBszn/EGAABQ4f34448qKChQ8+bNjbGQkBB5eHjoueeeK/X9cnNz1blzZ3388ccWD7ktDbPZrK5du2rGjBny8fG5qXsAAFBe2JIDAABwFzhx4oSefvpp7dmzRz/99JPWrl2r5ORkdevW7abuV7NmTQ0fPlxr1qy56Zr27Nmj++67j7AEAFAhscIEAADgLhEfH6/Vq1frl19+kaurqyIiItS1a9ebvt/Fixc1ZMgQLV26tMSPGP4zw4cP1+TJk+Xu7n7TNQAAUF4ITAAAAAAAAKywJQcAAAAAAMAKgQkAAAAAAIAVAhMAAAAAAAArBCYAAAAAAABWCEwAAAAAAACsEJgAAAAAAABYITABAAAAAACwQmACAAAAAABghcAEAAAAAADAyv8BBOb+o45YcKkAAAAASUVORK5CYII=", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "#make a bar chart, ordered descending by percentage\n", "import matplotlib.pyplot as plt\n", "import seaborn as sns\n", "color_codes = ['#006400', '#FFBB22', '#FFFF4C', '#F096FF', '#FA0000', '#B4B4B4', '#F0F0F0', '#0064C8', '#0096A0', '#00CF75', '#FAE6A0']\n", "land_cover_categories = ['Trees', 'Shrublands', 'Grasslands', 'Croplands', 'Built-Up', 'Barren', 'Snow and Ice', 'Water Bodies', 'Herbaceous Wetlands', 'Mangroves', 'Moss and Lichen']\n", "sns.set_style(\"whitegrid\")\n", "fig, ax = plt.subplots(figsize=(12, 8))\n", "#order descending by percentage\n", "lc = lc.sort_values(by=['percentage'], ascending=False)\n", "#add percentage to be just right of the bar, rounded to 2 decimal places\n", "for index, row in lc.iterrows():\n", " ax.text(row.percentage+0.5, row.cover, str(round(row.percentage, 2)), color='black', ha=\"left\", va='center', fontsize=12)\n", "\n", "ax = sns.barplot(x=\"percentage\", y=\"cover\", data=lc, palette=color_codes)\n", "ax.set(xlabel=\"Percentage (%)\", ylabel=\"\")\n", "plt.show()" ] } ], "metadata": { "kernelspec": { "display_name": "wash", "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.8.18" } }, "nbformat": 4, "nbformat_minor": 2 }