{ "cells": [ { "cell_type": "markdown", "metadata": { "tags": [] }, "source": [ "# Absolute distance\n", "\n", "Calculating the absolute distance traveled by a set of particle trajectories in km. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "* Author(s): Laura Gomez Navarro\n", "* Created on: 21/06/23\n", "* Last updated on:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Wed Jun 21 16:58:00 2023\n" ] } ], "source": [ "import time\n", "\n", "print(time.ctime(time.time()))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 0. Imports and package versions" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "%matplotlib inline\n", "from datetime import timedelta, datetime\n", "from glob import glob\n", "import xarray as xr\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "import matplotlib\n", "import matplotlib.dates as mdates\n", "import xarray as xr\n", "\n", "from matplotlib import colors \n", "import matplotlib.gridspec as gridspec\n", "\n", "import cartopy\n", "import cartopy.crs as ccrs\n", "from cartopy.mpl.ticker import LongitudeFormatter, LatitudeFormatter\n", "\n", "from collections import namedtuple\n", "from shapely import geometry\n", "\n", "import scipy \n", "from scipy import stats, optimize, interpolate" ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "The autoreload extension is already loaded. To reload it, use:\n", " %reload_ext autoreload\n", "The version_information extension is already loaded. To reload it, use:\n", " %reload_ext version_information\n" ] }, { "data": { "application/json": { "Software versions": [ { "module": "Python", "version": "3.6.11 64bit [GCC Clang 11.0.0]" }, { "module": "IPython", "version": "7.16.1" }, { "module": "OS", "version": "Darwin 21.6.0 x86_64 i386 64bit" }, { "module": "numpy", "version": "1.19.2" }, { "module": "matplotlib", "version": "3.3.2" }, { "module": "xarray", "version": "0.16.2" }, { "module": "cartopy", "version": "0.18.0" }, { "module": "scipy", "version": "1.5.2" } ] }, "text/html": [ "
SoftwareVersion
Python3.6.11 64bit [GCC Clang 11.0.0]
IPython7.16.1
OSDarwin 21.6.0 x86_64 i386 64bit
numpy1.19.2
matplotlib3.3.2
xarray0.16.2
cartopy0.18.0
scipy1.5.2
Wed Jun 21 16:58:00 2023 CEST
" ], "text/latex": [ "\\begin{tabular}{|l|l|}\\hline\n", "{\\bf Software} & {\\bf Version} \\\\ \\hline\\hline\n", "Python & 3.6.11 64bit [GCC Clang 11.0.0] \\\\ \\hline\n", "IPython & 7.16.1 \\\\ \\hline\n", "OS & Darwin 21.6.0 x86\\_64 i386 64bit \\\\ \\hline\n", "numpy & 1.19.2 \\\\ \\hline\n", "matplotlib & 3.3.2 \\\\ \\hline\n", "xarray & 0.16.2 \\\\ \\hline\n", "cartopy & 0.18.0 \\\\ \\hline\n", "scipy & 1.5.2 \\\\ \\hline\n", "\\hline \\multicolumn{2}{|l|}{Wed Jun 21 16:58:00 2023 CEST} \\\\ \\hline\n", "\\end{tabular}\n" ], "text/plain": [ "Software versions\n", "Python 3.6.11 64bit [GCC Clang 11.0.0]\n", "IPython 7.16.1\n", "OS Darwin 21.6.0 x86_64 i386 64bit\n", "numpy 1.19.2\n", "matplotlib 3.3.2\n", "xarray 0.16.2\n", "cartopy 0.18.0\n", "scipy 1.5.2\n", "Wed Jun 21 16:58:00 2023 CEST" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "%load_ext autoreload\n", "%autoreload 2\n", "%load_ext version_information\n", "%version_information numpy, matplotlib, xarray, cartopy, scipy" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 1. Loading the data" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "filedir = '../Simulations/'" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [], "source": [ "ds = xr.open_dataset(filedir + 'toy_data_01.nc')" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.Dataset>\n",
       "Dimensions:     (obs: 121, traj: 144)\n",
       "Dimensions without coordinates: obs, traj\n",
       "Data variables:\n",
       "    trajectory  (traj, obs) float64 0.0 0.0 0.0 0.0 ... 143.0 143.0 143.0 143.0\n",
       "    time        (traj, obs) datetime64[ns] 2021-01-01T00:30:00 ... 2021-01-31...\n",
       "    lat         (traj, obs) float32 -39.17 -39.02 -38.9 ... -39.19 -39.21 -39.25\n",
       "    lon         (traj, obs) float32 22.5 22.55 22.61 22.66 ... 17.16 17.18 17.17\n",
       "    z           (traj, obs) float32 0.0 0.0 0.0 0.0 0.0 ... 0.0 0.0 0.0 0.0 0.0\n",
       "    U           (traj, obs) float32 nan 2.598e-06 ... 1.845e-07 -7.776e-07\n",
       "    V           (traj, obs) float32 nan 5.796e-06 ... -1.211e-06 -2.669e-06\n",
       "Attributes:\n",
       "    feature_type:           trajectory\n",
       "    Conventions:            CF-1.6/CF-1.7\n",
       "    ncei_template_version:  NCEI_NetCDF_Trajectory_Template_v2.0\n",
       "    parcels_version:        2.3.1.dev20+g92f2fb90\n",
       "    parcels_mesh:           spherical
" ], "text/plain": [ "\n", "Dimensions: (obs: 121, traj: 144)\n", "Dimensions without coordinates: obs, traj\n", "Data variables:\n", " trajectory (traj, obs) float64 ...\n", " time (traj, obs) datetime64[ns] ...\n", " lat (traj, obs) float32 ...\n", " lon (traj, obs) float32 ...\n", " z (traj, obs) float32 ...\n", " U (traj, obs) float32 ...\n", " V (traj, obs) float32 ...\n", "Attributes:\n", " feature_type: trajectory\n", " Conventions: CF-1.6/CF-1.7\n", " ncei_template_version: NCEI_NetCDF_Trajectory_Template_v2.0\n", " parcels_version: 2.3.1.dev20+g92f2fb90\n", " parcels_mesh: spherical" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "ds" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2. Calculating the distance" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.1. Defining the function to calculatethe distance between 2 points in km" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [], "source": [ "from math import sin, cos, sqrt, atan2, radians, pi\n", "\n", "def dist_km(lona, lonb, lata, latb):\n", " \"\"\"\n", " Function to calculate the distance between 2 points in km\n", " Haversine formula used, which assumes the Earth is a sphere.\n", " source: https://stackoverflow.com/questions/19412462/getting-distance-between-two-points-based-on-latitude-longitude\n", " \"\"\"\n", " \n", " R = 6373.0 # approximate radius of earth in km\n", "\n", " lat1 = radians(lata)\n", " lon1 = radians(lona)\n", " lat2 = radians(latb)\n", " lon2 = radians(lonb)\n", "\n", " dlon = lon2 - lon1\n", " dlat = lat2 - lat1\n", "\n", " a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2\n", " c = 2 * atan2(sqrt(a), sqrt(1 - a))\n", "\n", " distance = R * c\n", "\n", " return distance\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.2. Creating the output data array" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(144,)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "abs_dist_01 = ds.lon[:,0].copy() * np.nan\n", "\n", "abs_dist_01.shape" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.3. Calculating the distances traveled during every timestep for all trajectories" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "149 ms ± 10.4 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)\n" ] } ], "source": [ "%%timeit\n", "\n", "for tt in range(0, len(ds.traj)):\n", " lon_t = ds.lon[tt,:].dropna(dim='obs')\n", " lat_t = ds.lat[tt,:].dropna(dim='obs')\n", " abs_dist_01[tt] = dist_km(lon_t[0], lon_t[-1], lat_t[0], lat_t[-1])\n", " \n", "# abs_dist_01.to_netcdf(\"abs_dist_01.nc\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2.4. Checking if any values are 0, and dropping them" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'lon' (traj: 144)>\n",
       "array([ 411.04208 ,  453.4008  ,  381.6008  ,  282.05228 , 1242.5476  ,\n",
       "        480.27228 , 1201.6752  , 1146.2869  ,  908.0078  ,  919.3956  ,\n",
       "        913.43463 ,  220.22203 , 1008.9668  ,  978.1187  , 1111.2708  ,\n",
       "        315.65762 , 1207.3734  ,  316.34738 , 1736.6965  ,  603.5743  ,\n",
       "        398.85455 ,  846.42883 ,  581.2281  ,  350.16443 ,  127.907936,\n",
       "        526.6734  ,   96.51506 , 1060.3525  ,  994.03064 ,   24.599104,\n",
       "       1238.1918  ,  571.10583 ,  767.89575 ,  627.98193 ,  630.5732  ,\n",
       "        433.24515 ,  133.65677 ,  785.67346 ,  184.2212  ,  989.54193 ,\n",
       "         81.88642 ,   86.57502 ,  723.77246 , 1736.7637  , 1675.4313  ,\n",
       "       1663.6777  ,  781.6274  ,  753.3882  ,  535.4887  ,  702.92236 ,\n",
       "         74.10612 ,  154.92816 ,  269.08594 ,   72.24956 ,  384.83676 ,\n",
       "        389.89783 ,  798.38525 , 1722.8524  , 1616.8757  ,  669.89636 ,\n",
       "        148.27472 ,  879.46655 ,  417.41785 ,  188.67714 ,  116.22897 ,\n",
       "        294.26434 ,  118.76671 ,  384.75223 ,  384.20926 ,  239.12842 ,\n",
       "        787.46765 ,  836.72345 ,  205.82903 ,  708.99817 ,  730.8631  ,\n",
       "        807.8967  ,  231.73116 ,  141.5095  ,  376.80035 ,  184.07048 ,\n",
       "        230.14755 ,  494.0636  ,  169.42867 ,  432.00278 ,  700.1224  ,\n",
       "        323.10477 ,  425.54794 ,  931.1051  ,  744.7003  ,  114.45423 ,\n",
       "        147.65381 ,  386.98175 ,  810.6764  ,  914.5027  ,  996.60394 ,\n",
       "       1227.4968  ,  396.53015 ,  561.433   ,  174.67416 ,  681.2424  ,\n",
       "        583.0263  ,  447.10388 ,  198.39479 ,  450.36694 ,  453.93738 ,\n",
       "        307.8172  ,  510.4772  ,  344.71515 ,  304.95953 ,  347.53668 ,\n",
       "        342.34134 ,  311.0616  ,  538.0072  ,  931.88824 ,  472.57233 ,\n",
       "        267.78708 ,  357.8639  ,  453.324   ,  343.47607 ,  344.36768 ,\n",
       "        559.48047 ,  283.00296 ,  920.24445 ,  637.0801  ,  733.1881  ,\n",
       "        838.68726 ,  606.8762  ,  601.77466 ,  532.3691  , 1221.3522  ,\n",
       "        580.39777 ,  834.7051  ,  262.2627  ,  515.7538  ,  510.86624 ,\n",
       "        607.5452  ,  674.90967 ,  666.03156 ,  691.1114  ,  634.25055 ,\n",
       "        631.1047  ,  816.3439  , 1275.1577  , 1022.57715 ], dtype=float32)\n",
       "Dimensions without coordinates: traj
" ], "text/plain": [ "\n", "array([ 411.04208 , 453.4008 , 381.6008 , 282.05228 , 1242.5476 ,\n", " 480.27228 , 1201.6752 , 1146.2869 , 908.0078 , 919.3956 ,\n", " 913.43463 , 220.22203 , 1008.9668 , 978.1187 , 1111.2708 ,\n", " 315.65762 , 1207.3734 , 316.34738 , 1736.6965 , 603.5743 ,\n", " 398.85455 , 846.42883 , 581.2281 , 350.16443 , 127.907936,\n", " 526.6734 , 96.51506 , 1060.3525 , 994.03064 , 24.599104,\n", " 1238.1918 , 571.10583 , 767.89575 , 627.98193 , 630.5732 ,\n", " 433.24515 , 133.65677 , 785.67346 , 184.2212 , 989.54193 ,\n", " 81.88642 , 86.57502 , 723.77246 , 1736.7637 , 1675.4313 ,\n", " 1663.6777 , 781.6274 , 753.3882 , 535.4887 , 702.92236 ,\n", " 74.10612 , 154.92816 , 269.08594 , 72.24956 , 384.83676 ,\n", " 389.89783 , 798.38525 , 1722.8524 , 1616.8757 , 669.89636 ,\n", " 148.27472 , 879.46655 , 417.41785 , 188.67714 , 116.22897 ,\n", " 294.26434 , 118.76671 , 384.75223 , 384.20926 , 239.12842 ,\n", " 787.46765 , 836.72345 , 205.82903 , 708.99817 , 730.8631 ,\n", " 807.8967 , 231.73116 , 141.5095 , 376.80035 , 184.07048 ,\n", " 230.14755 , 494.0636 , 169.42867 , 432.00278 , 700.1224 ,\n", " 323.10477 , 425.54794 , 931.1051 , 744.7003 , 114.45423 ,\n", " 147.65381 , 386.98175 , 810.6764 , 914.5027 , 996.60394 ,\n", " 1227.4968 , 396.53015 , 561.433 , 174.67416 , 681.2424 ,\n", " 583.0263 , 447.10388 , 198.39479 , 450.36694 , 453.93738 ,\n", " 307.8172 , 510.4772 , 344.71515 , 304.95953 , 347.53668 ,\n", " 342.34134 , 311.0616 , 538.0072 , 931.88824 , 472.57233 ,\n", " 267.78708 , 357.8639 , 453.324 , 343.47607 , 344.36768 ,\n", " 559.48047 , 283.00296 , 920.24445 , 637.0801 , 733.1881 ,\n", " 838.68726 , 606.8762 , 601.77466 , 532.3691 , 1221.3522 ,\n", " 580.39777 , 834.7051 , 262.2627 , 515.7538 , 510.86624 ,\n", " 607.5452 , 674.90967 , 666.03156 , 691.1114 , 634.25055 ,\n", " 631.1047 , 816.3439 , 1275.1577 , 1022.57715 ], dtype=float32)\n", "Dimensions without coordinates: traj" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "abs_dist_01" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "% --> 'lon' appears , which also cannot be called??\n", "% abs_dist_01.lon , gives error " ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [], "source": [ "abs_dist_01 = abs_dist_01.where(abs_dist_01!=0, drop=True)\n" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "
<xarray.DataArray 'lon' (traj: 144)>\n",
       "array([ 411.04208 ,  453.4008  ,  381.6008  ,  282.05228 , 1242.5476  ,\n",
       "        480.27228 , 1201.6752  , 1146.2869  ,  908.0078  ,  919.3956  ,\n",
       "        913.43463 ,  220.22203 , 1008.9668  ,  978.1187  , 1111.2708  ,\n",
       "        315.65762 , 1207.3734  ,  316.34738 , 1736.6965  ,  603.5743  ,\n",
       "        398.85455 ,  846.42883 ,  581.2281  ,  350.16443 ,  127.907936,\n",
       "        526.6734  ,   96.51506 , 1060.3525  ,  994.03064 ,   24.599104,\n",
       "       1238.1918  ,  571.10583 ,  767.89575 ,  627.98193 ,  630.5732  ,\n",
       "        433.24515 ,  133.65677 ,  785.67346 ,  184.2212  ,  989.54193 ,\n",
       "         81.88642 ,   86.57502 ,  723.77246 , 1736.7637  , 1675.4313  ,\n",
       "       1663.6777  ,  781.6274  ,  753.3882  ,  535.4887  ,  702.92236 ,\n",
       "         74.10612 ,  154.92816 ,  269.08594 ,   72.24956 ,  384.83676 ,\n",
       "        389.89783 ,  798.38525 , 1722.8524  , 1616.8757  ,  669.89636 ,\n",
       "        148.27472 ,  879.46655 ,  417.41785 ,  188.67714 ,  116.22897 ,\n",
       "        294.26434 ,  118.76671 ,  384.75223 ,  384.20926 ,  239.12842 ,\n",
       "        787.46765 ,  836.72345 ,  205.82903 ,  708.99817 ,  730.8631  ,\n",
       "        807.8967  ,  231.73116 ,  141.5095  ,  376.80035 ,  184.07048 ,\n",
       "        230.14755 ,  494.0636  ,  169.42867 ,  432.00278 ,  700.1224  ,\n",
       "        323.10477 ,  425.54794 ,  931.1051  ,  744.7003  ,  114.45423 ,\n",
       "        147.65381 ,  386.98175 ,  810.6764  ,  914.5027  ,  996.60394 ,\n",
       "       1227.4968  ,  396.53015 ,  561.433   ,  174.67416 ,  681.2424  ,\n",
       "        583.0263  ,  447.10388 ,  198.39479 ,  450.36694 ,  453.93738 ,\n",
       "        307.8172  ,  510.4772  ,  344.71515 ,  304.95953 ,  347.53668 ,\n",
       "        342.34134 ,  311.0616  ,  538.0072  ,  931.88824 ,  472.57233 ,\n",
       "        267.78708 ,  357.8639  ,  453.324   ,  343.47607 ,  344.36768 ,\n",
       "        559.48047 ,  283.00296 ,  920.24445 ,  637.0801  ,  733.1881  ,\n",
       "        838.68726 ,  606.8762  ,  601.77466 ,  532.3691  , 1221.3522  ,\n",
       "        580.39777 ,  834.7051  ,  262.2627  ,  515.7538  ,  510.86624 ,\n",
       "        607.5452  ,  674.90967 ,  666.03156 ,  691.1114  ,  634.25055 ,\n",
       "        631.1047  ,  816.3439  , 1275.1577  , 1022.57715 ], dtype=float32)\n",
       "Dimensions without coordinates: traj
" ], "text/plain": [ "\n", "array([ 411.04208 , 453.4008 , 381.6008 , 282.05228 , 1242.5476 ,\n", " 480.27228 , 1201.6752 , 1146.2869 , 908.0078 , 919.3956 ,\n", " 913.43463 , 220.22203 , 1008.9668 , 978.1187 , 1111.2708 ,\n", " 315.65762 , 1207.3734 , 316.34738 , 1736.6965 , 603.5743 ,\n", " 398.85455 , 846.42883 , 581.2281 , 350.16443 , 127.907936,\n", " 526.6734 , 96.51506 , 1060.3525 , 994.03064 , 24.599104,\n", " 1238.1918 , 571.10583 , 767.89575 , 627.98193 , 630.5732 ,\n", " 433.24515 , 133.65677 , 785.67346 , 184.2212 , 989.54193 ,\n", " 81.88642 , 86.57502 , 723.77246 , 1736.7637 , 1675.4313 ,\n", " 1663.6777 , 781.6274 , 753.3882 , 535.4887 , 702.92236 ,\n", " 74.10612 , 154.92816 , 269.08594 , 72.24956 , 384.83676 ,\n", " 389.89783 , 798.38525 , 1722.8524 , 1616.8757 , 669.89636 ,\n", " 148.27472 , 879.46655 , 417.41785 , 188.67714 , 116.22897 ,\n", " 294.26434 , 118.76671 , 384.75223 , 384.20926 , 239.12842 ,\n", " 787.46765 , 836.72345 , 205.82903 , 708.99817 , 730.8631 ,\n", " 807.8967 , 231.73116 , 141.5095 , 376.80035 , 184.07048 ,\n", " 230.14755 , 494.0636 , 169.42867 , 432.00278 , 700.1224 ,\n", " 323.10477 , 425.54794 , 931.1051 , 744.7003 , 114.45423 ,\n", " 147.65381 , 386.98175 , 810.6764 , 914.5027 , 996.60394 ,\n", " 1227.4968 , 396.53015 , 561.433 , 174.67416 , 681.2424 ,\n", " 583.0263 , 447.10388 , 198.39479 , 450.36694 , 453.93738 ,\n", " 307.8172 , 510.4772 , 344.71515 , 304.95953 , 347.53668 ,\n", " 342.34134 , 311.0616 , 538.0072 , 931.88824 , 472.57233 ,\n", " 267.78708 , 357.8639 , 453.324 , 343.47607 , 344.36768 ,\n", " 559.48047 , 283.00296 , 920.24445 , 637.0801 , 733.1881 ,\n", " 838.68726 , 606.8762 , 601.77466 , 532.3691 , 1221.3522 ,\n", " 580.39777 , 834.7051 , 262.2627 , 515.7538 , 510.86624 ,\n", " 607.5452 , 674.90967 , 666.03156 , 691.1114 , 634.25055 ,\n", " 631.1047 , 816.3439 , 1275.1577 , 1022.57715 ], dtype=float32)\n", "Dimensions without coordinates: traj" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "abs_dist_01" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "% --> missing part to check first if 0 are there\n", "% --> improve line above too??" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 3. Plotting the outputs" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.1. Plotting histogram of absolute distances" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "Text(0.5, 0, 'Absolute distance [km]')" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "plt.figure(figsize=(14,10))\n", "plt.hist(abs_dist_01)\n", "plt.grid()\n", "plt.ylabel('Frequency')\n", "plt.xlabel('Absolute distance [km]')" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 3.2. Boxplot of the absolute distance of all the particles:" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "image/png": "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Mo899tiG961bt47nn3++w3EuvfRSjjvuOL70pS/x5je/mREjRnD++eczd+7cbuvZfvvtWb58OU8//fSGQJOZPPbYY13+77lmzRoys67/nVevXt3rf5dbPeBMBf47Mx+rbczM2TUvb4+Ie4FfR8QbM/N37cO6OF50095+zNkAbW1tWU+6ldT6pk+fzvnnn8+aNWsYMmQIU6dOZdasWc0uSy9hyZIljBgxotll9Fn7HVPt3+E1r3kNixYt4mMf+9iGMYsWLWKvvfbaMGbEiBH8/d//PZdccgk333wzRx111IbJyl153etex6WXXsrw4cM3BIrbbrsNgOHDhzNixAh++9vfcuihhzJt2jSgEjjuvfdett9++w2fO2zYMAYNGtTh97148WLe/OY386//+q8b2h566CEiotv/XQ466CCeffZZ7rjjjg3zcG644QZWrlzJW9/61o3eN2TIkB6PV2vo0KG84Q1veMlxtVp2HZyI+EsqE4zPf4mhAIuAdcBu1dfLgNFRc06s+nwUlUtakrYA06dP59xzz+WUU05h5cqVnHLKKZx77rlMnz692aVpC3P88cdz0UUXcdZZZ3HPPfcwa9YsLr74Yj7zmc90GDd16lQuvvhibr31Vo466qgej/mRj3yE+++/n+OOO4677rqLn/zkJ5x77rkdxuy+++784he/YOHChdx5550ce+yx3HfffR3GjB8/nt/85jfcf//9rFixgvXr17P77rvzu9/9jquuuop77rmHL37xi1x/feepsB1NmDCBd7/73RxzzDHcdNNN3HjjjRxzzDG8973v7TDB+P/+7/+45ZZbePjhh3n++ee55ZZbuOWWW3j++efr+VXWLzOb9qAyT+bIbvrOBu4Doo7jvJ7KmZm3VF9PqL7er2bMftW2PV7qePvss09K2vwNGTIkTz/99A5tp59+eg4ZMqRJFalev//975tdwib58Y9/nJV/Yl90zjnn5Ktf/ercaqut8tWvfnXOnj17o/etX78+X/WqV+VBBx1U1+fMnTs3d9999xwyZEjut99++f3vfz+BvO+++zIz84knnsi/+7u/y+HDh+eoUaPy+OOPz49+9KN54IEHbjjGXXfdlfvuu28OGzZsw3vXrFmTRx99dG6//fY5cuTIPProo3PmzJn5yle+ssd6Hn/88TziiCNyxIgROWLEiDziiCPyySef7DDm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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "def set_box_color(bp, color):\n", " plt.setp(bp['boxes'], color=color)\n", " plt.setp(bp['whiskers'], color=color)\n", " plt.setp(bp['caps'], color=color)\n", " plt.setp(bp['medians'], color=color)\n", "# plt.setp(bp['facecolor'], color=color)\n", "\n", "plt.figure(figsize=(8,8))\n", "ax1 = plt.subplot(111)\n", "\n", "bpl = ax1.boxplot(abs_dist_01) #, positions=np.array(range(len(dist_cum_a)))*2.0-0.4, sym='', widths=0.6)\n", "set_box_color(bpl, 'C0') # colors are from http://colorbrewer2.org/\n", "\n", "# draw temporary red and blue lines and use them to create a legend\n", "plt.plot([], c='C0', label='Toy data 01')\n", "# plt.plot([], c='C3', label='Tidal forcing')\n", "plt.legend(fontsize=14)\n", "# ax.legend(fontsize=14)\n", "\n", "# plt.xticks(range(0, len(ticks) * 2, 2), ticks, fontsize=14)\n", "plt.yticks(fontsize=14)\n", "# plt.xlim(-2, len(ticks)*2)\n", "# plt.ylim(0, 850)\n", "# ax1.set_xticklabels(labels, rotation=45, horizontalalignment='right')\n", "# plt.grid()\n", "ax1.yaxis.grid()\n", "ax1.set_ylabel('Absolute distance [km]', size=16)\n", "\n", "plt.tight_layout()\n", "# plt.savefig('figs/cumsum_km_and_total_dist_km_BOXPLOT_01.jpg', dpi=300)\n", "plt.show()" ] }, { "cell_type": "code", "execution_count": null, "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.9.18" } }, "nbformat": 4, "nbformat_minor": 4 }