Exploring the plastic initialisation maps#

In this tutorial we will explore the initialisation maps offered in plasticparcels. Descriptions of these initialisation maps can be found here. For your particular model, you can generate these maps using the create_release_maps.py script found in plasticparcels.scripts. Here, we will download the file for the NEMO0083 model. We will also make a dummy fieldset in order to show how to create particle sets from these initialisation maps.

[1]:
# Library imports
from datetime import datetime, timedelta
import xarray as xr
import pandas as pd
import numpy as np

# Parcels and PlasticParcels imports
import plasticparcels as pp
from parcels import FieldSet

# Plotting imports
import matplotlib.pyplot as plt
from matplotlib.colors import LogNorm
import matplotlib.gridspec as gridspec
import matplotlib.ticker as ticker
import matplotlib
import cartopy.crs as ccrs
import cartopy.feature as cfeature
import cmocean
[2]:
# Load the model settings
settings = {"release_maps": {
                "coastal": None,
                "rivers": None,
                "fisheries": None,
                "global_concentrations": None,},
            "unbeaching": {
                "filename": None,
            }
}

# Set some plastic settings, for use later in the tutorial
settings['plastictype'] = {
    'wind_coefficient' : 0.01, # Percentage of wind to apply to particles
    'plastic_diameter' : 0.001, # Plastic particle diameter (m)
    'plastic_density' : 1030., # Plastic particle density (kg/m^3)
}
[3]:
# Download the mask and release data
settings = pp.utils.download_plasticparcels_dataset('NEMO0083', settings, 'input_data')
[4]:
# Create a dummy fieldset
def generate_dummy_fieldset(xdim, ydim, zdim=1, tdim=1):
    lon = np.linspace(0., 10., xdim, dtype=np.float32)
    lat = np.linspace(0., 10., ydim, dtype=np.float32)
    depth = np.zeros(zdim, dtype=np.float32)
    time = np.zeros(tdim, dtype=np.float64)
    if zdim == 1 and tdim == 1:
        U, V = np.meshgrid(lon, lat)
        dimensions = {'lat': lat, 'lon': lon}
    else:
        U = np.ones((tdim, zdim, ydim, xdim))
        V = np.ones((tdim, zdim, ydim, xdim))
        dimensions = {'lat': lat, 'lon': lon, 'depth': depth, 'time': time}
    data = {'U': np.array(U, dtype=np.float32), 'V': np.array(V, dtype=np.float32)}

    fieldset = FieldSet.from_data(data, dimensions)
    return fieldset

fieldset = generate_dummy_fieldset(10,10)

Explore the coastal initialisation map#

The coastal initialisation map provides locations of plastic pollution generated from mismanaged plastic waste near coastal populations. We will start by loading in the data using pandas.

[5]:
coastal_ds = pd.read_csv(settings['release_maps']['coastal'])
[6]:
coastal_ds
[6]:
Unnamed: 0 Continent Region Subregion Country Longitude Latitude Area[km2] PopulationDensity Economic status Mismanaged plastic waste [kg/person/day] MPW_Cell
0 0 Asia Asia Western Asia Yemen 53.583333 12.239176 8.201038 17.718029 LMI 0.076627 11.134375
1 1 Asia Asia Western Asia Yemen 53.666667 12.239176 8.201038 17.718029 LMI 0.076627 11.134375
2 2 Asia Asia Western Asia Yemen 53.750000 12.239176 8.201038 17.718029 LMI 0.076627 11.134375
3 3 Asia Asia Western Asia Yemen 53.833333 12.239176 8.201038 17.718029 LMI 0.076627 11.134375
4 4 Asia Asia Western Asia Yemen 43.416667 12.320603 8.195966 11.842899 LMI 0.076627 7.437719
... ... ... ... ... ... ... ... ... ... ... ... ...
87854 87854 North America Americas Caribbean Sint Maarten -62.833333 17.869711 7.778406 421.876770 HIC 0.005100 16.735158
87855 87855 North America Americas Caribbean Sint Maarten -62.666667 17.869711 7.778406 0.000000 HIC 0.005100 0.000000
87856 87856 North America Americas Caribbean Sint Maarten -62.833333 17.949007 7.771451 421.876770 HIC 0.005100 16.720194
87857 87857 North America Americas Caribbean Sint Maarten -62.666667 17.949007 7.771451 0.000000 HIC 0.005100 0.000000
87858 87858 North America Americas Caribbean Sint Maarten -62.750000 18.028266 7.764472 0.000000 HIC 0.005100 0.000000

87859 rows × 12 columns

The coastal dataset can be queried using geographic information, as well as population density and economic status information.

[7]:
print("Unique Continents:", coastal_ds['Continent'].unique())
print("Unique Regions:", coastal_ds['Region'].unique())
print("Unique Subregions:", coastal_ds['Subregion'].unique())
print("Unique Economic status:", coastal_ds['Economic status'].unique())
Unique Continents: ['Asia' 'South America' 'Europe' 'Oceania' 'North America'
 'Seven seas (open ocean)' 'Africa' 'Antarctica']
Unique Regions: ['Asia' 'Americas' 'Europe' 'Oceania' 'Africa' 'Antarctica']
Unique Subregions: ['Western Asia' 'South-Eastern Asia' 'South America' 'Southern Europe'
 'Melanesia' 'Micronesia' 'Caribbean' 'Polynesia' 'Northern America'
 'Seven seas (open ocean)' 'Northern Europe' 'Eastern Europe'
 'Northern Africa' 'Western Africa' 'Eastern Africa' 'Eastern Asia'
 'Southern Asia' 'Southern Africa' 'Middle Africa' 'Central America'
 'Australia and New Zealand' 'Western Europe' 'Antarctica']
Unique Economic status: ['LMI' 'HIC' nan 'UMI' 'LI']

To subset the data in plasticparcels, you simply provide one or more of the following settings:

settings['release'] = {
    'initialisation_type': 'coastal',
    'continent': 'Europe',
    'region': 'Europe',
    'subregion': 'Northern Europe',
    'country': 'Netherlands',
    'economicstatus': 'HIC',
}

For example, if you wanted to create an initialisation map for coastal plastic pollution along all Northern European coastlines, you can use:

[8]:
settings['release'] = {
    'initialisation_type': 'coastal',
    'subregion': 'Northern Europe',
}

[9]:
pset = pp.create_particleset_from_map(fieldset, settings)
[10]:
# Plot the initialisation map
ax = plt.subplot(111, projection=ccrs.PlateCarree())
ax.add_feature(cfeature.LAND, zorder=1)
ax.coastlines(zorder=2)
cb = ax.scatter(pset.lon, pset.lat, c=pset.plastic_amount, s=2, transform=ccrs.PlateCarree(), zorder=3, norm=LogNorm(vmin=pset.plastic_amount.min(), vmax=pset.plastic_amount.max()))
ax.gridlines(draw_labels=True, zorder=4)
plt.title("Northern Europe Coastal Initialisation")
plt.colorbar(cb, label='Plastic amount', orientation='horizontal')
plt.show()
../_images/examples_example_initialisation_maps_13_0.png

Explore the rivers initialisation map#

The rivers initialisation map provides locations of plastic pollution generated from mismanaged plastic waste that ends up in the ocean via river outflow. We will start by loading in the data using pandas.

[11]:
rivers_ds = pd.read_csv(settings['release_maps']['rivers'])
[12]:
rivers_ds
[12]:
Unnamed: 0 Continent Region Subregion Country Longitude Latitude Emissions
0 0 Oceania Oceania Australia and New Zealand New Zealand 168.833333 -46.569603 0.164904
1 1 Oceania Oceania Australia and New Zealand New Zealand 168.333333 -46.454902 0.124932
2 2 Oceania Oceania Australia and New Zealand New Zealand 168.333333 -46.454902 1.213370
3 3 Oceania Oceania Australia and New Zealand New Zealand 168.000000 -46.339961 0.121138
4 4 Oceania Oceania Australia and New Zealand New Zealand 169.833333 -46.397461 0.197533
... ... ... ... ... ... ... ... ...
31814 31814 Europe Europe Eastern Europe Russian Federation 158.768783 52.970829 3.937440
31815 31815 Europe Europe Eastern Europe Russian Federation 158.598172 52.908962 3.821710
31816 31816 Europe Europe Eastern Europe Russian Federation 158.768783 52.970829 9.836130
31817 31817 Europe Europe Eastern Europe Russian Federation 158.598172 52.908962 1.693040
31818 31818 Europe Europe Eastern Europe Russian Federation 143.016093 53.637712 1.886280

31819 rows × 8 columns

For now, the rivers dataset can only be queried using geographic information.

[13]:
print("Unique Continents:", rivers_ds['Continent'].unique())
print("Unique Regions:", rivers_ds['Region'].unique())
print("Unique Subregions:", rivers_ds['Subregion'].unique())
Unique Continents: ['Oceania' 'Asia' 'Europe' 'Africa' 'South America' 'North America']
Unique Regions: ['Oceania' 'Asia' 'Europe' 'Africa' 'Americas']
Unique Subregions: ['Australia and New Zealand' 'Melanesia' 'South-Eastern Asia' 'Micronesia'
 'Eastern Asia' 'Southern Asia' 'Eastern Europe' 'Southern Africa'
 'Eastern Africa' 'Middle Africa' 'Western Africa' 'Northern Africa'
 'Southern Europe' 'Western Asia' 'Central Asia' 'Western Europe'
 'Northern Europe' 'South America' 'Central America' 'Caribbean'
 'Northern America']

To subset the data in plasticparcels, you simply provide one or more of the following settings:

settings['release'] = {
    'initialisation_type': 'rivers',
    'continent': 'Europe',
    'region': 'Europe',
    'subregion': 'Northern Europe',
    'country': 'Netherlands',
}

For example, if you wanted to create an initialisation map for riverine plastic pollution from Australian and New Zealand rivers, you can use:

[14]:
settings['release'] = {
    'initialisation_type': 'rivers',
    'subregion': 'Australia and New Zealand',
}
[15]:
pset = pp.create_particleset_from_map(fieldset, settings)
[16]:
# Plot the initialisation map
ax = plt.subplot(111, projection=ccrs.PlateCarree())
ax.add_feature(cfeature.LAND, zorder=1)
ax.coastlines(zorder=2)
cb = ax.scatter(pset.lon, pset.lat, c=pset.plastic_amount, transform=ccrs.PlateCarree(), zorder=3, norm=LogNorm(vmin=pset.plastic_amount.min(), vmax=pset.plastic_amount.max()))
ax.gridlines(draw_labels=True, zorder=4)
plt.title("Australia and New Zealand Riverine Initialisation")
plt.colorbar(cb, label='Plastic amount', orientation='horizontal')
plt.show()
../_images/examples_example_initialisation_maps_22_0.png

Explore the fisheries initialisation map#

The fisheries initialisation map provides locations of plastic pollution generated from fishing related activity, which we assume to be proportional to the number of fishing hours spent in a given location. We will start by loading in the data using pandas.

[17]:
fisheries_ds = pd.read_csv(settings['release_maps']['fisheries'])
[18]:
fisheries_ds
[18]:
Unnamed: 0 Longitude Latitude Flag Geartype Month Continent Region Subregion Country fishing_hours
0 0 -179.998299 53.902935 USA pots_and_traps 2020-09-01 North America Americas Northern America United States 0.1477
1 1 -179.998244 64.513663 CYP trawlers 2020-08-01 Asia Asia Western Asia Cyprus 0.5673
2 2 -179.998244 64.513663 KOR trawlers 2020-10-01 Asia Asia Eastern Asia Republic of Korea 0.9904
3 3 -179.998244 64.513663 RUS fishing 2020-09-01 Europe Europe Eastern Europe Russian Federation 4.9353
4 4 -179.998244 64.513663 RUS purse_seines 2020-09-01 Europe Europe Eastern Europe Russian Federation 2.6808
... ... ... ... ... ... ... ... ... ... ... ...
5975965 5975965 180.000000 18.818880 TWN drifting_longlines 2020-12-01 Asia Asia Eastern Asia Taiwan 4.8436
5975966 5975966 180.000000 19.370117 TWN drifting_longlines 2020-12-01 Asia Asia Eastern Asia Taiwan 1.2607
5975967 5975967 180.000000 19.684276 CHN squid_jigger 2020-06-01 Asia Asia Eastern Asia China 1.7861
5975968 5975968 180.000000 22.329116 TWN drifting_longlines 2020-02-01 Asia Asia Eastern Asia Taiwan 0.4816
5975969 5975969 180.000000 22.483228 TWN drifting_longlines 2020-02-01 Asia Asia Eastern Asia Taiwan 0.3310

5975970 rows × 11 columns

The fisheries dataset can be queried using geographic information and country flag. The ‘gear type’ option will be added in upcoming release.

[19]:
print("Unique Continents:", fisheries_ds['Continent'].unique())
print("Unique Regions:", fisheries_ds['Region'].unique())
print("Unique Subregions:", fisheries_ds['Subregion'].unique())
Unique Continents: ['North America' 'Asia' 'Europe' 'Oceania' 'Africa' 'South America'
 'Seven seas (open ocean)']
Unique Regions: ['Americas' 'Asia' 'Europe' 'Oceania' 'Africa']
Unique Subregions: ['Northern America' 'Western Asia' 'Eastern Asia' 'Eastern Europe'
 'Melanesia' 'Australia and New Zealand' 'Southern Europe' 'Micronesia'
 'Western Africa' 'Polynesia' 'South America' 'Central America'
 'Northern Europe' 'Caribbean' 'Western Europe' 'Southern Asia'
 'South-Eastern Asia' 'Southern Africa' 'Middle Africa' 'Eastern Africa'
 'Northern Africa']

To subset the data in plasticparcels, you simply provide one or more of the following settings:

settings['release'] = {
    'initialisation_type': 'fisheries',
    'continent': 'Europe',
    'region': 'Europe',
    'subregion': 'Northern Europe',
    'country': 'Netherlands',
}

For example, if you wanted to create an initialisation map for fisheries related plastic pollution from the continent of Asia, you can use:

[20]:
settings['release'] = {
    'initialisation_type': 'fisheries',
    'continent': 'Asia'
}
[21]:
pset = pp.create_particleset_from_map(fieldset, settings)
[22]:
# Plot the initialisation map
ax = plt.subplot(111, projection=ccrs.PlateCarree())
ax.add_feature(cfeature.LAND, zorder=1)
ax.coastlines(zorder=2)
cb = ax.scatter(pset.lon, pset.lat, c=pset.plastic_amount, s=0.5, transform=ccrs.PlateCarree(), zorder=3, norm=LogNorm(vmin=pset.plastic_amount.min(), vmax=pset.plastic_amount.max()))
ax.gridlines(draw_labels=True, zorder=4)
plt.title("Asian Fisheries Initialisation")
plt.colorbar(cb, label='Fishing hours', orientation='horizontal')
plt.show()
../_images/examples_example_initialisation_maps_31_0.png

Explore the global_concentrations initialisation maps#

The global_concentrations initialisation map provides an estimate of plastic pollution concentrations within the ocean and along coastlines globally. We will start by loading in the data using pandas.

[23]:
concentrations_ds = pd.read_csv(settings['release_maps']['global_concentrations'])
/tmp/ipykernel_498482/2574947031.py:1: DtypeWarning: Columns (1,2,3,4) have mixed types. Specify dtype option on import or set low_memory=False.
  concentrations_ds = pd.read_csv(settings['release_maps']['global_concentrations'])
[24]:
concentrations_ds
[24]:
Unnamed: 0 Continent Region Subregion Country Longitude Latitude Concentration ConcentrationType
0 0 NaN NaN NaN NaN 163.166667 -76.991731 0.000001 Ocean
1 1 NaN NaN NaN NaN 163.250000 -76.991731 0.000001 Ocean
2 2 NaN NaN NaN NaN 163.333333 -76.991731 0.000001 Ocean
3 3 NaN NaN NaN NaN 163.416667 -76.991731 0.000001 Ocean
4 4 NaN NaN NaN NaN 163.500000 -76.991731 0.000001 Ocean
... ... ... ... ... ... ... ... ... ...
7670607 51864 Europe Europe Eastern Europe Russian Federation 73.155517 67.431626 0.056413 Beach
7670608 51865 Europe Europe Eastern Europe Russian Federation 73.155159 67.394924 0.056413 Beach
7670609 51866 Europe Europe Eastern Europe Russian Federation 73.154806 67.358225 0.056413 Beach
7670610 51867 Europe Europe Eastern Europe Russian Federation 73.154457 67.321532 0.056413 Beach
7670611 51868 Europe Europe Eastern Europe Russian Federation 73.154110 67.284847 0.056413 Beach

7670612 rows × 9 columns

The global_concentrations dataset can be divided into two components, an ‘ocean’ component, and a ‘beach’ component. The ‘beach’ component can be queried using geographic information, whereas this information is simply ‘NaN’ for the ‘ocean’ component.

[25]:
print("Unique Continents:", concentrations_ds['Continent'].unique())
print("Unique Regions:", concentrations_ds['Region'].unique())
print("Unique Subregions:", concentrations_ds['Subregion'].unique())
Unique Continents: [nan 'Antarctica' 'Seven seas (open ocean)' 'South America' 'Oceania'
 'Africa' 'Europe' 'Asia' 'North America']
Unique Regions: [nan 'Antarctica' 'Americas' 'Oceania' 'Africa' 'Europe' 'Asia']
Unique Subregions: [nan 'Antarctica' 'Seven seas (open ocean)' 'South America'
 'Australia and New Zealand' 'Southern Africa' 'Eastern Africa'
 'Melanesia' 'Western Europe' 'Polynesia' 'Middle Africa'
 'South-Eastern Asia' 'Micronesia' 'Southern Asia' 'Western Africa'
 'Central America' 'Caribbean' 'Western Asia' 'Northern Africa'
 'Eastern Asia' 'Northern America' 'Southern Europe' 'Eastern Europe'
 'Northern Europe']

To subset the data in plasticparcels, you simply provide one or more of the following settings:

settings['release'] = {
    'initialisation_type': 'global_concentrations',
    'concentration_type': 'Ocean'
}

or

settings['release'] = {
    'initialisation_type': 'global_concentrations',
    'concentration_type': 'Beach'
    'continent': 'Europe',
    'region': 'Europe',
    'subregion': 'Northern Europe',
    'country': 'Netherlands'

For example, if you wanted to create an initialisation map for existing coastal plastic pollution along Greek coastlines, you can use:

[26]:
settings['release'] = {
    'initialisation_type': 'global_concentrations',
    'concentration_type': 'Beach',
    'country': 'Greece',
}
[27]:
pset = pp.create_particleset_from_map(fieldset, settings)
/storage/home/denes001/Projects/PlasticParcels/plasticparcels/constructors.py:232: DtypeWarning: Columns (1,2,3,4) have mixed types. Specify dtype option on import or set low_memory=False.
  particle_locations = pd.read_csv(settings['release_maps'][release_type])
[28]:
# Plot the initialisation map
ax = plt.subplot(111, projection=ccrs.PlateCarree())
ax.add_feature(cfeature.LAND, zorder=1)
ax.coastlines(zorder=2)
cb = ax.scatter(pset.lon, pset.lat, c=pset.plastic_amount, s=2, transform=ccrs.PlateCarree(), zorder=3, norm=LogNorm(vmin=pset.plastic_amount.min(), vmax=pset.plastic_amount.max()))
ax.gridlines(draw_labels=True, zorder=4)
plt.title("Existing Plastic Greece Coastline Initialisation")
plt.colorbar(cb, label='Plastic amount', orientation='horizontal')
plt.show()
../_images/examples_example_initialisation_maps_40_0.png

If you wanted to create an initialisation map for existing global concentrations, you can use:

[29]:
settings['release'] = {
    'initialisation_type': 'global_concentrations',
    'concentration_type': 'Ocean'
}
[30]:
pset = pp.create_particleset_from_map(fieldset, settings)
/storage/home/denes001/Projects/PlasticParcels/plasticparcels/constructors.py:232: DtypeWarning: Columns (1,2,3,4) have mixed types. Specify dtype option on import or set low_memory=False.
  particle_locations = pd.read_csv(settings['release_maps'][release_type])
[31]:
# Plot the initialisation map
ax = plt.subplot(111, projection=ccrs.PlateCarree())
ax.add_feature(cfeature.LAND, zorder=1)
ax.coastlines(zorder=2)
cb = ax.scatter(pset.lon, pset.lat, c=pset.plastic_amount, s=2, transform=ccrs.PlateCarree(), zorder=3, norm=LogNorm(vmin=pset.plastic_amount.min(), vmax=pset.plastic_amount.max()))
ax.gridlines(draw_labels=True, zorder=4)
plt.title("Existing Plastic Initialisation")
plt.colorbar(cb, label='Plastic amount', orientation='horizontal')
plt.show()
../_images/examples_example_initialisation_maps_44_0.png

Plots of all four initialisation maps#

Finally, we will create plots of all four initialisation maps, figure 2 of the article.

[32]:
# Create the particlesets
settings['release'] = {'initialisation_type': 'coastal'}
pset_coastal = pp.constructors.create_particleset_from_map(fieldset, settings)

settings['release'] = {'initialisation_type': 'rivers'}
pset_rivers = pp.constructors.create_particleset_from_map(fieldset, settings)

settings['release'] = {'initialisation_type': 'fisheries'}
pset_fisheries = pp.constructors.create_particleset_from_map(fieldset, settings)

settings['release'] = {'initialisation_type': 'global_concentrations',
                        'concentration_type': 'Ocean'}
pset_conc_ocean = pp.constructors.create_particleset_from_map(fieldset, settings)

settings['release'] = {'initialisation_type': 'global_concentrations',
                        'concentration_type': 'Beach'}
pset_conc_beach = pp.constructors.create_particleset_from_map(fieldset, settings)

/storage/home/denes001/Projects/PlasticParcels/plasticparcels/constructors.py:232: DtypeWarning: Columns (1,2,3,4) have mixed types. Specify dtype option on import or set low_memory=False.
  particle_locations = pd.read_csv(settings['release_maps'][release_type])
/storage/home/denes001/Projects/PlasticParcels/plasticparcels/constructors.py:232: DtypeWarning: Columns (1,2,3,4) have mixed types. Specify dtype option on import or set low_memory=False.
  particle_locations = pd.read_csv(settings['release_maps'][release_type])
[33]:
# Create the figure object
plt.figure(figsize=(21,9), dpi=200)
gs = gridspec.GridSpec(2, 4, width_ratios=[30,0.75,30,1.5], height_ratios=[1, 1], wspace=0.01, hspace=0.1)

# Position of colorbars and number of ticks
cb_axes_position = [1.025, 0.0, 0.03, 0.95]
nticks = 10

# Plot the coastal initialisation map
ax = plt.subplot(gs[0,0], projection=ccrs.Robinson())
vmin, vmax = 1e-1, 1e3
cb = ax.scatter(pset_coastal.lon, pset_coastal.lat, c=pset_coastal.plastic_amount, s=0.25, cmap=plt.cm.inferno, transform=ccrs.PlateCarree(), vmin=vmin, vmax=vmax, norm=matplotlib.colors.LogNorm())
ax.add_feature(cfeature.LAND, zorder=0, color='grey')
ax.set_global()
cbar_ax = ax.inset_axes(cb_axes_position)
cbar = plt.colorbar(cb, cax=cbar_ax, extend='both')
cbar.set_label('Mismanaged Plastic Waste (kg/day)', fontsize=10)
ax.text(0, 0.95, "a)", transform=ax.transAxes, size=16)

# Plot the rivers initialisation map
ax = plt.subplot(gs[0,2], projection=ccrs.Robinson())
vmin, vmax = 1e-1, 1e2
cb = ax.scatter(pset_rivers.lon, pset_rivers.lat, c=pset_rivers.plastic_amount, s=0.25, cmap=cmocean.cm.solar, transform=ccrs.PlateCarree(), vmin=vmin, vmax=vmax, norm=matplotlib.colors.LogNorm())
ax.add_feature(cfeature.LAND, zorder=0, color='grey')
ax.set_global()
cbar_ax = ax.inset_axes(cb_axes_position)
cbar = plt.colorbar(cb, cax=cbar_ax, extend='both')
cbar.set_label('River Emissions (MT/month)', fontsize=10)
ax.text(0, 0.95, "b)", transform=ax.transAxes, size=16)

# Plot the fisheries initialisation map
ax = plt.subplot(gs[1,0], projection=ccrs.Robinson())
vmin, vmax = 1e-1, 1e3
cb = ax.scatter(pset_fisheries.lon, pset_fisheries.lat, c=pset_fisheries.plastic_amount, s=0.1, cmap=plt.cm.Spectral_r, transform=ccrs.PlateCarree(), vmin=vmin, vmax=vmax, norm=matplotlib.colors.LogNorm())
ax.add_feature(cfeature.LAND, zorder=0, color='grey')
ax.set_global()
cbar_ax = ax.inset_axes(cb_axes_position)
cbar = plt.colorbar(cb, cax=cbar_ax, extend='both')
cbar.set_label('Fishing hours (per grid cell in 2020)', fontsize=10)
ax.text(0, 0.95, "c)", transform=ax.transAxes, size=16)

# Plot the current concentrations initialisation map
ax = plt.subplot(gs[1,2], projection=ccrs.Robinson())
vmin, vmax = 1e-6, 0.05
vmin2, vmax2 = 1e-1, 200
cb1 = ax.scatter(pset_conc_ocean.lon, pset_conc_ocean.lat, c=pset_conc_ocean.plastic_amount, s=0.25, cmap=plt.cm.viridis, transform=ccrs.PlateCarree(), vmin=vmin, vmax=vmax, norm=matplotlib.colors.LogNorm())
cb2 = ax.scatter(pset_conc_beach.lon, pset_conc_beach.lat, c=pset_conc_beach.plastic_amount, s=0.25, cmap=plt.cm.magma, transform=ccrs.PlateCarree(), vmin=vmin2, vmax=vmax2, norm=matplotlib.colors.LogNorm())
ax.add_feature(cfeature.LAND, zorder=0, color='grey')
ax.set_global()
cbar_ax1 = ax.inset_axes(cb_axes_position)
cbar1 = plt.colorbar(cb1, cax=cbar_ax1, extend='both')
cbar1.set_label(r'Ocean plastic concentrations (g/m$^2$)', fontsize=10)
cbar_ax2 = ax.inset_axes([1.2, 0.0, 0.03, 0.95])
cbar2 = plt.colorbar(cb2, cax=cbar_ax2, extend='both')
cbar2.set_label(r'Beached plastic concentrations (g/m)', fontsize=10)
ax.text(0, 0.95, "d)", transform=ax.transAxes, size=16)
plt.show()
/nethome/denes001/.conda/envs/parcels-v3/lib/python3.10/site-packages/cartopy/mpl/geoaxes.py:1700: MatplotlibDeprecationWarning: Passing parameters norm and vmin/vmax simultaneously is deprecated since 3.3 and will become an error two minor releases later. Please pass vmin/vmax directly to the norm when creating it.
  result = super().scatter(*args, **kwargs)
../_images/examples_example_initialisation_maps_47_1.png