Trend in horizontal gradient metric
Contents
Trend in horizontal gradient metric¶
%load_ext autoreload
%autoreload 2
import numpy as np
import xarray as xr
import pandas as pd
from scipy.stats import linregress
import matplotlib.pyplot as plt
import util
import obs_surface
import figure_panels
da_srf = (
obs_surface.open_surface_co2_data('obs', 'CO2')
)
da_srf
<xarray.DataArray 'CO2' (time: 255, record: 32)> array([[365.087 , 365.13 , 365.0911, ..., 364.925 , 364.613 , nan], [365.0233, 365.1871, 365.0878, ..., 364.9575, 364.6776, nan], [364.9477, 365.042 , 364.9615, ..., 365.09 , 364.9108, nan], ..., [408.8532, 408.9975, 408.8587, ..., 408.5017, 408.8434, nan], [ nan, nan, 408.7141, ..., nan, 408.949 , nan], [ nan, nan, 408.3551, ..., nan, 408.8221, nan]]) Coordinates: * time (time) datetime64[ns] 1998-12-15 1999-01-15 ... 2020-02-14 year_frac (time) float64 1.999e+03 1.999e+03 ... 2.02e+03 2.02e+03 * record (record) object 'SPO_NOAA_insitu_CO2' ... 'CPT_SAWS_insitu_CO2' institution (record) object 'NOAA' 'NOAA' 'SIO_O2' ... 'NOAA' 'LSCE' 'SAWS' lat (record) float64 -89.98 -89.98 -89.98 ... -40.68 -37.8 -34.35 lon (record) float64 -24.8 -24.8 -24.8 -24.8 ... 144.7 77.54 18.49 stncode (record) object 'SPO' 'SPO' 'SPO' 'SPO' ... 'CGO' 'AMS' 'CPT' Attributes: long_name: CO$_2$ units: ppm
xarray.DataArray
'CO2'
- time: 255
- record: 32
- 365.1 365.1 365.1 365.0 nan 365.0 nan ... nan nan 408.2 nan 408.8 nan
array([[365.087 , 365.13 , 365.0911, ..., 364.925 , 364.613 , nan], [365.0233, 365.1871, 365.0878, ..., 364.9575, 364.6776, nan], [364.9477, 365.042 , 364.9615, ..., 365.09 , 364.9108, nan], ..., [408.8532, 408.9975, 408.8587, ..., 408.5017, 408.8434, nan], [ nan, nan, 408.7141, ..., nan, 408.949 , nan], [ nan, nan, 408.3551, ..., nan, 408.8221, nan]])
- time(time)datetime64[ns]1998-12-15 ... 2020-02-14
array(['1998-12-15T00:00:00.000000000', '1999-01-15T00:00:00.000000000', '1999-02-14T00:00:00.000000000', ..., '2019-12-15T00:00:00.000000000', '2020-01-15T00:00:00.000000000', '2020-02-14T00:00:00.000000000'], dtype='datetime64[ns]')
- year_frac(time)float641.999e+03 1.999e+03 ... 2.02e+03
array([1998.95616438, 1999.04109589, 1999.12328767, 1999.20273973, 1999.28767123, 1999.36986301, 1999.45479452, 1999.5369863 , 1999.62191781, 1999.70684932, 1999.7890411 , 1999.8739726 , 1999.95616438, 2000.04098361, 2000.12295082, 2000.20491803, 2000.28961749, 2000.3715847 , 2000.45628415, 2000.53825137, 2000.62295082, 2000.70765027, 2000.78961749, 2000.87431694, 2000.95628415, 2001.04109589, 2001.12328767, 2001.20273973, 2001.28767123, 2001.36986301, 2001.45479452, 2001.5369863 , 2001.62191781, 2001.70684932, 2001.7890411 , 2001.8739726 , 2001.95616438, 2002.04109589, 2002.12328767, 2002.20273973, 2002.28767123, 2002.36986301, 2002.45479452, 2002.5369863 , 2002.62191781, 2002.70684932, 2002.7890411 , 2002.8739726 , 2002.95616438, 2003.04109589, 2003.12328767, 2003.20273973, 2003.28767123, 2003.36986301, 2003.45479452, 2003.5369863 , 2003.62191781, 2003.70684932, 2003.7890411 , 2003.8739726 , 2003.95616438, 2004.04098361, 2004.12295082, 2004.20491803, 2004.28961749, 2004.3715847 , 2004.45628415, 2004.53825137, 2004.62295082, 2004.70765027, 2004.78961749, 2004.87431694, 2004.95628415, 2005.04109589, 2005.12328767, 2005.20273973, 2005.28767123, 2005.36986301, 2005.45479452, 2005.5369863 , ... 2013.62191781, 2013.70684932, 2013.7890411 , 2013.8739726 , 2013.95616438, 2014.04109589, 2014.12328767, 2014.20273973, 2014.28767123, 2014.36986301, 2014.45479452, 2014.5369863 , 2014.62191781, 2014.70684932, 2014.7890411 , 2014.8739726 , 2014.95616438, 2015.04109589, 2015.12328767, 2015.20273973, 2015.28767123, 2015.36986301, 2015.45479452, 2015.5369863 , 2015.62191781, 2015.70684932, 2015.7890411 , 2015.8739726 , 2015.95616438, 2016.04098361, 2016.12295082, 2016.20491803, 2016.28961749, 2016.3715847 , 2016.45628415, 2016.53825137, 2016.62295082, 2016.70765027, 2016.78961749, 2016.87431694, 2016.95628415, 2017.04109589, 2017.12328767, 2017.20273973, 2017.28767123, 2017.36986301, 2017.45479452, 2017.5369863 , 2017.62191781, 2017.70684932, 2017.7890411 , 2017.8739726 , 2017.95616438, 2018.04109589, 2018.12328767, 2018.20273973, 2018.28767123, 2018.36986301, 2018.45479452, 2018.5369863 , 2018.62191781, 2018.70684932, 2018.7890411 , 2018.8739726 , 2018.95616438, 2019.04109589, 2019.12328767, 2019.20273973, 2019.28767123, 2019.36986301, 2019.45479452, 2019.5369863 , 2019.62191781, 2019.70684932, 2019.7890411 , 2019.8739726 , 2019.95616438, 2020.04098361, 2020.12295082])
- record(record)object'SPO_NOAA_insitu_CO2' ... 'CPT_S...
array(['SPO_NOAA_insitu_CO2', 'SPO_NOAA_flask_CO2', 'SPO_SIO_O2_flask_CO2', 'SPO_SIO_CDK_flask_CO2', 'SPO_CSIRO_flask_CO2', 'HBA_NOAA_flask_CO2', 'SYO_NOAA_flask_CO2', 'SYO_TU_insitu_CO2', 'MAA_CSIRO_flask_CO2', 'CYA_CSIRO_flask_CO2', 'LMG65_NCAR_underway_CO2', 'LMG65_NOAA_underway_CO2', 'PSA_SIO_O2_flask_CO2', 'PSA_NOAA_flask_CO2', 'LMG63_NCAR_underway_CO2', 'LMG63_NOAA_underway_CO2', 'LMG61_NCAR_underway_CO2', 'LMG61_NOAA_underway_CO2', 'DRP_NOAA_flask_CO2', 'LMG59_NCAR_underway_CO2', 'LMG59_NOAA_underway_CO2', 'LMG57_NOAA_underway_CO2', 'LMG57_NCAR_underway_CO2', 'MQA_CSIRO_insitu_CO2', 'CRZ_NOAA_flask_CO2', 'BHD_NIWA_insitu_CO2', 'CGO_CSIRO_insitu_CO2', 'CGO_CSIRO_flask_CO2', 'CGO_SIO_O2_flask_CO2', 'CGO_NOAA_flask_CO2', 'AMS_LSCE_insitu_CO2', 'CPT_SAWS_insitu_CO2'], dtype=object)
- institution(record)object'NOAA' 'NOAA' ... 'LSCE' 'SAWS'
array(['NOAA', 'NOAA', 'SIO_O2', 'SIO_CDK', 'CSIRO', 'NOAA', 'NOAA', 'TU/NIPR', 'CSIRO', 'CSIRO', 'NCAR', 'NOAA', 'SIO_O2', 'NOAA', 'NCAR', 'NOAA', 'NCAR', 'NOAA', 'NOAA', 'NCAR', 'NOAA', 'NOAA', 'NCAR', 'CSIRO', 'NOAA', 'NIWA', 'CSIRO', 'CSIRO', 'SIO_O2', 'NOAA', 'LSCE', 'SAWS'], dtype=object)
- lat(record)float64-89.98 -89.98 ... -37.8 -34.35
array([-89.98 , -89.98 , -89.98 , -89.98 , -89.98 , -75.605 , -69.0125, -69.0125, -67.617 , -66.283 , -65. , -65. , -64.9 , -64.9 , -63. , -63. , -61. , -61. , -59. , -59. , -59. , -57. , -57. , -54.483 , -46.4337, -41.4083, -40.683 , -40.683 , -40.683 , -40.683 , -37.7983, -34.3523])
- lon(record)float64-24.8 -24.8 -24.8 ... 77.54 18.49
array([-24.8 , -24.8 , -24.8 , -24.8 , -24.8 , -26.21 , 39.59 , 39.59 , 62.867 , 110.517 , -68.58 , -63.55 , -64. , -64. , -68.58 , -61.7 , -68.58 , -62. , -64.69 , -68.58 , -63.37 , -64.23 , -68.58 , 158.967 , 51.8478, 174.871 , 144.69 , 144.69 , 144.69 , 144.69 , 77.5378, 18.4891])
- stncode(record)object'SPO' 'SPO' 'SPO' ... 'AMS' 'CPT'
array(['SPO', 'SPO', 'SPO', 'SPO', 'SPO', 'HBA', 'SYO', 'SYO', 'MAA', 'CYA', 'LMG65', 'LMG65', 'PSA', 'PSA', 'LMG63', 'LMG63', 'LMG61', 'LMG61', 'DRP', 'LMG59', 'LMG59', 'LMG57', 'LMG57', 'MQA', 'CRZ', 'BHD', 'CGO', 'CGO', 'CGO', 'CGO', 'AMS', 'CPT'], dtype=object)
- long_name :
- CO$_2$
- units :
- ppm
da_srf_a = da_srf - da_srf.sel(record=['SPO_NOAA_insitu_CO2',]).mean('record')
da_srf_a
<xarray.DataArray 'CO2' (time: 255, record: 32)> array([[ 0. , 0.043 , 0.0041, ..., -0.162 , -0.474 , nan], [ 0. , 0.1638, 0.0645, ..., -0.0658, -0.3457, nan], [ 0. , 0.0943, 0.0138, ..., 0.1423, -0.0369, nan], ..., [ 0. , 0.1443, 0.0055, ..., -0.3515, -0.0098, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]]) Coordinates: * time (time) datetime64[ns] 1998-12-15 1999-01-15 ... 2020-02-14 year_frac (time) float64 1.999e+03 1.999e+03 ... 2.02e+03 2.02e+03 * record (record) object 'SPO_NOAA_insitu_CO2' ... 'CPT_SAWS_insitu_CO2' institution (record) object 'NOAA' 'NOAA' 'SIO_O2' ... 'NOAA' 'LSCE' 'SAWS' lat (record) float64 -89.98 -89.98 -89.98 ... -40.68 -37.8 -34.35 lon (record) float64 -24.8 -24.8 -24.8 -24.8 ... 144.7 77.54 18.49 stncode (record) object 'SPO' 'SPO' 'SPO' 'SPO' ... 'CGO' 'AMS' 'CPT'
xarray.DataArray
'CO2'
- time: 255
- record: 32
- 0.0 0.043 0.0041 -0.0857 nan -0.1145 nan ... nan nan nan nan nan nan
array([[ 0. , 0.043 , 0.0041, ..., -0.162 , -0.474 , nan], [ 0. , 0.1638, 0.0645, ..., -0.0658, -0.3457, nan], [ 0. , 0.0943, 0.0138, ..., 0.1423, -0.0369, nan], ..., [ 0. , 0.1443, 0.0055, ..., -0.3515, -0.0098, nan], [ nan, nan, nan, ..., nan, nan, nan], [ nan, nan, nan, ..., nan, nan, nan]])
- time(time)datetime64[ns]1998-12-15 ... 2020-02-14
array(['1998-12-15T00:00:00.000000000', '1999-01-15T00:00:00.000000000', '1999-02-14T00:00:00.000000000', ..., '2019-12-15T00:00:00.000000000', '2020-01-15T00:00:00.000000000', '2020-02-14T00:00:00.000000000'], dtype='datetime64[ns]')
- year_frac(time)float641.999e+03 1.999e+03 ... 2.02e+03
array([1998.95616438, 1999.04109589, 1999.12328767, 1999.20273973, 1999.28767123, 1999.36986301, 1999.45479452, 1999.5369863 , 1999.62191781, 1999.70684932, 1999.7890411 , 1999.8739726 , 1999.95616438, 2000.04098361, 2000.12295082, 2000.20491803, 2000.28961749, 2000.3715847 , 2000.45628415, 2000.53825137, 2000.62295082, 2000.70765027, 2000.78961749, 2000.87431694, 2000.95628415, 2001.04109589, 2001.12328767, 2001.20273973, 2001.28767123, 2001.36986301, 2001.45479452, 2001.5369863 , 2001.62191781, 2001.70684932, 2001.7890411 , 2001.8739726 , 2001.95616438, 2002.04109589, 2002.12328767, 2002.20273973, 2002.28767123, 2002.36986301, 2002.45479452, 2002.5369863 , 2002.62191781, 2002.70684932, 2002.7890411 , 2002.8739726 , 2002.95616438, 2003.04109589, 2003.12328767, 2003.20273973, 2003.28767123, 2003.36986301, 2003.45479452, 2003.5369863 , 2003.62191781, 2003.70684932, 2003.7890411 , 2003.8739726 , 2003.95616438, 2004.04098361, 2004.12295082, 2004.20491803, 2004.28961749, 2004.3715847 , 2004.45628415, 2004.53825137, 2004.62295082, 2004.70765027, 2004.78961749, 2004.87431694, 2004.95628415, 2005.04109589, 2005.12328767, 2005.20273973, 2005.28767123, 2005.36986301, 2005.45479452, 2005.5369863 , ... 2013.62191781, 2013.70684932, 2013.7890411 , 2013.8739726 , 2013.95616438, 2014.04109589, 2014.12328767, 2014.20273973, 2014.28767123, 2014.36986301, 2014.45479452, 2014.5369863 , 2014.62191781, 2014.70684932, 2014.7890411 , 2014.8739726 , 2014.95616438, 2015.04109589, 2015.12328767, 2015.20273973, 2015.28767123, 2015.36986301, 2015.45479452, 2015.5369863 , 2015.62191781, 2015.70684932, 2015.7890411 , 2015.8739726 , 2015.95616438, 2016.04098361, 2016.12295082, 2016.20491803, 2016.28961749, 2016.3715847 , 2016.45628415, 2016.53825137, 2016.62295082, 2016.70765027, 2016.78961749, 2016.87431694, 2016.95628415, 2017.04109589, 2017.12328767, 2017.20273973, 2017.28767123, 2017.36986301, 2017.45479452, 2017.5369863 , 2017.62191781, 2017.70684932, 2017.7890411 , 2017.8739726 , 2017.95616438, 2018.04109589, 2018.12328767, 2018.20273973, 2018.28767123, 2018.36986301, 2018.45479452, 2018.5369863 , 2018.62191781, 2018.70684932, 2018.7890411 , 2018.8739726 , 2018.95616438, 2019.04109589, 2019.12328767, 2019.20273973, 2019.28767123, 2019.36986301, 2019.45479452, 2019.5369863 , 2019.62191781, 2019.70684932, 2019.7890411 , 2019.8739726 , 2019.95616438, 2020.04098361, 2020.12295082])
- record(record)object'SPO_NOAA_insitu_CO2' ... 'CPT_S...
array(['SPO_NOAA_insitu_CO2', 'SPO_NOAA_flask_CO2', 'SPO_SIO_O2_flask_CO2', 'SPO_SIO_CDK_flask_CO2', 'SPO_CSIRO_flask_CO2', 'HBA_NOAA_flask_CO2', 'SYO_NOAA_flask_CO2', 'SYO_TU_insitu_CO2', 'MAA_CSIRO_flask_CO2', 'CYA_CSIRO_flask_CO2', 'LMG65_NCAR_underway_CO2', 'LMG65_NOAA_underway_CO2', 'PSA_SIO_O2_flask_CO2', 'PSA_NOAA_flask_CO2', 'LMG63_NCAR_underway_CO2', 'LMG63_NOAA_underway_CO2', 'LMG61_NCAR_underway_CO2', 'LMG61_NOAA_underway_CO2', 'DRP_NOAA_flask_CO2', 'LMG59_NCAR_underway_CO2', 'LMG59_NOAA_underway_CO2', 'LMG57_NOAA_underway_CO2', 'LMG57_NCAR_underway_CO2', 'MQA_CSIRO_insitu_CO2', 'CRZ_NOAA_flask_CO2', 'BHD_NIWA_insitu_CO2', 'CGO_CSIRO_insitu_CO2', 'CGO_CSIRO_flask_CO2', 'CGO_SIO_O2_flask_CO2', 'CGO_NOAA_flask_CO2', 'AMS_LSCE_insitu_CO2', 'CPT_SAWS_insitu_CO2'], dtype=object)
- institution(record)object'NOAA' 'NOAA' ... 'LSCE' 'SAWS'
array(['NOAA', 'NOAA', 'SIO_O2', 'SIO_CDK', 'CSIRO', 'NOAA', 'NOAA', 'TU/NIPR', 'CSIRO', 'CSIRO', 'NCAR', 'NOAA', 'SIO_O2', 'NOAA', 'NCAR', 'NOAA', 'NCAR', 'NOAA', 'NOAA', 'NCAR', 'NOAA', 'NOAA', 'NCAR', 'CSIRO', 'NOAA', 'NIWA', 'CSIRO', 'CSIRO', 'SIO_O2', 'NOAA', 'LSCE', 'SAWS'], dtype=object)
- lat(record)float64-89.98 -89.98 ... -37.8 -34.35
array([-89.98 , -89.98 , -89.98 , -89.98 , -89.98 , -75.605 , -69.0125, -69.0125, -67.617 , -66.283 , -65. , -65. , -64.9 , -64.9 , -63. , -63. , -61. , -61. , -59. , -59. , -59. , -57. , -57. , -54.483 , -46.4337, -41.4083, -40.683 , -40.683 , -40.683 , -40.683 , -37.7983, -34.3523])
- lon(record)float64-24.8 -24.8 -24.8 ... 77.54 18.49
array([-24.8 , -24.8 , -24.8 , -24.8 , -24.8 , -26.21 , 39.59 , 39.59 , 62.867 , 110.517 , -68.58 , -63.55 , -64. , -64. , -68.58 , -61.7 , -68.58 , -62. , -64.69 , -68.58 , -63.37 , -64.23 , -68.58 , 158.967 , 51.8478, 174.871 , 144.69 , 144.69 , 144.69 , 144.69 , 77.5378, 18.4891])
- stncode(record)object'SPO' 'SPO' 'SPO' ... 'AMS' 'CPT'
array(['SPO', 'SPO', 'SPO', 'SPO', 'SPO', 'HBA', 'SYO', 'SYO', 'MAA', 'CYA', 'LMG65', 'LMG65', 'PSA', 'PSA', 'LMG63', 'LMG63', 'LMG61', 'LMG61', 'DRP', 'LMG59', 'LMG59', 'LMG57', 'LMG57', 'MQA', 'CRZ', 'BHD', 'CGO', 'CGO', 'CGO', 'CGO', 'AMS', 'CPT'], dtype=object)
DCO2y_djf = obs_surface.compute_DCO2y(da_srf, 'DJF')
DCO2y_jja = obs_surface.compute_DCO2y(da_srf, 'JJA')
DCO2y_djf
<xarray.Dataset> Dimensions: (time: 22) Coordinates: * time (time) float64 1.999e+03 2e+03 2.001e+03 ... 2.019e+03 2.02e+03 record <U19 'SPO_NOAA_insitu_CO2' institution object 'NOAA' lat float64 -89.98 lon float64 -24.8 Data variables: CO2 (time) float64 -0.09439 -0.179 -0.428 ... -0.3274 -0.2219 nan
xarray.Dataset
- time: 22
- time(time)float641.999e+03 2e+03 ... 2.02e+03
array([1999.04, 2000.04, 2001.04, 2002.04, 2003.04, 2004.04, 2005.04, 2006.04, 2007.04, 2008.04, 2009.04, 2010.04, 2011.04, 2012.04, 2013.04, 2014.04, 2015.04, 2016.04, 2017.04, 2018.04, 2019.04, 2020.04])
- record()<U19'SPO_NOAA_insitu_CO2'
array('SPO_NOAA_insitu_CO2', dtype='<U19')
- institution()object'NOAA'
array('NOAA', dtype=object)
- lat()float64-89.98
array(-89.98)
- lon()float64-24.8
array(-24.8)
- CO2(time)float64-0.09439 -0.179 ... -0.2219 nan
array([-0.09439028, -0.17902333, -0.42804741, -0.02059 , -0.04055333, -0.22895556, -0.04205833, -0.08304048, -0.19501458, -0.10466905, -0.08068542, -0.24305833, -0.23285714, -0.19171042, -0.26173958, -0.20247917, -0.27191667, -0.2302375 , -0.24180238, -0.3273881 , -0.22194524, nan])
ds_djf = util.ann_mean(da_srf_a.to_dataset(), season='DJF', time_bnds_varname=None)
ds_jja = util.ann_mean(da_srf_a.to_dataset(), season='JJA', time_bnds_varname=None)
ds_djf
<xarray.Dataset> Dimensions: (record: 32, time: 22) Coordinates: * record (record) object 'SPO_NOAA_insitu_CO2' ... 'CPT_SAWS_insitu_CO2' institution (record) object 'NOAA' 'NOAA' 'SIO_O2' ... 'NOAA' 'LSCE' 'SAWS' lat (record) float64 -89.98 -89.98 -89.98 ... -40.68 -37.8 -34.35 lon (record) float64 -24.8 -24.8 -24.8 -24.8 ... 144.7 77.54 18.49 stncode (record) object 'SPO' 'SPO' 'SPO' 'SPO' ... 'CGO' 'AMS' 'CPT' * time (time) int64 1999 2000 2001 2002 2003 ... 2017 2018 2019 2020 Data variables: CO2 (time, record) float64 0.0 0.1004 0.02747 ... nan nan nan
xarray.Dataset
- record: 32
- time: 22
- record(record)object'SPO_NOAA_insitu_CO2' ... 'CPT_S...
array(['SPO_NOAA_insitu_CO2', 'SPO_NOAA_flask_CO2', 'SPO_SIO_O2_flask_CO2', 'SPO_SIO_CDK_flask_CO2', 'SPO_CSIRO_flask_CO2', 'HBA_NOAA_flask_CO2', 'SYO_NOAA_flask_CO2', 'SYO_TU_insitu_CO2', 'MAA_CSIRO_flask_CO2', 'CYA_CSIRO_flask_CO2', 'LMG65_NCAR_underway_CO2', 'LMG65_NOAA_underway_CO2', 'PSA_SIO_O2_flask_CO2', 'PSA_NOAA_flask_CO2', 'LMG63_NCAR_underway_CO2', 'LMG63_NOAA_underway_CO2', 'LMG61_NCAR_underway_CO2', 'LMG61_NOAA_underway_CO2', 'DRP_NOAA_flask_CO2', 'LMG59_NCAR_underway_CO2', 'LMG59_NOAA_underway_CO2', 'LMG57_NOAA_underway_CO2', 'LMG57_NCAR_underway_CO2', 'MQA_CSIRO_insitu_CO2', 'CRZ_NOAA_flask_CO2', 'BHD_NIWA_insitu_CO2', 'CGO_CSIRO_insitu_CO2', 'CGO_CSIRO_flask_CO2', 'CGO_SIO_O2_flask_CO2', 'CGO_NOAA_flask_CO2', 'AMS_LSCE_insitu_CO2', 'CPT_SAWS_insitu_CO2'], dtype=object)
- institution(record)object'NOAA' 'NOAA' ... 'LSCE' 'SAWS'
array(['NOAA', 'NOAA', 'SIO_O2', 'SIO_CDK', 'CSIRO', 'NOAA', 'NOAA', 'TU/NIPR', 'CSIRO', 'CSIRO', 'NCAR', 'NOAA', 'SIO_O2', 'NOAA', 'NCAR', 'NOAA', 'NCAR', 'NOAA', 'NOAA', 'NCAR', 'NOAA', 'NOAA', 'NCAR', 'CSIRO', 'NOAA', 'NIWA', 'CSIRO', 'CSIRO', 'SIO_O2', 'NOAA', 'LSCE', 'SAWS'], dtype=object)
- lat(record)float64-89.98 -89.98 ... -37.8 -34.35
array([-89.98 , -89.98 , -89.98 , -89.98 , -89.98 , -75.605 , -69.0125, -69.0125, -67.617 , -66.283 , -65. , -65. , -64.9 , -64.9 , -63. , -63. , -61. , -61. , -59. , -59. , -59. , -57. , -57. , -54.483 , -46.4337, -41.4083, -40.683 , -40.683 , -40.683 , -40.683 , -37.7983, -34.3523])
- lon(record)float64-24.8 -24.8 -24.8 ... 77.54 18.49
array([-24.8 , -24.8 , -24.8 , -24.8 , -24.8 , -26.21 , 39.59 , 39.59 , 62.867 , 110.517 , -68.58 , -63.55 , -64. , -64. , -68.58 , -61.7 , -68.58 , -62. , -64.69 , -68.58 , -63.37 , -64.23 , -68.58 , 158.967 , 51.8478, 174.871 , 144.69 , 144.69 , 144.69 , 144.69 , 77.5378, 18.4891])
- stncode(record)object'SPO' 'SPO' 'SPO' ... 'AMS' 'CPT'
array(['SPO', 'SPO', 'SPO', 'SPO', 'SPO', 'HBA', 'SYO', 'SYO', 'MAA', 'CYA', 'LMG65', 'LMG65', 'PSA', 'PSA', 'LMG63', 'LMG63', 'LMG61', 'LMG61', 'DRP', 'LMG59', 'LMG59', 'LMG57', 'LMG57', 'MQA', 'CRZ', 'BHD', 'CGO', 'CGO', 'CGO', 'CGO', 'AMS', 'CPT'], dtype=object)
- time(time)int641999 2000 2001 ... 2018 2019 2020
array([1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020])
- CO2(time, record)float640.0 0.1004 0.02747 ... nan nan nan
array([[ 0.00000000e+00, 1.00366667e-01, 2.74666667e-02, -1.04400000e-01, 1.74000000e-01, -7.35000000e-02, 1.40750000e-01, 4.09333333e-02, -2.74000000e-02, -6.95000000e-02, nan, nan, -2.02433333e-01, -2.21133333e-01, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, -2.93900000e-01, -3.62700000e-01, nan, -1.02000000e-02, -9.60666667e-02, -2.85000000e-02, -2.85533333e-01, nan], [ 0.00000000e+00, -1.08000000e-02, 7.12666667e-02, 8.12000000e-02, 1.37866667e-01, -4.93633333e-01, 7.86666667e-03, -1.24333333e-02, -1.21900000e-01, 2.31000000e-02, nan, nan, -2.61700000e-01, -3.42300000e-01, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, -6.57800000e-01, nan, ... -1.53533333e-01, -1.22700000e-01, 2.01466667e-01, -9.85000000e-02, nan, -2.86866667e-01, -3.65266667e-01, -5.57966667e-01, nan, -2.69066667e-01, nan, -2.18766667e-01, -3.65200000e-01, nan, -2.54300000e-01, -1.51566667e-01, nan, nan, -6.53200000e-01, -2.90600000e-01, -1.41233333e-01, -2.28800000e-01, -5.69700000e-01, -2.79933333e-01, 2.49833333e-01, nan], [ nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan, nan]])
dset_djf = ds_djf.groupby('stncode').mean('record').sel(stncode=obs_surface.southern_ocean_stn_list)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
marker_spec = figure_panels.marker_spec_surface_stations()
x = dset_djf.time + 0.04
for i, stn_code in enumerate(dset_djf.stncode.values):
y = dset_djf.CO2.sel(stncode=stn_code)
ax.plot(x, y, linestyle='-', **marker_spec[stn_code])
X = DCO2y_djf.time.values
Y = DCO2y_djf.CO2.values
ax.plot(X, Y, 'ko-')
[<matplotlib.lines.Line2D at 0x2aee7027f310>]

dset_jja = ds_jja.groupby('stncode').mean('record').sel(stncode=obs_surface.southern_ocean_stn_list)
fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)
marker_spec = figure_panels.marker_spec_surface_stations()
x = dset_jja.time + 0.04
for i, stn_code in enumerate(dset_jja.stncode.values):
y = dset_jja.CO2.sel(stncode=stn_code)
ax.plot(x, y, linestyle='-', **marker_spec[stn_code])
X = DCO2y_jja.time.values
Y = DCO2y_jja.CO2.values
ax.plot(X, Y, 'ko-')
[<matplotlib.lines.Line2D at 0x2aee709b6450>]

periods = [
(1999, 2006),
(2005, 2020),
(1999, 2020),
]
lines = []
for i, period in enumerate(periods):
dsp = DCO2y_djf.sel(time=slice(period[0], period[1]))
d = dict(
year_range=f"{int(dsp.time.values[0])}-{int(dsp.time.values[-1])}",
delta=dsp.CO2.values[-1] - dsp.CO2.values[0],
)
d['slope'], d['intercept'], d['r_value'], d['p_value'], d['stderr'] = linregress(dsp.time, dsp.CO2)
lines.append(d)
df_fit_djf = pd.DataFrame(lines).set_index("year_range")
df_fit_djf
delta | slope | intercept | r_value | p_value | stderr | |
---|---|---|---|---|---|---|
year_range | ||||||
1999-2005 | 0.052332 | 0.015879 | -31.939016 | 0.235028 | 0.611932 | 0.029369 |
2005-2019 | -0.179887 | -0.014225 | 28.425354 | -0.780448 | 0.000597 | 0.003161 |
1999-2019 | -0.127555 | -0.006835 | 13.545181 | -0.412210 | 0.063331 | 0.003466 |
lines = []
for i, period in enumerate(periods):
dsp = DCO2y_jja.sel(time=slice(period[0], period[1]))
d = dict(
year_range=f"{int(dsp.time.values[0])}-{int(dsp.time.values[-1])}",
delta=dsp.CO2.values[-1] - dsp.CO2.values[0],
)
d['slope'], d['intercept'], d['r_value'], d['p_value'], d['stderr'] = (
linregress(dsp.time, dsp.CO2)
)
lines.append(d)
df_fit_jja = pd.DataFrame(lines).set_index("year_range")
df_fit_jja
delta | slope | intercept | r_value | p_value | stderr | |
---|---|---|---|---|---|---|
year_range | ||||||
1999-2005 | 0.198383 | 0.052205 | -104.442431 | 0.764587 | 0.045284 | 0.019680 |
2005-2019 | -0.262310 | -0.017257 | 34.823807 | -0.831013 | 0.000124 | 0.003204 |
1999-2019 | -0.063927 | -0.003656 | 7.432276 | -0.222359 | 0.332654 | 0.003677 |
Mean changes over 2005-2019¶
(df_fit_djf[["delta", "slope", "stderr"]].loc["2005-2019"] + df_fit_jja[["delta", "slope", "stderr"]].loc["2005-2019"])/2
delta -0.221098
slope -0.015741
stderr 0.003182
Name: 2005-2019, dtype: float64