cf-plot 3.2.23__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.23/cf_plot.egg-info → cf-plot-3.3.0}/PKG-INFO +1 -1
- {cf-plot-3.2.23 → cf-plot-3.3.0/cf_plot.egg-info}/PKG-INFO +1 -1
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/__init__.py +2 -2
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/cfplot.py +64 -138
- {cf-plot-3.2.23 → cf-plot-3.3.0}/setup.py +1 -1
- {cf-plot-3.2.23 → cf-plot-3.3.0}/LICENSE.txt +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/MANIFEST.in +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/README.md +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/README.txt +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cf_plot.egg-info/SOURCES.txt +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cf_plot.egg-info/dependency_links.txt +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cf_plot.egg-info/requires.txt +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cf_plot.egg-info/top_level.txt +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/3gauss.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/3saw.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BkBlAqGrYeOrReViWh200.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlAqGrYeOrRe.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlAqGrYeOrReVi200.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlGrYeOrReVi200.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlRe.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlWhRe.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlueDarkOrange18.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlueDarkRed18.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlueGreen14.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlueRed.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlueRedGray.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlueWhiteOrangeRed.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BlueYellowRed.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BrBG.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/BrownBlue12.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/Cat12.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/GHRSST_anomaly.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/GrayWhiteGray.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/GreenMagenta16.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/GreenYellow.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/OceanLakeLandSnow.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/StepSeq25.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/ViBlGrWhYeOrRe.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/WhBlGrYeRe.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/WhBlReWh.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/WhViBlGrYeOrRe.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/WhViBlGrYeOrReWh.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/WhiteBlue.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/WhiteBlueGreenYellowRed.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/WhiteGreen.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/WhiteYellowOrangeRed.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/__init__.py +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/amwg.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/amwg256.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/amwg_blueyellowred.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/arctic.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/cmp_b2r.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/cmp_flux.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/cmp_haxby.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/colombia.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/colournames.txt +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/cosam.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/cosam12.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/default.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/detail.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/extrema.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/gray.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/gui_default.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/helix.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/helix1.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/hlu_default.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/hotcold_18lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/hotcolr_19lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/hotres.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl0.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl1.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl10.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl11.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl12.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl13.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl14.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl15.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl16.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl17.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl18.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl19.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl2.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl20.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl21.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl22.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl23.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl24.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl25.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl26.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl27.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl28.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl29.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl3.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl30.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl31.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl32.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl33.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl34.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl35.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl36.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl37.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl38.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl39.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl4.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl5.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl6.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl7.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl8.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/idl9.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/inferno.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/magma.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/matlab_hot.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/matlab_hsv.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/matlab_jet.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/matlab_lines.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/mch_default.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/ncl_default.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/ncview_default.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/nrl_sirkes.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/nrl_sirkes_nowhite.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/nrwc.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/os250kmetres.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/parula.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/perc2_9lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/percent_11lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/plasma.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/posneg_1.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/posneg_2.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/prcp_1.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/prcp_2.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/prcp_3.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/precip2_15lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/precip2_17lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/precip3_16lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/precip4_11lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/precip4_diff_19lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/precip_11lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/precip_diff_12lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/precip_diff_1lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/radar.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/radar_1.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/rainbow.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/rainbow_gray.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/rainbow_white.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/rainbow_white_gray.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/rh_19lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale1.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale10.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale11.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale12.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale13.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale14.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale15.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale16.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale17.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale18.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale19.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale2.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale20.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale21.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale22.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale23.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale24.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale25.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale26.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale27.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale28.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale29.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale3.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale30.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale31.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale32.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale33.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale34.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale35.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale36.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale37.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale38.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale39.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale4.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale40.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale41.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale42.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale43.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale44.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale5.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale6.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale7.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale8.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/scale9.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/seaice_1.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/seaice_2.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/so4_21.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/so4_23.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/spread_15lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/sunshine_9lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/sunshine_diff_12lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/t2m_29lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/tbrAvg1.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/tbrStd1.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/tbrVar1.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/tbr_240_300.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/tbr_stdev_0_30.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/tbr_var_0_500.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/temp_19lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/temp_diff_18lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/temp_diff_1lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/testcmap.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/thelix.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/topo_15lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/vcs.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/viridis.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/wgne15.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/wh_bl_gr_ye_re.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/wiki_1_0_2.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/wiki_1_0_3.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/wiki_2_0.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/wiki_2_0_reduced.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/wind_17lev.rgb +0 -0
- {cf-plot-3.2.23 → cf-plot-3.3.0}/cfplot/colourmaps/wxpEnIR.rgb +0 -0
- {cf-plot-3.2.23 → 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,7 +404,7 @@ 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
|
|
|
417
|
-
|
|
407
|
+
|
|
418
408
|
# Subset the data if a user map is set
|
|
419
409
|
# This is use to speed up the plotting
|
|
420
410
|
# myfield is used for calculating the contour levels
|
|
@@ -425,56 +415,14 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
425
415
|
|
|
426
416
|
if plotvars.proj == 'spstere':
|
|
427
417
|
f = f.subspace(Y = cf.wi(-90.0, plotvars.boundinglat))
|
|
428
|
-
|
|
429
|
-
#if plotvars.lonmin != -180 or plotvars.lonmax != 180 or \
|
|
430
|
-
# plotvars.latmin != -90 or plotvars.latmax != 90:
|
|
431
|
-
|
|
432
|
-
#if plotvars.user_mapset:
|
|
433
|
-
# if plotvars.proj == 'cyl':
|
|
434
|
-
# myfield = f
|
|
435
|
-
# try:
|
|
436
|
-
# myfield.cyclic('X')
|
|
437
|
-
# except:
|
|
438
|
-
# pass
|
|
439
|
-
|
|
440
|
-
# # Field within the boundaries to calculate contours if needed
|
|
441
|
-
# lonmin = plotvars.lonmin
|
|
442
|
-
# lonmax = plotvars.lonmax
|
|
443
|
-
# latmin = plotvars.latmin
|
|
444
|
-
# latmax = plotvars.latmax
|
|
445
|
-
|
|
446
|
-
# myfield = None
|
|
447
|
-
# try:
|
|
448
|
-
# myfield = f.subspace(X=cf.wi(lonmin, lonmax), Y=cf.wi(latmin, latmax))
|
|
449
|
-
# except:
|
|
450
|
-
# pass
|
|
451
|
-
|
|
452
|
-
# # Extended field to cover beyond the map boundaries
|
|
453
|
-
# lonmin = plotvars.lonmin - 5
|
|
454
|
-
# lonmax = plotvars.lonmax + 5
|
|
455
|
-
# latmin = plotvars.latmin - 5
|
|
456
|
-
# latmax = plotvars.latmax + 5
|
|
457
|
-
# if latmin < -90:
|
|
458
|
-
# latmin = -90
|
|
459
|
-
# if latmax > 90:
|
|
460
|
-
# latmax = 90
|
|
461
|
-
|
|
462
|
-
# myfield_extended = None
|
|
463
|
-
# try:
|
|
464
|
-
# myfield_extended = f.subspace(X=cf.wi(lonmin, lonmax), Y=cf.wi(latmin, latmax))
|
|
465
|
-
# except:
|
|
466
|
-
# pass
|
|
467
|
-
|
|
468
|
-
|
|
469
|
-
# if myfield_extended is not None:
|
|
470
|
-
# f = myfield_extended
|
|
418
|
+
|
|
471
419
|
|
|
472
420
|
|
|
473
421
|
# Extract the data
|
|
474
422
|
field, x, y, ptype, colorbar_title, xlabel, ylabel, xpole, ypole =\
|
|
475
423
|
cf_data_assign(f, colorbar_title, verbose=verbose)
|
|
476
424
|
|
|
477
|
-
|
|
425
|
+
|
|
478
426
|
if user_xlabel is not None:
|
|
479
427
|
xlabel = user_xlabel
|
|
480
428
|
if user_ylabel is not None:
|
|
@@ -530,6 +478,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
530
478
|
# Set contour line styles
|
|
531
479
|
matplotlib.rcParams['contour.negative_linestyle'] = negative_linestyle
|
|
532
480
|
|
|
481
|
+
|
|
533
482
|
# Set contour lines off on block plots
|
|
534
483
|
if blockfill:
|
|
535
484
|
fill = False
|
|
@@ -556,7 +505,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
556
505
|
raise TypeError(errstr)
|
|
557
506
|
|
|
558
507
|
# Turn off colorbar if fill is turned off
|
|
559
|
-
if not fill and not blockfill and not
|
|
508
|
+
if not fill and not blockfill and not blockfill_ugrid:
|
|
560
509
|
colorbar = False
|
|
561
510
|
|
|
562
511
|
# Revert to default colour scale if cscale_flag flag is set
|
|
@@ -594,8 +543,6 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
594
543
|
|
|
595
544
|
if plotvars.levels is None:
|
|
596
545
|
|
|
597
|
-
|
|
598
|
-
|
|
599
546
|
if isinstance(f, cf.Field):
|
|
600
547
|
field, x, y, ptype, colorbar_title, xlabel, ylabel, xpole, ypole =\
|
|
601
548
|
cf_data_assign(f, colorbar_title, verbose=verbose)
|
|
@@ -603,31 +550,6 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
603
550
|
level_spacing=spacing,
|
|
604
551
|
verbose=verbose)
|
|
605
552
|
|
|
606
|
-
#print('clevs are ', clevs)
|
|
607
|
-
|
|
608
|
-
## If a cyclindrical map has been set then try to subspace the data and make a new set of levels
|
|
609
|
-
#myfield = None
|
|
610
|
-
#if ptype == 1 and plotvars.user_mapset and isinstance(f, cf.Field):
|
|
611
|
-
# if plotvars.proj == 'cyl':
|
|
612
|
-
# myfield = f
|
|
613
|
-
# try:
|
|
614
|
-
# myfield.cyclic('X')
|
|
615
|
-
# except:
|
|
616
|
-
# pass
|
|
617
|
-
#
|
|
618
|
-
# try:
|
|
619
|
-
# myfield = f.subspace(X=cf.wi(plotvars.lonmin, plotvars.lonmax),
|
|
620
|
-
# Y=cf.wi(plotvars.latmin, plotvars.latmax))
|
|
621
|
-
# except:
|
|
622
|
-
# pass
|
|
623
|
-
#
|
|
624
|
-
# print(myfield.coord('X').dump())
|
|
625
|
-
#
|
|
626
|
-
#if myfield is not None:
|
|
627
|
-
#
|
|
628
|
-
# clevs, mult, fmult = calculate_levels(field=myfield, level_spacing=spacing,\
|
|
629
|
-
# verbose=verbose)
|
|
630
|
-
|
|
631
553
|
else:
|
|
632
554
|
clevs = plotvars.levels
|
|
633
555
|
mult = 0
|
|
@@ -812,7 +734,6 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
812
734
|
else:
|
|
813
735
|
cscale(plotvars.cs_user, ncols=nlevs)
|
|
814
736
|
|
|
815
|
-
|
|
816
737
|
|
|
817
738
|
##################
|
|
818
739
|
# Map contour plot
|
|
@@ -851,9 +772,8 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
851
772
|
else:
|
|
852
773
|
mapset(lonmin=mylonmin, lonmax=mylonmax, latmin=mylatmin, latmax=mylatmax,
|
|
853
774
|
user_mapset=0, resolution=resolution_orig)
|
|
854
|
-
set_map()
|
|
855
|
-
|
|
856
775
|
|
|
776
|
+
set_map()
|
|
857
777
|
|
|
858
778
|
|
|
859
779
|
mymap = plotvars.mymap
|
|
@@ -863,8 +783,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
863
783
|
|
|
864
784
|
|
|
865
785
|
|
|
866
|
-
|
|
867
|
-
if not blockfill_irregular and not blockfill_2d:
|
|
786
|
+
if not blockfill_ugrid and not blockfill_2d:
|
|
868
787
|
if not irregular:
|
|
869
788
|
if lonrange > 350 and np.ndim(y) == 1:
|
|
870
789
|
# Add cyclic information if missing.
|
|
@@ -937,7 +856,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
937
856
|
# in polar plots. Subsample the latitudes to remove this problem
|
|
938
857
|
|
|
939
858
|
if plotvars.proj == 'npstere' and np.ndim(y) == 1:
|
|
940
|
-
if not
|
|
859
|
+
if not blockfill_ugrid and not blockfill_2d:
|
|
941
860
|
if irregular:
|
|
942
861
|
pts = np.where(lats_irregular > plotvars.boundinglat - 5)
|
|
943
862
|
pts = np.array(pts).flatten()
|
|
@@ -951,7 +870,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
951
870
|
field = field[myypos:, :]
|
|
952
871
|
|
|
953
872
|
if plotvars.proj == 'spstere' and np.ndim(y) == 1:
|
|
954
|
-
if not
|
|
873
|
+
if not blockfill_ugrid and not blockfill_2d:
|
|
955
874
|
if irregular:
|
|
956
875
|
pts = np.where(lats_irregular_real < plotvars.boundinglat + 5)
|
|
957
876
|
lons_irregular_real = lons_irregular_real[pts]
|
|
@@ -1044,7 +963,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
1044
963
|
zorder=zorder)
|
|
1045
964
|
|
|
1046
965
|
# Block fill
|
|
1047
|
-
if blockfill:
|
|
966
|
+
if blockfill and not blockfill_ugrid:
|
|
1048
967
|
if verbose:
|
|
1049
968
|
print('con - adding blockfill')
|
|
1050
969
|
|
|
@@ -1089,10 +1008,10 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
1089
1008
|
lonlat=True, bound=0, alpha=alpha, fast=blockfill_fast, zorder=zorder)
|
|
1090
1009
|
|
|
1091
1010
|
# Block fill for irregular
|
|
1092
|
-
if
|
|
1011
|
+
if blockfill_ugrid and not blockfill_2d:
|
|
1093
1012
|
if verbose:
|
|
1094
1013
|
print('con - adding blockfill for irregular')
|
|
1095
|
-
|
|
1014
|
+
bfill_ugrid(f=field_orig * fmult, face_lons=face_lons_array,
|
|
1096
1015
|
face_lats=face_lats_array,
|
|
1097
1016
|
face_connectivity=face_connectivity_array, clevs=clevs,
|
|
1098
1017
|
alpha=alpha, zorder=zorder)
|
|
@@ -1133,7 +1052,7 @@ def con(f=None, x=None, y=None, fill=global_fill, lines=global_lines, line_label
|
|
|
1133
1052
|
|
|
1134
1053
|
|
|
1135
1054
|
# Add a irregular mask if there is one
|
|
1136
|
-
if irregular and not
|
|
1055
|
+
if irregular and not blockfill_ugrid and not orca and not blockfill_2d:
|
|
1137
1056
|
if np.size(field_irregular_nan) > 0:
|
|
1138
1057
|
cmap_white = matplotlib.colors.ListedColormap([1.0, 1.0, 1.0])
|
|
1139
1058
|
mymap.tricontourf(lons_irregular_nan, lats_irregular_nan, field_irregular_nan , [0.5, 1.5],
|
|
@@ -3664,28 +3583,28 @@ def cf_data_assign(f=None, colorbar_title=None, verbose=None, rotated_vect=False
|
|
|
3664
3583
|
c = f.coord(mycoord)
|
|
3665
3584
|
if c.X:
|
|
3666
3585
|
if verbose:
|
|
3667
|
-
print(
|
|
3586
|
+
print('lons -', mydim)
|
|
3668
3587
|
lons = np.squeeze(f.construct(mycoord).array)
|
|
3669
3588
|
if np.size(lons) > 1:
|
|
3670
3589
|
has_lons = True
|
|
3671
3590
|
|
|
3672
3591
|
if c.Y:
|
|
3673
3592
|
if verbose:
|
|
3674
|
-
print(
|
|
3593
|
+
print('lats -', mydim)
|
|
3675
3594
|
lats = np.squeeze(f.construct(mycoord).array)
|
|
3676
3595
|
if np.size(lats) > 1:
|
|
3677
3596
|
has_lats = True
|
|
3678
3597
|
|
|
3679
3598
|
if c.Z:
|
|
3680
3599
|
if verbose:
|
|
3681
|
-
print(
|
|
3600
|
+
print('height -', mydim)
|
|
3682
3601
|
height = np.squeeze(f.construct(mycoord).array)
|
|
3683
3602
|
if np.size(height) > 1:
|
|
3684
3603
|
has_height = True
|
|
3685
3604
|
|
|
3686
3605
|
if c.T:
|
|
3687
3606
|
if verbose:
|
|
3688
|
-
print(
|
|
3607
|
+
print('time -', mydim)
|
|
3689
3608
|
time = np.squeeze(f.construct(mycoord).array)
|
|
3690
3609
|
if np.size(time) > 1:
|
|
3691
3610
|
has_time = True
|
|
@@ -6054,7 +5973,7 @@ def set_map():
|
|
|
6054
5973
|
|
|
|
6055
5974
|
"""
|
|
6056
5975
|
|
|
6057
|
-
|
|
5976
|
+
|
|
6058
5977
|
# Return if mymap is already set
|
|
6059
5978
|
if plotvars.mymap is not None:
|
|
6060
5979
|
return
|
|
@@ -6077,6 +5996,7 @@ def set_map():
|
|
|
6077
5996
|
if lonmax - lonmin == 360.0:
|
|
6078
5997
|
lonmax = lonmax + 0.01
|
|
6079
5998
|
|
|
5999
|
+
|
|
6080
6000
|
if plotvars.proj == 'merc':
|
|
6081
6001
|
min_latitude = -80.0
|
|
6082
6002
|
if plotvars.lonmin > min_latitude:
|
|
@@ -6171,7 +6091,6 @@ def set_map():
|
|
|
6171
6091
|
extent = True
|
|
6172
6092
|
|
|
6173
6093
|
|
|
6174
|
-
|
|
6175
6094
|
# Add a plot containing the projection
|
|
6176
6095
|
if plotvars.plot_xmin:
|
|
6177
6096
|
delta_x = plotvars.plot_xmax - plotvars.plot_xmin
|
|
@@ -6181,6 +6100,7 @@ def set_map():
|
|
|
6181
6100
|
delta_x, delta_y],
|
|
6182
6101
|
projection=proj)
|
|
6183
6102
|
else:
|
|
6103
|
+
|
|
6184
6104
|
mymap = plotvars.master_plot.add_subplot(plotvars.rows,
|
|
6185
6105
|
plotvars.columns,
|
|
6186
6106
|
plotvars.pos,
|
|
@@ -7654,7 +7574,7 @@ def regression_tests():
|
|
|
7654
7574
|
"""
|
|
7655
7575
|
| Test for cf-plot regressions
|
|
7656
7576
|
| Run through some standard levs, gvals, lon and lat labelling
|
|
7657
|
-
| Make all the gallery plots and use
|
|
7577
|
+
| Make all the gallery plots and use Imagemagick to display them
|
|
7658
7578
|
| alongside a reference plot
|
|
7659
7579
|
|
|
|
7660
7580
|
|
|
|
@@ -10211,11 +10131,11 @@ def stream(u=None, v=None, x=None, y=None, density=None, linewidth=None,
|
|
|
10211
10131
|
mapset(resolution=resolution_orig)
|
|
10212
10132
|
|
|
10213
10133
|
|
|
10214
|
-
def
|
|
10134
|
+
def bfill_ugrid(f=None, face_lons=None, face_lats=None, face_connectivity=None, clevs=None,
|
|
10215
10135
|
alpha=None, zorder=None):
|
|
10216
10136
|
|
|
10217
10137
|
"""
|
|
10218
|
-
|
|
|
10138
|
+
| bfill_ugrid - block fill a irregular field with colour rectangles
|
|
10219
10139
|
| This is an internal routine and is not generally used by the user.
|
|
10220
10140
|
|
|
|
10221
10141
|
| f=None - field
|
|
@@ -10266,38 +10186,44 @@ def bfill_irregular(f=None, face_lons=None, face_lats=None, face_connectivity=No
|
|
|
10266
10186
|
plotargs = {'transform': ccrs.PlateCarree()}
|
|
10267
10187
|
|
|
10268
10188
|
coords_all = []
|
|
10189
|
+
|
|
10190
|
+
nfaces = np.shape(face_connectivity)[0]
|
|
10269
10191
|
|
|
10270
|
-
|
|
10271
|
-
|
|
10272
|
-
|
|
10273
|
-
|
|
10274
|
-
|
|
10275
|
-
|
|
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
|
|
10276
10198
|
if (np.max(lons) - np.min(lons)) > 100:
|
|
10277
10199
|
if np.max(lons) > 180:
|
|
10278
|
-
for
|
|
10279
|
-
lons[
|
|
10280
|
-
|
|
10200
|
+
for j in np.arange(len(lons)):
|
|
10201
|
+
lons[j] = (lons[j] + 180) % 360 - 180
|
|
10281
10202
|
else:
|
|
10282
|
-
for
|
|
10283
|
-
lons[
|
|
10284
|
-
|
|
10285
|
-
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
|
|
10286
10205
|
|
|
10206
|
+
nverts = len(lons)
|
|
10207
|
+
|
|
10287
10208
|
# Add extra verticies if any of the points are at the north or south pole
|
|
10288
10209
|
if np.max(lats) == 90 or np.min(lats) == -90:
|
|
10289
|
-
|
|
10210
|
+
|
|
10211
|
+
geom = sgeom.Polygon([(lons[k], lats[k]) for k in np.arange(nverts)])
|
|
10290
10212
|
geom_cyl = ccrs.PlateCarree().project_geometry(geom, ccrs.Geodetic())
|
|
10291
10213
|
|
|
10292
10214
|
# Original method for shapely < 2.0
|
|
10293
|
-
#coords = geom_cyl[0].exterior.coords[:]
|
|
10215
|
+
# coords = geom_cyl[0].exterior.coords[:]
|
|
10294
10216
|
|
|
10295
10217
|
# New method for shapely 2.0 +
|
|
10296
10218
|
poly_mapped = sgeom.mapping(geom_cyl.geoms[0])
|
|
10219
|
+
|
|
10297
10220
|
coords = list(poly_mapped['coordinates'][0])
|
|
10298
|
-
|
|
10221
|
+
else:
|
|
10222
|
+
coords = [(lons[k], lats[k]) for k in np.arange(nverts)]
|
|
10223
|
+
|
|
10299
10224
|
coords_all.append(coords)
|
|
10300
|
-
|
|
10225
|
+
|
|
10226
|
+
|
|
10301
10227
|
plotvars.mymap.add_collection(PolyCollection(coords_all, facecolors=cols, edgecolors=None,
|
|
10302
10228
|
alpha=alpha, zorder=zorder, **plotargs))
|
|
10303
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
|