cf-plot 3.2.22__tar.gz → 3.3.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cf-plot-3.2.22/cf_plot.egg-info → cf-plot-3.3.0}/PKG-INFO +1 -1
- {cf-plot-3.2.22 → cf-plot-3.3.0/cf_plot.egg-info}/PKG-INFO +1 -1
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/__init__.py +2 -2
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/cfplot.py +72 -86
- {cf-plot-3.2.22 → cf-plot-3.3.0}/setup.py +1 -1
- {cf-plot-3.2.22 → cf-plot-3.3.0}/LICENSE.txt +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/MANIFEST.in +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/README.md +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/README.txt +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cf_plot.egg-info/SOURCES.txt +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cf_plot.egg-info/dependency_links.txt +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cf_plot.egg-info/requires.txt +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cf_plot.egg-info/top_level.txt +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/3gauss.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/3saw.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BkBlAqGrYeOrReViWh200.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlAqGrYeOrRe.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlAqGrYeOrReVi200.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlGrYeOrReVi200.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlRe.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlWhRe.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlueDarkOrange18.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlueDarkRed18.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlueGreen14.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlueRed.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlueRedGray.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlueWhiteOrangeRed.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BlueYellowRed.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BrBG.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/BrownBlue12.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/Cat12.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/GHRSST_anomaly.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/GrayWhiteGray.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/GreenMagenta16.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/GreenYellow.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/OceanLakeLandSnow.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/StepSeq25.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/ViBlGrWhYeOrRe.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/WhBlGrYeRe.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/WhBlReWh.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/WhViBlGrYeOrRe.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/WhViBlGrYeOrReWh.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/WhiteBlue.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/WhiteBlueGreenYellowRed.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/WhiteGreen.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/WhiteYellowOrangeRed.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/__init__.py +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/amwg.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/amwg256.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/amwg_blueyellowred.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/arctic.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/cmp_b2r.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/cmp_flux.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/cmp_haxby.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/colombia.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/colournames.txt +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/cosam.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/cosam12.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/default.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/detail.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/extrema.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/gray.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/gui_default.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/helix.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/helix1.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/hlu_default.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/hotcold_18lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/hotcolr_19lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/hotres.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl0.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl1.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl10.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl11.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl12.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl13.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl14.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl15.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl16.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl17.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl18.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl19.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl2.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl20.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl21.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl22.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl23.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl24.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl25.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl26.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl27.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl28.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl29.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl3.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl30.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl31.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl32.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl33.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl34.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl35.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl36.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl37.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl38.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl39.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl4.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl5.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl6.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl7.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl8.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/idl9.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/inferno.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/magma.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/matlab_hot.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/matlab_hsv.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/matlab_jet.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/matlab_lines.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/mch_default.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/ncl_default.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/ncview_default.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/nrl_sirkes.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/nrl_sirkes_nowhite.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/nrwc.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/os250kmetres.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/parula.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/perc2_9lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/percent_11lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/plasma.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/posneg_1.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/posneg_2.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/prcp_1.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/prcp_2.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/prcp_3.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/precip2_15lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/precip2_17lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/precip3_16lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/precip4_11lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/precip4_diff_19lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/precip_11lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/precip_diff_12lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/precip_diff_1lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/radar.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/radar_1.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/rainbow.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/rainbow_gray.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/rainbow_white.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/rainbow_white_gray.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/rh_19lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale1.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale10.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale11.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale12.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale13.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale14.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale15.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale16.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale17.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale18.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale19.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale2.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale20.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale21.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale22.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale23.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale24.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale25.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale26.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale27.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale28.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale29.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale3.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale30.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale31.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale32.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale33.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale34.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale35.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale36.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale37.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale38.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale39.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale4.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale40.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale41.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale42.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale43.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale44.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale5.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale6.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale7.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale8.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/scale9.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/seaice_1.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/seaice_2.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/so4_21.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/so4_23.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/spread_15lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/sunshine_9lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/sunshine_diff_12lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/t2m_29lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/tbrAvg1.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/tbrStd1.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/tbrVar1.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/tbr_240_300.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/tbr_stdev_0_30.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/tbr_var_0_500.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/temp_19lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/temp_diff_18lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/temp_diff_1lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/testcmap.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/thelix.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/topo_15lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/vcs.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/viridis.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/wgne15.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/wh_bl_gr_ye_re.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/wiki_1_0_2.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/wiki_1_0_3.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/wiki_2_0.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/wiki_2_0_reduced.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/wind_17lev.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/cfplot/colourmaps/wxpEnIR.rgb +0 -0
- {cf-plot-3.2.22 → cf-plot-3.3.0}/setup.cfg +0 -0
|
@@ -10,8 +10,8 @@ See the cf-plot home page http://ajheaps.github.io/cf-plot for a gallery of plot
|
|
|
10
10
|
'''
|
|
11
11
|
|
|
12
12
|
__author__ = 'Andy Heaps - andy.heaps@ncas.ac.uk'
|
|
13
|
-
__date__ = '
|
|
14
|
-
__version__ = '3.
|
|
13
|
+
__date__ = '15th Jan 2024'
|
|
14
|
+
__version__ = '3.3.0'
|
|
15
15
|
|
|
16
16
|
from .cfplot import *
|
|
17
17
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"""
|
|
2
2
|
Climate contour/vector plots using cf-python, matplotlib and cartopy.
|
|
3
|
-
Andy Heaps NCAS-CMS
|
|
3
|
+
Andy Heaps NCAS-CMS November 2023
|
|
4
4
|
"""
|
|
5
5
|
import numpy as np
|
|
6
6
|
import subprocess
|
|
@@ -347,7 +347,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
347
347
|
None
|
|
348
348
|
|
|
349
349
|
"""
|
|
350
|
-
|
|
350
|
+
|
|
351
351
|
# Turn off divide warning in contour routine which is a numpy issue
|
|
352
352
|
old_settings = np.seterr(all='ignore')
|
|
353
353
|
np.seterr(divide='ignore')
|
|
@@ -359,32 +359,24 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
359
359
|
# Set blockfill to True if blockfill_fast is not None
|
|
360
360
|
if blockfill_fast is not None:
|
|
361
361
|
blockfill=True
|
|
362
|
-
|
|
363
|
-
# Extract data for faces if a UGRID blockplot
|
|
364
|
-
blockfill_irregular = False
|
|
365
|
-
if face_lons and face_lats and face_connectivity:
|
|
366
|
-
blockfill_irregular = True
|
|
367
|
-
fill = False
|
|
368
|
-
irregular = True
|
|
369
|
-
if isinstance(f, cf.Field):
|
|
370
|
-
field = f.array
|
|
371
|
-
else:
|
|
372
|
-
field = f
|
|
373
|
-
field_orig = deepcopy(field)
|
|
374
|
-
if isinstance(face_lons, cf.Field):
|
|
375
|
-
face_lons_array = face_lons.array
|
|
376
|
-
else:
|
|
377
|
-
face_lons_array = face_lons
|
|
378
362
|
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
363
|
+
|
|
364
|
+
# Check if the field is a CF ugrid field with cell faces
|
|
365
|
+
blockfill_ugrid = False
|
|
366
|
+
if isinstance(f, cf.Field) and blockfill:
|
|
367
|
+
if f.domain_topologies():
|
|
368
|
+
if f.domain_topology('cell:face', default=None) is not None:
|
|
369
|
+
face_lons_array = f.aux('X').bounds.array
|
|
370
|
+
face_lats_array = f.aux('Y').bounds.array
|
|
371
|
+
face_connectivity_array = f.domain_topology('cell:face').array
|
|
372
|
+
blockfill_ugrid = True
|
|
373
|
+
fill = False
|
|
374
|
+
lines = False
|
|
375
|
+
irregular = True
|
|
376
|
+
else:
|
|
377
|
+
errstr = '\n\nError - field does not contain the UGRID face information to plot a blockfill plot\n\n\n'
|
|
378
|
+
raise TypeError(errstr)
|
|
383
379
|
|
|
384
|
-
if isinstance(face_connectivity, cf.Field):
|
|
385
|
-
face_connectivity_array = face_connectivity.array
|
|
386
|
-
else:
|
|
387
|
-
face_connectivity_array = face_connectivity
|
|
388
380
|
|
|
389
381
|
# Set blockfill_2d if blockfill and x and y are 2D
|
|
390
382
|
blockfill_2d = False
|
|
@@ -392,8 +384,6 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
392
384
|
if np.ndim(x) == 2 and np.ndim(y) == 2:
|
|
393
385
|
blockfill_2d = True
|
|
394
386
|
|
|
395
|
-
|
|
396
|
-
|
|
397
387
|
# Call gpos(1) if not already called
|
|
398
388
|
if plotvars.rows > 1 or plotvars.columns > 1:
|
|
399
389
|
if plotvars.gpos_called is False:
|
|
@@ -414,24 +404,25 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
414
404
|
if verbose:
|
|
415
405
|
print('con - calling cf_data_assign')
|
|
416
406
|
|
|
407
|
+
|
|
417
408
|
# Subset the data if a user map is set
|
|
418
409
|
# This is use to speed up the plotting
|
|
410
|
+
# myfield is used for calculating the contour levels
|
|
411
|
+
# myfield_extended is used to make the contour plot
|
|
419
412
|
if plotvars.user_mapset:
|
|
420
413
|
if plotvars.proj == 'npstere':
|
|
421
414
|
f = f.subspace(Y = cf.wi(plotvars.boundinglat, 90.0))
|
|
422
415
|
|
|
423
416
|
if plotvars.proj == 'spstere':
|
|
424
417
|
f = f.subspace(Y = cf.wi(-90.0, plotvars.boundinglat))
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
plotvars.latmin != -90 or plotvars.latmax != 90:
|
|
428
|
-
f = f.subspace(X = cf.wi(plotvars.lonmin, plotvars.lonmax), Y = cf.wi(plotvars.latmin, plotvars.latmax))
|
|
418
|
+
|
|
419
|
+
|
|
429
420
|
|
|
430
|
-
|
|
421
|
+
# Extract the data
|
|
431
422
|
field, x, y, ptype, colorbar_title, xlabel, ylabel, xpole, ypole =\
|
|
432
423
|
cf_data_assign(f, colorbar_title, verbose=verbose)
|
|
433
424
|
|
|
434
|
-
|
|
425
|
+
|
|
435
426
|
if user_xlabel is not None:
|
|
436
427
|
xlabel = user_xlabel
|
|
437
428
|
if user_ylabel is not None:
|
|
@@ -487,6 +478,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
487
478
|
# Set contour line styles
|
|
488
479
|
matplotlib.rcParams['contour.negative_linestyle'] = negative_linestyle
|
|
489
480
|
|
|
481
|
+
|
|
490
482
|
# Set contour lines off on block plots
|
|
491
483
|
if blockfill:
|
|
492
484
|
fill = False
|
|
@@ -513,7 +505,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
513
505
|
raise TypeError(errstr)
|
|
514
506
|
|
|
515
507
|
# Turn off colorbar if fill is turned off
|
|
516
|
-
if not fill and not blockfill and not
|
|
508
|
+
if not fill and not blockfill and not blockfill_ugrid:
|
|
517
509
|
colorbar = False
|
|
518
510
|
|
|
519
511
|
# Revert to default colour scale if cscale_flag flag is set
|
|
@@ -550,24 +542,14 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
550
542
|
spacing = level_spacing
|
|
551
543
|
|
|
552
544
|
if plotvars.levels is None:
|
|
545
|
+
|
|
546
|
+
if isinstance(f, cf.Field):
|
|
547
|
+
field, x, y, ptype, colorbar_title, xlabel, ylabel, xpole, ypole =\
|
|
548
|
+
cf_data_assign(f, colorbar_title, verbose=verbose)
|
|
553
549
|
clevs, mult, fmult = calculate_levels(field=field,
|
|
554
550
|
level_spacing=spacing,
|
|
555
551
|
verbose=verbose)
|
|
556
552
|
|
|
557
|
-
# If a cyclindrical map has been set then try to subspace the data and make a new set of levels
|
|
558
|
-
myfield = None
|
|
559
|
-
if ptype == 1 and plotvars.user_mapset and isinstance(f, cf.Field):
|
|
560
|
-
if plotvars.proj == 'cyl':
|
|
561
|
-
try:
|
|
562
|
-
myfield = f.subspace(X=cf.wi(plotvars.lonmin, plotvars.lonmax),
|
|
563
|
-
Y=cf.wi(plotvars.latmin, plotvars.latmax))
|
|
564
|
-
except:
|
|
565
|
-
pass
|
|
566
|
-
|
|
567
|
-
if myfield is not None:
|
|
568
|
-
clevs, mult, fmult = calculate_levels(field=myfield, level_spacing=spacing,\
|
|
569
|
-
verbose=verbose)
|
|
570
|
-
|
|
571
553
|
else:
|
|
572
554
|
clevs = plotvars.levels
|
|
573
555
|
mult = 0
|
|
@@ -752,7 +734,6 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
752
734
|
else:
|
|
753
735
|
cscale(plotvars.cs_user, ncols=nlevs)
|
|
754
736
|
|
|
755
|
-
|
|
756
737
|
|
|
757
738
|
##################
|
|
758
739
|
# Map contour plot
|
|
@@ -791,9 +772,8 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
791
772
|
else:
|
|
792
773
|
mapset(lonmin=mylonmin, lonmax=mylonmax, latmin=mylatmin, latmax=mylatmax,
|
|
793
774
|
user_mapset=0, resolution=resolution_orig)
|
|
794
|
-
set_map()
|
|
795
|
-
|
|
796
775
|
|
|
776
|
+
set_map()
|
|
797
777
|
|
|
798
778
|
|
|
799
779
|
mymap = plotvars.mymap
|
|
@@ -803,8 +783,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
803
783
|
|
|
804
784
|
|
|
805
785
|
|
|
806
|
-
|
|
807
|
-
if not blockfill_irregular and not blockfill_2d:
|
|
786
|
+
if not blockfill_ugrid and not blockfill_2d:
|
|
808
787
|
if not irregular:
|
|
809
788
|
if lonrange > 350 and np.ndim(y) == 1:
|
|
810
789
|
# Add cyclic information if missing.
|
|
@@ -877,7 +856,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
877
856
|
# in polar plots. Subsample the latitudes to remove this problem
|
|
878
857
|
|
|
879
858
|
if plotvars.proj == 'npstere' and np.ndim(y) == 1:
|
|
880
|
-
if not
|
|
859
|
+
if not blockfill_ugrid and not blockfill_2d:
|
|
881
860
|
if irregular:
|
|
882
861
|
pts = np.where(lats_irregular > plotvars.boundinglat - 5)
|
|
883
862
|
pts = np.array(pts).flatten()
|
|
@@ -891,7 +870,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
891
870
|
field = field[myypos:, :]
|
|
892
871
|
|
|
893
872
|
if plotvars.proj == 'spstere' and np.ndim(y) == 1:
|
|
894
|
-
if not
|
|
873
|
+
if not blockfill_ugrid and not blockfill_2d:
|
|
895
874
|
if irregular:
|
|
896
875
|
pts = np.where(lats_irregular_real < plotvars.boundinglat + 5)
|
|
897
876
|
lons_irregular_real = lons_irregular_real[pts]
|
|
@@ -984,7 +963,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
984
963
|
zorder=zorder)
|
|
985
964
|
|
|
986
965
|
# Block fill
|
|
987
|
-
if blockfill:
|
|
966
|
+
if blockfill and not blockfill_ugrid:
|
|
988
967
|
if verbose:
|
|
989
968
|
print('con - adding blockfill')
|
|
990
969
|
|
|
@@ -1029,10 +1008,10 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
1029
1008
|
lonlat=True, bound=0, alpha=alpha, fast=blockfill_fast, zorder=zorder)
|
|
1030
1009
|
|
|
1031
1010
|
# Block fill for irregular
|
|
1032
|
-
if
|
|
1011
|
+
if blockfill_ugrid and not blockfill_2d:
|
|
1033
1012
|
if verbose:
|
|
1034
1013
|
print('con - adding blockfill for irregular')
|
|
1035
|
-
|
|
1014
|
+
bfill_ugrid(f=field_orig * fmult, face_lons=face_lons_array,
|
|
1036
1015
|
face_lats=face_lats_array,
|
|
1037
1016
|
face_connectivity=face_connectivity_array, clevs=clevs,
|
|
1038
1017
|
alpha=alpha, zorder=zorder)
|
|
@@ -1073,7 +1052,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
1073
1052
|
|
|
1074
1053
|
|
|
1075
1054
|
# Add a irregular mask if there is one
|
|
1076
|
-
if irregular and not
|
|
1055
|
+
if irregular and not blockfill_ugrid and not orca and not blockfill_2d:
|
|
1077
1056
|
if np.size(field_irregular_nan) > 0:
|
|
1078
1057
|
cmap_white = matplotlib.colors.ListedColormap([1.0, 1.0, 1.0])
|
|
1079
1058
|
mymap.tricontourf(lons_irregular_nan, lats_irregular_nan, field_irregular_nan , [0.5, 1.5],
|
|
@@ -3604,28 +3583,28 @@ def cf_data_assign(f=None, colorbar_title=None, verbose=None, rotated_vect=False
|
|
|
3604
3583
|
c = f.coord(mycoord)
|
|
3605
3584
|
if c.X:
|
|
3606
3585
|
if verbose:
|
|
3607
|
-
print(
|
|
3586
|
+
print('lons -', mydim)
|
|
3608
3587
|
lons = np.squeeze(f.construct(mycoord).array)
|
|
3609
3588
|
if np.size(lons) > 1:
|
|
3610
3589
|
has_lons = True
|
|
3611
3590
|
|
|
3612
3591
|
if c.Y:
|
|
3613
3592
|
if verbose:
|
|
3614
|
-
print(
|
|
3593
|
+
print('lats -', mydim)
|
|
3615
3594
|
lats = np.squeeze(f.construct(mycoord).array)
|
|
3616
3595
|
if np.size(lats) > 1:
|
|
3617
3596
|
has_lats = True
|
|
3618
3597
|
|
|
3619
3598
|
if c.Z:
|
|
3620
3599
|
if verbose:
|
|
3621
|
-
print(
|
|
3600
|
+
print('height -', mydim)
|
|
3622
3601
|
height = np.squeeze(f.construct(mycoord).array)
|
|
3623
3602
|
if np.size(height) > 1:
|
|
3624
3603
|
has_height = True
|
|
3625
3604
|
|
|
3626
3605
|
if c.T:
|
|
3627
3606
|
if verbose:
|
|
3628
|
-
print(
|
|
3607
|
+
print('time -', mydim)
|
|
3629
3608
|
time = np.squeeze(f.construct(mycoord).array)
|
|
3630
3609
|
if np.size(time) > 1:
|
|
3631
3610
|
has_time = True
|
|
@@ -5994,7 +5973,7 @@ def set_map():
|
|
|
5994
5973
|
|
|
|
5995
5974
|
"""
|
|
5996
5975
|
|
|
5997
|
-
|
|
5976
|
+
|
|
5998
5977
|
# Return if mymap is already set
|
|
5999
5978
|
if plotvars.mymap is not None:
|
|
6000
5979
|
return
|
|
@@ -6017,6 +5996,7 @@ def set_map():
|
|
|
6017
5996
|
if lonmax - lonmin == 360.0:
|
|
6018
5997
|
lonmax = lonmax + 0.01
|
|
6019
5998
|
|
|
5999
|
+
|
|
6020
6000
|
if plotvars.proj == 'merc':
|
|
6021
6001
|
min_latitude = -80.0
|
|
6022
6002
|
if plotvars.lonmin > min_latitude:
|
|
@@ -6111,7 +6091,6 @@ def set_map():
|
|
|
6111
6091
|
extent = True
|
|
6112
6092
|
|
|
6113
6093
|
|
|
6114
|
-
|
|
6115
6094
|
# Add a plot containing the projection
|
|
6116
6095
|
if plotvars.plot_xmin:
|
|
6117
6096
|
delta_x = plotvars.plot_xmax - plotvars.plot_xmin
|
|
@@ -6121,6 +6100,7 @@ def set_map():
|
|
|
6121
6100
|
delta_x, delta_y],
|
|
6122
6101
|
projection=proj)
|
|
6123
6102
|
else:
|
|
6103
|
+
|
|
6124
6104
|
mymap = plotvars.master_plot.add_subplot(plotvars.rows,
|
|
6125
6105
|
plotvars.columns,
|
|
6126
6106
|
plotvars.pos,
|
|
@@ -7594,7 +7574,7 @@ def regression_tests():
|
|
|
7594
7574
|
"""
|
|
7595
7575
|
| Test for cf-plot regressions
|
|
7596
7576
|
| Run through some standard levs, gvals, lon and lat labelling
|
|
7597
|
-
| Make all the gallery plots and use
|
|
7577
|
+
| Make all the gallery plots and use Imagemagick to display them
|
|
7598
7578
|
| alongside a reference plot
|
|
7599
7579
|
|
|
|
7600
7580
|
|
|
|
@@ -10151,11 +10131,11 @@ def stream(u=None, v=None, x=None, y=None, density=None, linewidth=None,
|
|
|
10151
10131
|
mapset(resolution=resolution_orig)
|
|
10152
10132
|
|
|
10153
10133
|
|
|
10154
|
-
def
|
|
10134
|
+
def bfill_ugrid(f=None, face_lons=None, face_lats=None, face_connectivity=None, clevs=None,
|
|
10155
10135
|
alpha=None, zorder=None):
|
|
10156
10136
|
|
|
10157
10137
|
"""
|
|
10158
|
-
|
|
|
10138
|
+
| bfill_ugrid - block fill a irregular field with colour rectangles
|
|
10159
10139
|
| This is an internal routine and is not generally used by the user.
|
|
10160
10140
|
|
|
|
10161
10141
|
| f=None - field
|
|
@@ -10206,38 +10186,44 @@ def bfill_irregular(f=None, face_lons=None, face_lats=None, face_connectivity=No
|
|
|
10206
10186
|
plotargs = {'transform': ccrs.PlateCarree()}
|
|
10207
10187
|
|
|
10208
10188
|
coords_all = []
|
|
10189
|
+
|
|
10190
|
+
nfaces = np.shape(face_connectivity)[0]
|
|
10209
10191
|
|
|
10210
|
-
|
|
10211
|
-
|
|
10212
|
-
|
|
10213
|
-
|
|
10214
|
-
|
|
10215
|
-
|
|
10192
|
+
coords_all = []
|
|
10193
|
+
for iface in np.arange(nfaces):
|
|
10194
|
+
lons = face_lons[iface, :]
|
|
10195
|
+
lats = face_lats[iface, :]
|
|
10196
|
+
|
|
10197
|
+
# Wrapping in longitude
|
|
10216
10198
|
if (np.max(lons) - np.min(lons)) > 100:
|
|
10217
10199
|
if np.max(lons) > 180:
|
|
10218
|
-
for
|
|
10219
|
-
lons[
|
|
10220
|
-
|
|
10200
|
+
for j in np.arange(len(lons)):
|
|
10201
|
+
lons[j] = (lons[j] + 180) % 360 - 180
|
|
10221
10202
|
else:
|
|
10222
|
-
for
|
|
10223
|
-
lons[
|
|
10224
|
-
|
|
10225
|
-
coords = [(lons[i], lats[i]) for i in np.arange(len(lons))]
|
|
10203
|
+
for j in np.arange(len(lons)):
|
|
10204
|
+
lons[j] = lons[j] % 360
|
|
10226
10205
|
|
|
10206
|
+
nverts = len(lons)
|
|
10207
|
+
|
|
10227
10208
|
# Add extra verticies if any of the points are at the north or south pole
|
|
10228
10209
|
if np.max(lats) == 90 or np.min(lats) == -90:
|
|
10229
|
-
|
|
10210
|
+
|
|
10211
|
+
geom = sgeom.Polygon([(lons[k], lats[k]) for k in np.arange(nverts)])
|
|
10230
10212
|
geom_cyl = ccrs.PlateCarree().project_geometry(geom, ccrs.Geodetic())
|
|
10231
10213
|
|
|
10232
10214
|
# Original method for shapely < 2.0
|
|
10233
|
-
#coords = geom_cyl[0].exterior.coords[:]
|
|
10215
|
+
# coords = geom_cyl[0].exterior.coords[:]
|
|
10234
10216
|
|
|
10235
10217
|
# New method for shapely 2.0 +
|
|
10236
10218
|
poly_mapped = sgeom.mapping(geom_cyl.geoms[0])
|
|
10219
|
+
|
|
10237
10220
|
coords = list(poly_mapped['coordinates'][0])
|
|
10238
|
-
|
|
10221
|
+
else:
|
|
10222
|
+
coords = [(lons[k], lats[k]) for k in np.arange(nverts)]
|
|
10223
|
+
|
|
10239
10224
|
coords_all.append(coords)
|
|
10240
|
-
|
|
10225
|
+
|
|
10226
|
+
|
|
10241
10227
|
plotvars.mymap.add_collection(PolyCollection(coords_all, facecolors=cols, edgecolors=None,
|
|
10242
10228
|
alpha=alpha, zorder=zorder, **plotargs))
|
|
10243
10229
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|