ultraplot 0.99.3__py3-none-any.whl
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.
- ultraplot/__init__.py +115 -0
- ultraplot/__init__.py.rej +58 -0
- ultraplot/axes/__init__.py +42 -0
- ultraplot/axes/base.py +3240 -0
- ultraplot/axes/cartesian.py +1425 -0
- ultraplot/axes/geo.py +1675 -0
- ultraplot/axes/plot.py +4569 -0
- ultraplot/axes/polar.py +381 -0
- ultraplot/axes/shared.py +186 -0
- ultraplot/axes/three.py +34 -0
- ultraplot/cmaps/Algae.rgb +256 -0
- ultraplot/cmaps/Amp.rgb +256 -0
- ultraplot/cmaps/BR.rgb +256 -0
- ultraplot/cmaps/Balance.rgb +256 -0
- ultraplot/cmaps/Blues1_r.xml +17 -0
- ultraplot/cmaps/Blues2.xml +16 -0
- ultraplot/cmaps/Blues3.xml +25 -0
- ultraplot/cmaps/Blues4_r.xml +17 -0
- ultraplot/cmaps/Blues5.xml +16 -0
- ultraplot/cmaps/Blues6.xml +25 -0
- ultraplot/cmaps/Blues7.xml +16 -0
- ultraplot/cmaps/Blues8.xml +17 -0
- ultraplot/cmaps/Blues9.xml +1 -0
- ultraplot/cmaps/Boreal.json +53 -0
- ultraplot/cmaps/Browns1.xml +16 -0
- ultraplot/cmaps/Browns2.xml +26 -0
- ultraplot/cmaps/Browns3.xml +17 -0
- ultraplot/cmaps/Browns4.xml +17 -0
- ultraplot/cmaps/Browns5.xml +26 -0
- ultraplot/cmaps/Browns6.xml +17 -0
- ultraplot/cmaps/Browns7.xml +19 -0
- ultraplot/cmaps/Browns8.xml +11 -0
- ultraplot/cmaps/Browns9.xml +1 -0
- ultraplot/cmaps/ColdHot.rgb +229 -0
- ultraplot/cmaps/Crest.rgb +256 -0
- ultraplot/cmaps/Curl.rgb +512 -0
- ultraplot/cmaps/Deep.rgb +256 -0
- ultraplot/cmaps/Delta.rgb +512 -0
- ultraplot/cmaps/Dense.rgb +256 -0
- ultraplot/cmaps/Div.json +71 -0
- ultraplot/cmaps/DryWet.json +73 -0
- ultraplot/cmaps/Dusk.json +53 -0
- ultraplot/cmaps/Fire.json +53 -0
- ultraplot/cmaps/Flare.rgb +256 -0
- ultraplot/cmaps/Glacial.json +53 -0
- ultraplot/cmaps/Greens1_r.xml +26 -0
- ultraplot/cmaps/Greens2.xml +28 -0
- ultraplot/cmaps/Greens3_r.xml +28 -0
- ultraplot/cmaps/Greens4.xml +17 -0
- ultraplot/cmaps/Greens5.xml +16 -0
- ultraplot/cmaps/Greens6_r.xml +16 -0
- ultraplot/cmaps/Greens7.xml +16 -0
- ultraplot/cmaps/Greens8.xml +26 -0
- ultraplot/cmaps/Haline.rgb +256 -0
- ultraplot/cmaps/Ice.rgb +256 -0
- ultraplot/cmaps/IceFire.rgb +256 -0
- ultraplot/cmaps/Mako.rgb +256 -0
- ultraplot/cmaps/Marine.json +53 -0
- ultraplot/cmaps/Matter.rgb +256 -0
- ultraplot/cmaps/Mono.txt +256 -0
- ultraplot/cmaps/MonoCycle.txt +256 -0
- ultraplot/cmaps/NegPos.json +71 -0
- ultraplot/cmaps/Oranges1.xml +27 -0
- ultraplot/cmaps/Oranges2.xml +26 -0
- ultraplot/cmaps/Oranges3.xml +15 -0
- ultraplot/cmaps/Oranges4.xml +23 -0
- ultraplot/cmaps/Oxy.rgb +256 -0
- ultraplot/cmaps/Phase.rgb +256 -0
- ultraplot/cmaps/Purples1_r.xml +16 -0
- ultraplot/cmaps/Purples2.xml +17 -0
- ultraplot/cmaps/Purples3.xml +18 -0
- ultraplot/cmaps/Reds1.xml +26 -0
- ultraplot/cmaps/Reds2.xml +22 -0
- ultraplot/cmaps/Reds3.xml +23 -0
- ultraplot/cmaps/Reds4.xml +26 -0
- ultraplot/cmaps/Reds5.xml +17 -0
- ultraplot/cmaps/Rocket.rgb +256 -0
- ultraplot/cmaps/Solar.rgb +256 -0
- ultraplot/cmaps/Speed.rgb +256 -0
- ultraplot/cmaps/Stellar.json +53 -0
- ultraplot/cmaps/Sunrise.json +53 -0
- ultraplot/cmaps/Sunset.json +53 -0
- ultraplot/cmaps/Tempo.rgb +256 -0
- ultraplot/cmaps/Thermal.rgb +256 -0
- ultraplot/cmaps/Turbid.rgb +256 -0
- ultraplot/cmaps/Vivid.xml +11 -0
- ultraplot/cmaps/Vlag.rgb +256 -0
- ultraplot/cmaps/Yellows1.xml +17 -0
- ultraplot/cmaps/Yellows2.xml +17 -0
- ultraplot/cmaps/Yellows3.xml +17 -0
- ultraplot/cmaps/Yellows4.xml +17 -0
- ultraplot/cmaps/acton.txt +256 -0
- ultraplot/cmaps/bam.txt +256 -0
- ultraplot/cmaps/bamO.txt +256 -0
- ultraplot/cmaps/bamako.txt +256 -0
- ultraplot/cmaps/batlow.txt +256 -0
- ultraplot/cmaps/batlowK.txt +256 -0
- ultraplot/cmaps/batlowW.txt +256 -0
- ultraplot/cmaps/berlin.txt +256 -0
- ultraplot/cmaps/bilbao.txt +256 -0
- ultraplot/cmaps/broc.txt +256 -0
- ultraplot/cmaps/brocO.txt +256 -0
- ultraplot/cmaps/buda.txt +256 -0
- ultraplot/cmaps/bukavu.txt +256 -0
- ultraplot/cmaps/cork.txt +256 -0
- ultraplot/cmaps/corkO.txt +256 -0
- ultraplot/cmaps/davos.txt +256 -0
- ultraplot/cmaps/devon.txt +256 -0
- ultraplot/cmaps/fes.txt +256 -0
- ultraplot/cmaps/hawaii.txt +256 -0
- ultraplot/cmaps/imola.txt +256 -0
- ultraplot/cmaps/lajolla.txt +256 -0
- ultraplot/cmaps/lapaz.txt +256 -0
- ultraplot/cmaps/lisbon.txt +256 -0
- ultraplot/cmaps/nuuk.txt +256 -0
- ultraplot/cmaps/oleron.txt +256 -0
- ultraplot/cmaps/oslo.txt +256 -0
- ultraplot/cmaps/roma.txt +256 -0
- ultraplot/cmaps/romaO.txt +256 -0
- ultraplot/cmaps/tofino.txt +256 -0
- ultraplot/cmaps/tokyo.txt +256 -0
- ultraplot/cmaps/turku.txt +256 -0
- ultraplot/cmaps/vanimo.txt +256 -0
- ultraplot/cmaps/vik.txt +256 -0
- ultraplot/cmaps/vikO.txt +256 -0
- ultraplot/colors/opencolor.txt +132 -0
- ultraplot/colors/xkcd.txt +951 -0
- ultraplot/colors.py +3241 -0
- ultraplot/colors.py.rej +243 -0
- ultraplot/config.py +1809 -0
- ultraplot/constructor.py +1633 -0
- ultraplot/cycles/538.hex +2 -0
- ultraplot/cycles/FlatUI.hex +1 -0
- ultraplot/cycles/Qual1.rgb +7 -0
- ultraplot/cycles/Qual2.rgb +13 -0
- ultraplot/cycles/bmh.hex +2 -0
- ultraplot/cycles/classic.hex +2 -0
- ultraplot/cycles/colorblind.hex +2 -0
- ultraplot/cycles/colorblind10.hex +2 -0
- ultraplot/cycles/default.hex +2 -0
- ultraplot/cycles/ggplot.hex +1 -0
- ultraplot/cycles/seaborn.hex +2 -0
- ultraplot/cycles/tableau.hex +2 -0
- ultraplot/demos.py +1201 -0
- ultraplot/externals/__init__.py +5 -0
- ultraplot/externals/hsluv.py +330 -0
- ultraplot/figure.py +2102 -0
- ultraplot/fonts/FiraMath-Bold.ttf +0 -0
- ultraplot/fonts/FiraMath-ExtraLight.ttf +0 -0
- ultraplot/fonts/FiraMath-Heavy.ttf +0 -0
- ultraplot/fonts/FiraMath-Light.ttf +0 -0
- ultraplot/fonts/FiraMath-Medium.ttf +0 -0
- ultraplot/fonts/FiraMath-Regular.ttf +0 -0
- ultraplot/fonts/FiraMath-SemiBold.ttf +0 -0
- ultraplot/fonts/FiraMath-UltraLight.ttf +0 -0
- ultraplot/fonts/FiraSans-Black.ttf +0 -0
- ultraplot/fonts/FiraSans-BlackItalic.ttf +0 -0
- ultraplot/fonts/FiraSans-Bold.ttf +0 -0
- ultraplot/fonts/FiraSans-BoldItalic.ttf +0 -0
- ultraplot/fonts/FiraSans-ExtraBold.ttf +0 -0
- ultraplot/fonts/FiraSans-ExtraBoldItalic.ttf +0 -0
- ultraplot/fonts/FiraSans-ExtraLight.ttf +0 -0
- ultraplot/fonts/FiraSans-ExtraLightItalic.ttf +0 -0
- ultraplot/fonts/FiraSans-Italic.ttf +0 -0
- ultraplot/fonts/FiraSans-Light.ttf +0 -0
- ultraplot/fonts/FiraSans-LightItalic.ttf +0 -0
- ultraplot/fonts/FiraSans-Medium.ttf +0 -0
- ultraplot/fonts/FiraSans-MediumItalic.ttf +0 -0
- ultraplot/fonts/FiraSans-Regular.ttf +0 -0
- ultraplot/fonts/FiraSans-SemiBold.ttf +0 -0
- ultraplot/fonts/FiraSans-SemiBoldItalic.ttf +0 -0
- ultraplot/fonts/LICENSE_FIRAMATH.txt +92 -0
- ultraplot/fonts/LICENSE_FIRASANS.txt +97 -0
- ultraplot/fonts/LICENSE_NOTOSANS.txt +202 -0
- ultraplot/fonts/LICENSE_NOTOSERIF.txt +93 -0
- ultraplot/fonts/LICENSE_OPENSANS.txt +202 -0
- ultraplot/fonts/LICENSE_ROBOTO.txt +202 -0
- ultraplot/fonts/LICENSE_SOURCESANS.txt +93 -0
- ultraplot/fonts/LICENSE_SOURCESERIF.txt +93 -0
- ultraplot/fonts/LICENSE_TEXGYRE.txt +29 -0
- ultraplot/fonts/LICENSE_UBUNTU.txt +96 -0
- ultraplot/fonts/NotoSans-Bold.ttf +0 -0
- ultraplot/fonts/NotoSans-BoldItalic.ttf +0 -0
- ultraplot/fonts/NotoSans-Italic.ttf +0 -0
- ultraplot/fonts/NotoSans-Regular.ttf +0 -0
- ultraplot/fonts/NotoSerif-Bold.ttf +0 -0
- ultraplot/fonts/NotoSerif-BoldItalic.ttf +0 -0
- ultraplot/fonts/NotoSerif-Italic.ttf +0 -0
- ultraplot/fonts/NotoSerif-Regular.ttf +0 -0
- ultraplot/fonts/OpenSans-Bold.ttf +0 -0
- ultraplot/fonts/OpenSans-BoldItalic.ttf +0 -0
- ultraplot/fonts/OpenSans-Italic.ttf +0 -0
- ultraplot/fonts/OpenSans-Regular.ttf +0 -0
- ultraplot/fonts/OpenSans-Semibold.ttf +0 -0
- ultraplot/fonts/OpenSans-SemiboldItalic.ttf +0 -0
- ultraplot/fonts/Roboto-Black.ttf +0 -0
- ultraplot/fonts/Roboto-BlackItalic.ttf +0 -0
- ultraplot/fonts/Roboto-Bold.ttf +0 -0
- ultraplot/fonts/Roboto-BoldItalic.ttf +0 -0
- ultraplot/fonts/Roboto-Italic.ttf +0 -0
- ultraplot/fonts/Roboto-Light.ttf +0 -0
- ultraplot/fonts/Roboto-LightItalic.ttf +0 -0
- ultraplot/fonts/Roboto-Medium.ttf +0 -0
- ultraplot/fonts/Roboto-MediumItalic.ttf +0 -0
- ultraplot/fonts/Roboto-Regular.ttf +0 -0
- ultraplot/fonts/SourceSansPro-Black.ttf +0 -0
- ultraplot/fonts/SourceSansPro-BlackItalic.ttf +0 -0
- ultraplot/fonts/SourceSansPro-Bold.ttf +0 -0
- ultraplot/fonts/SourceSansPro-BoldItalic.ttf +0 -0
- ultraplot/fonts/SourceSansPro-ExtraLight.ttf +0 -0
- ultraplot/fonts/SourceSansPro-ExtraLightItalic.ttf +0 -0
- ultraplot/fonts/SourceSansPro-Italic.ttf +0 -0
- ultraplot/fonts/SourceSansPro-Light.ttf +0 -0
- ultraplot/fonts/SourceSansPro-LightItalic.ttf +0 -0
- ultraplot/fonts/SourceSansPro-Regular.ttf +0 -0
- ultraplot/fonts/SourceSansPro-SemiBold.ttf +0 -0
- ultraplot/fonts/SourceSansPro-SemiBoldItalic.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-Black.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-BlackItalic.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-Bold.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-BoldItalic.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-ExtraLight.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-ExtraLightItalic.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-Italic.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-Light.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-LightItalic.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-Regular.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-SemiBold.ttf +0 -0
- ultraplot/fonts/SourceSerifPro-SemiBoldItalic.ttf +0 -0
- ultraplot/fonts/Ubuntu-Bold.ttf +0 -0
- ultraplot/fonts/Ubuntu-BoldItalic.ttf +0 -0
- ultraplot/fonts/Ubuntu-Italic.ttf +0 -0
- ultraplot/fonts/Ubuntu-Light.ttf +0 -0
- ultraplot/fonts/Ubuntu-LightItalic.ttf +0 -0
- ultraplot/fonts/Ubuntu-Medium.ttf +0 -0
- ultraplot/fonts/Ubuntu-MediumItalic.ttf +0 -0
- ultraplot/fonts/Ubuntu-Regular.ttf +0 -0
- ultraplot/fonts/texgyreadventor-bold.ttf +0 -0
- ultraplot/fonts/texgyreadventor-bolditalic.ttf +0 -0
- ultraplot/fonts/texgyreadventor-italic.ttf +0 -0
- ultraplot/fonts/texgyreadventor-regular.ttf +0 -0
- ultraplot/fonts/texgyrebonum-bold.ttf +0 -0
- ultraplot/fonts/texgyrebonum-bolditalic.ttf +0 -0
- ultraplot/fonts/texgyrebonum-italic.ttf +0 -0
- ultraplot/fonts/texgyrebonum-regular.ttf +0 -0
- ultraplot/fonts/texgyrechorus-mediumitalic.ttf +0 -0
- ultraplot/fonts/texgyrecursor-bold.ttf +0 -0
- ultraplot/fonts/texgyrecursor-bolditalic.ttf +0 -0
- ultraplot/fonts/texgyrecursor-italic.ttf +0 -0
- ultraplot/fonts/texgyrecursor-regular.ttf +0 -0
- ultraplot/fonts/texgyreheros-bold.ttf +0 -0
- ultraplot/fonts/texgyreheros-bolditalic.ttf +0 -0
- ultraplot/fonts/texgyreheros-italic.ttf +0 -0
- ultraplot/fonts/texgyreheros-regular.ttf +0 -0
- ultraplot/fonts/texgyrepagella-bold.ttf +0 -0
- ultraplot/fonts/texgyrepagella-bolditalic.ttf +0 -0
- ultraplot/fonts/texgyrepagella-italic.ttf +0 -0
- ultraplot/fonts/texgyrepagella-regular.ttf +0 -0
- ultraplot/fonts/texgyreschola-bold.ttf +0 -0
- ultraplot/fonts/texgyreschola-bolditalic.ttf +0 -0
- ultraplot/fonts/texgyreschola-italic.ttf +0 -0
- ultraplot/fonts/texgyreschola-regular.ttf +0 -0
- ultraplot/fonts/texgyretermes-bold.ttf +0 -0
- ultraplot/fonts/texgyretermes-bolditalic.ttf +0 -0
- ultraplot/fonts/texgyretermes-italic.ttf +0 -0
- ultraplot/fonts/texgyretermes-regular.ttf +0 -0
- ultraplot/gridspec.py +1698 -0
- ultraplot/internals/__init__.py +529 -0
- ultraplot/internals/benchmarks.py +26 -0
- ultraplot/internals/context.py +44 -0
- ultraplot/internals/docstring.py +139 -0
- ultraplot/internals/fonts.py +75 -0
- ultraplot/internals/guides.py +167 -0
- ultraplot/internals/inputs.py +862 -0
- ultraplot/internals/labels.py +85 -0
- ultraplot/internals/rcsetup.py +1933 -0
- ultraplot/internals/versions.py +61 -0
- ultraplot/internals/warnings.py +122 -0
- ultraplot/proj.py +325 -0
- ultraplot/scale.py +966 -0
- ultraplot/tests/__init__.py +28 -0
- ultraplot/tests/baseline/test_align_labels.png +0 -0
- ultraplot/tests/baseline/test_aligned_outer_guides.png +0 -0
- ultraplot/tests/baseline/test_aspect_ratios.png +0 -0
- ultraplot/tests/baseline/test_auto_diverging1.png +0 -0
- ultraplot/tests/baseline/test_auto_legend.png +0 -0
- ultraplot/tests/baseline/test_auto_reverse.png +0 -0
- ultraplot/tests/baseline/test_autodiverging3.png +0 -0
- ultraplot/tests/baseline/test_autodiverging4.png +0 -0
- ultraplot/tests/baseline/test_autodiverging5.png +0 -0
- ultraplot/tests/baseline/test_axes_colors.png +0 -0
- ultraplot/tests/baseline/test_bar_vectors.png +0 -0
- ultraplot/tests/baseline/test_bar_width.png +0 -0
- ultraplot/tests/baseline/test_both_ticklabels.png +0 -0
- ultraplot/tests/baseline/test_bounds_ticks.png +0 -0
- ultraplot/tests/baseline/test_boxplot_colors.png +0 -0
- ultraplot/tests/baseline/test_boxplot_vectors.png +0 -0
- ultraplot/tests/baseline/test_cartopy_contours.png +0 -0
- ultraplot/tests/baseline/test_cartopy_labels.png +0 -0
- ultraplot/tests/baseline/test_cartopy_manual.png +0 -0
- ultraplot/tests/baseline/test_centered_legends.png +0 -0
- ultraplot/tests/baseline/test_cmap_cycles.png +0 -0
- ultraplot/tests/baseline/test_colorbar.png +0 -0
- ultraplot/tests/baseline/test_colorbar_ticks.png +0 -0
- ultraplot/tests/baseline/test_colormap_mode.png +0 -0
- ultraplot/tests/baseline/test_column_iteration.png +0 -0
- ultraplot/tests/baseline/test_complex_ticks.png +0 -0
- ultraplot/tests/baseline/test_contour_labels.png +0 -0
- ultraplot/tests/baseline/test_contour_legend_with_label.png +0 -0
- ultraplot/tests/baseline/test_contour_legend_without_label.png +0 -0
- ultraplot/tests/baseline/test_contour_negative.png +0 -0
- ultraplot/tests/baseline/test_contour_single.png +0 -0
- ultraplot/tests/baseline/test_cutoff_ticks.png +0 -0
- ultraplot/tests/baseline/test_data_keyword.png +0 -0
- ultraplot/tests/baseline/test_discrete_ticks.png +0 -0
- ultraplot/tests/baseline/test_discrete_vs_fixed.png +0 -0
- ultraplot/tests/baseline/test_drawing_in_projection_with_globe.png +0 -0
- ultraplot/tests/baseline/test_drawing_in_projection_without_globe.png +0 -0
- ultraplot/tests/baseline/test_edge_fix.png +0 -0
- ultraplot/tests/baseline/test_flow_functions.png +0 -0
- ultraplot/tests/baseline/test_font_adjustments.png +0 -0
- ultraplot/tests/baseline/test_geographic_multiple_projections.png +0 -0
- ultraplot/tests/baseline/test_geographic_single_projection.png +0 -0
- ultraplot/tests/baseline/test_gray_adjustment.png +0 -0
- ultraplot/tests/baseline/test_histogram_legend.png +0 -0
- ultraplot/tests/baseline/test_histogram_types.png +0 -0
- ultraplot/tests/baseline/test_ignore_message.png +0 -0
- ultraplot/tests/baseline/test_inbounds_data.png +0 -0
- ultraplot/tests/baseline/test_init_format.png +0 -0
- ultraplot/tests/baseline/test_inner_title_zorder.png +0 -0
- ultraplot/tests/baseline/test_inset_basic.png +0 -0
- ultraplot/tests/baseline/test_inset_colorbars.png +0 -0
- ultraplot/tests/baseline/test_inset_colors_1.png +0 -0
- ultraplot/tests/baseline/test_inset_colors_2.png +0 -0
- ultraplot/tests/baseline/test_inset_zoom_update.png +0 -0
- ultraplot/tests/baseline/test_invalid_dist.png +0 -0
- ultraplot/tests/baseline/test_invalid_plot.png +0 -0
- ultraplot/tests/baseline/test_keep_guide_labels.png +0 -0
- ultraplot/tests/baseline/test_label_settings.png +0 -0
- ultraplot/tests/baseline/test_level_restriction.png +0 -0
- ultraplot/tests/baseline/test_levels_with_vmin_vmax.png +0 -0
- ultraplot/tests/baseline/test_locale_formatting.png +0 -0
- ultraplot/tests/baseline/test_locale_formatting_en_US.UTF-8.png +0 -0
- ultraplot/tests/baseline/test_manual_labels.png +0 -0
- ultraplot/tests/baseline/test_multi_formatting.png +0 -0
- ultraplot/tests/baseline/test_multiple_calls.png +0 -0
- ultraplot/tests/baseline/test_on_the_fly_mappable.png +0 -0
- ultraplot/tests/baseline/test_outer_align.png +0 -0
- ultraplot/tests/baseline/test_panel_dist.png +0 -0
- ultraplot/tests/baseline/test_panels_suplabels_three_hor_panels.png +0 -0
- ultraplot/tests/baseline/test_panels_with_sharing.png +0 -0
- ultraplot/tests/baseline/test_panels_without_sharing_1.png +0 -0
- ultraplot/tests/baseline/test_panels_without_sharing_2.png +0 -0
- ultraplot/tests/baseline/test_parametric_colors.png +0 -0
- ultraplot/tests/baseline/test_parametric_labels.png +0 -0
- ultraplot/tests/baseline/test_patch_format.png +0 -0
- ultraplot/tests/baseline/test_pie_charts.png +0 -0
- ultraplot/tests/baseline/test_pint_quantities.png +0 -0
- ultraplot/tests/baseline/test_polar_projections.png +0 -0
- ultraplot/tests/baseline/test_projection_dicts.png +0 -0
- ultraplot/tests/baseline/test_qualitative_colormaps_1.png +0 -0
- ultraplot/tests/baseline/test_qualitative_colormaps_2.png +0 -0
- ultraplot/tests/baseline/test_reversed_levels.png +0 -0
- ultraplot/tests/baseline/test_scatter_alpha.png +0 -0
- ultraplot/tests/baseline/test_scatter_args.png +0 -0
- ultraplot/tests/baseline/test_scatter_cycle.png +0 -0
- ultraplot/tests/baseline/test_scatter_inbounds.png +0 -0
- ultraplot/tests/baseline/test_scatter_sizes.png +0 -0
- ultraplot/tests/baseline/test_seaborn_heatmap.png +0 -0
- ultraplot/tests/baseline/test_seaborn_hist.png +0 -0
- ultraplot/tests/baseline/test_seaborn_relational.png +0 -0
- ultraplot/tests/baseline/test_seaborn_swarmplot.png +0 -0
- ultraplot/tests/baseline/test_segmented_norm.png +0 -0
- ultraplot/tests/baseline/test_segmented_norm_ticks.png +0 -0
- ultraplot/tests/baseline/test_share_all_basic.png +0 -0
- ultraplot/tests/baseline/test_singleton_legend.png +0 -0
- ultraplot/tests/baseline/test_span_labels.png +0 -0
- ultraplot/tests/baseline/test_spine_offset.png +0 -0
- ultraplot/tests/baseline/test_spine_side.png +0 -0
- ultraplot/tests/baseline/test_standardized_input.png +0 -0
- ultraplot/tests/baseline/test_statistical_boxplot.png +0 -0
- ultraplot/tests/baseline/test_three_axes.png +0 -0
- ultraplot/tests/baseline/test_tick_direction.png +0 -0
- ultraplot/tests/baseline/test_tick_labels.png +0 -0
- ultraplot/tests/baseline/test_tick_length.png +0 -0
- ultraplot/tests/baseline/test_tick_width.png +0 -0
- ultraplot/tests/baseline/test_title_deflection.png +0 -0
- ultraplot/tests/baseline/test_triangular_functions.png +0 -0
- ultraplot/tests/baseline/test_tuple_handles.png +0 -0
- ultraplot/tests/baseline/test_twin_axes_1.png +0 -0
- ultraplot/tests/baseline/test_twin_axes_2.png +0 -0
- ultraplot/tests/baseline/test_twin_axes_3.png +0 -0
- ultraplot/tests/baseline/test_uneven_levels.png +0 -0
- ultraplot/tests/test_1dplots.py +373 -0
- ultraplot/tests/test_2dplots.py +354 -0
- ultraplot/tests/test_axes.py +179 -0
- ultraplot/tests/test_colorbar.py +253 -0
- ultraplot/tests/test_docs.py +78 -0
- ultraplot/tests/test_format.py +340 -0
- ultraplot/tests/test_geographic.py +116 -0
- ultraplot/tests/test_imshow.py +110 -0
- ultraplot/tests/test_inset.py +28 -0
- ultraplot/tests/test_integration.py +149 -0
- ultraplot/tests/test_legend.py +181 -0
- ultraplot/tests/test_projections.py +138 -0
- ultraplot/tests/test_statistical_plotting.py +77 -0
- ultraplot/tests/test_subplots.py +174 -0
- ultraplot/ticker.py +879 -0
- ultraplot/ui.py +233 -0
- ultraplot/utils.py +912 -0
- ultraplot-0.99.3.dist-info/LICENSE.txt +427 -0
- ultraplot-0.99.3.dist-info/METADATA +88 -0
- ultraplot-0.99.3.dist-info/RECORD +416 -0
- ultraplot-0.99.3.dist-info/WHEEL +5 -0
- ultraplot-0.99.3.dist-info/entry_points.txt +2 -0
- ultraplot-0.99.3.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Utilities for handling dependencies and version changes.
|
|
4
|
+
"""
|
|
5
|
+
from . import ic # noqa: F401
|
|
6
|
+
from . import warnings
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
class _version(list):
|
|
10
|
+
"""
|
|
11
|
+
Casual parser for ``major.minor`` style version strings. We do not want to
|
|
12
|
+
add a 'packaging' dependency and only care about major and minor tags.
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
def __str__(self):
|
|
16
|
+
return self._version
|
|
17
|
+
|
|
18
|
+
def __repr__(self):
|
|
19
|
+
return f"version({self._version})"
|
|
20
|
+
|
|
21
|
+
def __init__(self, version):
|
|
22
|
+
try:
|
|
23
|
+
major, minor, *_ = version.split(".")
|
|
24
|
+
major, minor = int(major or 0), int(minor or 0)
|
|
25
|
+
except Exception:
|
|
26
|
+
warnings._warn_ultraplot(f"Unexpected version {version!r}. Using 0.0.0.")
|
|
27
|
+
major = minor = 0
|
|
28
|
+
self._version = f"{major}.{minor}"
|
|
29
|
+
super().__init__((major, minor)) # then use builtin python list sorting
|
|
30
|
+
|
|
31
|
+
def __eq__(self, other):
|
|
32
|
+
return super().__eq__(_version(other))
|
|
33
|
+
|
|
34
|
+
def __ne__(self, other):
|
|
35
|
+
return super().__ne__(_version(other))
|
|
36
|
+
|
|
37
|
+
def __gt__(self, other):
|
|
38
|
+
return super().__gt__(_version(other))
|
|
39
|
+
|
|
40
|
+
def __lt__(self, other):
|
|
41
|
+
return super().__lt__(_version(other))
|
|
42
|
+
|
|
43
|
+
def __ge__(self, other):
|
|
44
|
+
return super().__ge__(_version(other))
|
|
45
|
+
|
|
46
|
+
def __le__(self, other):
|
|
47
|
+
return super().__le__(_version(other))
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
# Matplotlib version
|
|
51
|
+
import matplotlib # isort:skip
|
|
52
|
+
|
|
53
|
+
_version_mpl = _version(matplotlib.__version__)
|
|
54
|
+
|
|
55
|
+
# Cartopy version
|
|
56
|
+
try:
|
|
57
|
+
import cartopy
|
|
58
|
+
except ImportError:
|
|
59
|
+
_version_cartopy = _version("0.0.0")
|
|
60
|
+
else:
|
|
61
|
+
_version_cartopy = _version(cartopy.__version__)
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Utilities for internal warnings and deprecations.
|
|
4
|
+
"""
|
|
5
|
+
import functools
|
|
6
|
+
import re
|
|
7
|
+
import sys
|
|
8
|
+
import warnings
|
|
9
|
+
|
|
10
|
+
from . import ic # noqa: F401
|
|
11
|
+
|
|
12
|
+
# Internal modules omitted from warning message
|
|
13
|
+
REGEX_INTERNAL = re.compile(r"\A(matplotlib|mpl_toolkits|ultraplot)\.")
|
|
14
|
+
|
|
15
|
+
# Trivial warning class meant only to communicate the source of the warning
|
|
16
|
+
UltraplotWarning = type("UltraPlotWarning", (UserWarning,), {})
|
|
17
|
+
|
|
18
|
+
# Add due to overwriting the module name
|
|
19
|
+
catch_warnings = warnings.catch_warnings
|
|
20
|
+
simplefilter = warnings.simplefilter
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
def next_release():
|
|
24
|
+
"""
|
|
25
|
+
message indicating the next major release.
|
|
26
|
+
"""
|
|
27
|
+
from .. import __version__
|
|
28
|
+
|
|
29
|
+
try:
|
|
30
|
+
# Find the first digit in the version string
|
|
31
|
+
version_start = next(i for i, c in enumerate(__version__) if c.isdigit())
|
|
32
|
+
num = int(__version__[version_start]) + 1
|
|
33
|
+
except (StopIteration, ValueError, TypeError):
|
|
34
|
+
string = "the next major release"
|
|
35
|
+
else:
|
|
36
|
+
which = "first" if num == 1 else "next"
|
|
37
|
+
string = f"the {which} major release (version {num}.0.0)"
|
|
38
|
+
return string
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
def _warn_ultraplot(message):
|
|
42
|
+
"""
|
|
43
|
+
Emit a `UltraPlotWarning` and show the stack level outside of matplotlib and
|
|
44
|
+
ultraplot. This is adapted from matplotlib's warning system.
|
|
45
|
+
"""
|
|
46
|
+
frame = sys._getframe()
|
|
47
|
+
stacklevel = 1
|
|
48
|
+
while frame is not None:
|
|
49
|
+
if not REGEX_INTERNAL.match(frame.f_globals.get("__name__", "")):
|
|
50
|
+
break # this is the first external frame
|
|
51
|
+
frame = frame.f_back
|
|
52
|
+
stacklevel += 1
|
|
53
|
+
warnings.warn(message, UltraplotWarning, stacklevel=stacklevel)
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _rename_objs(version, **kwargs):
|
|
57
|
+
"""
|
|
58
|
+
Emit a basic deprecation warning after renaming function(s), method(s), or
|
|
59
|
+
class(es). Each key should be an old name, and each argument should be the new
|
|
60
|
+
object to point to. Do not document the deprecated object(s) to discourage use.
|
|
61
|
+
"""
|
|
62
|
+
objs = []
|
|
63
|
+
for old_name, new_obj in kwargs.items():
|
|
64
|
+
new_name = new_obj.__name__
|
|
65
|
+
message = (
|
|
66
|
+
f"{old_name!r} was deprecated in version {version} and may be "
|
|
67
|
+
f"removed in {next_release()}. Please use {new_name!r} instead."
|
|
68
|
+
)
|
|
69
|
+
if isinstance(new_obj, type):
|
|
70
|
+
|
|
71
|
+
class _deprecated_class(new_obj):
|
|
72
|
+
def __init__(self, *args, new_obj=new_obj, message=message, **kwargs):
|
|
73
|
+
_warn_ultraplot(message)
|
|
74
|
+
super().__init__(*args, **kwargs)
|
|
75
|
+
|
|
76
|
+
_deprecated_class.__name__ = old_name
|
|
77
|
+
objs.append(_deprecated_class)
|
|
78
|
+
elif callable(new_obj):
|
|
79
|
+
|
|
80
|
+
def _deprecated_function(*args, new_obj=new_obj, message=message, **kwargs):
|
|
81
|
+
_warn_ultraplot(message)
|
|
82
|
+
return new_obj(*args, **kwargs)
|
|
83
|
+
|
|
84
|
+
_deprecated_function.__name__ = old_name
|
|
85
|
+
objs.append(_deprecated_function)
|
|
86
|
+
else:
|
|
87
|
+
raise ValueError(f"Invalid deprecated object replacement {new_obj!r}.")
|
|
88
|
+
if len(objs) == 1:
|
|
89
|
+
return objs[0]
|
|
90
|
+
else:
|
|
91
|
+
return tuple(objs)
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
def _rename_kwargs(version, **kwargs_rename):
|
|
95
|
+
"""
|
|
96
|
+
Emit a basic deprecation warning after removing or renaming keyword argument(s).
|
|
97
|
+
Each key should be an old keyword, and each argument should be the new keyword
|
|
98
|
+
or *instructions* for what to use instead.
|
|
99
|
+
"""
|
|
100
|
+
|
|
101
|
+
def _decorator(func_orig):
|
|
102
|
+
@functools.wraps(func_orig)
|
|
103
|
+
def _deprecate_kwargs_wrapper(*args, **kwargs):
|
|
104
|
+
for key_old, key_new in kwargs_rename.items():
|
|
105
|
+
if key_old not in kwargs:
|
|
106
|
+
continue
|
|
107
|
+
value = kwargs.pop(key_old)
|
|
108
|
+
if key_new.isidentifier():
|
|
109
|
+
# Rename argument
|
|
110
|
+
kwargs[key_new] = value
|
|
111
|
+
elif "{}" in key_new:
|
|
112
|
+
# Nice warning message, but user's desired behavior fails
|
|
113
|
+
key_new = key_new.format(value)
|
|
114
|
+
_warn_ultraplot(
|
|
115
|
+
f"Keyword {key_old!r} was deprecated in version {version} and may "
|
|
116
|
+
f"be removed in {next_release()}. Please use {key_new!r} instead."
|
|
117
|
+
)
|
|
118
|
+
return func_orig(*args, **kwargs)
|
|
119
|
+
|
|
120
|
+
return _deprecate_kwargs_wrapper
|
|
121
|
+
|
|
122
|
+
return _decorator
|
ultraplot/proj.py
ADDED
|
@@ -0,0 +1,325 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Additional cartopy projection classes.
|
|
4
|
+
"""
|
|
5
|
+
import warnings
|
|
6
|
+
|
|
7
|
+
from .internals import ic # noqa: F401
|
|
8
|
+
from .internals import docstring
|
|
9
|
+
|
|
10
|
+
try:
|
|
11
|
+
from cartopy.crs import ( # stereo projections needed in geo.py
|
|
12
|
+
AzimuthalEquidistant,
|
|
13
|
+
Gnomonic,
|
|
14
|
+
LambertAzimuthalEqualArea,
|
|
15
|
+
NorthPolarStereo,
|
|
16
|
+
SouthPolarStereo,
|
|
17
|
+
_WarpedRectangularProjection,
|
|
18
|
+
)
|
|
19
|
+
except ModuleNotFoundError:
|
|
20
|
+
AzimuthalEquidistant = Gnomonic = LambertAzimuthalEqualArea = object
|
|
21
|
+
_WarpedRectangularProjection = NorthPolarStereo = SouthPolarStereo = object
|
|
22
|
+
|
|
23
|
+
__all__ = [
|
|
24
|
+
"Aitoff",
|
|
25
|
+
"Hammer",
|
|
26
|
+
"KavrayskiyVII",
|
|
27
|
+
"WinkelTripel",
|
|
28
|
+
"NorthPolarAzimuthalEquidistant",
|
|
29
|
+
"SouthPolarAzimuthalEquidistant",
|
|
30
|
+
"NorthPolarGnomonic",
|
|
31
|
+
"SouthPolarGnomonic",
|
|
32
|
+
"NorthPolarLambertAzimuthalEqualArea",
|
|
33
|
+
"SouthPolarLambertAzimuthalEqualArea",
|
|
34
|
+
]
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
_reso_docstring = """
|
|
38
|
+
The projection resolution.
|
|
39
|
+
"""
|
|
40
|
+
_init_docstring = """
|
|
41
|
+
Parameters
|
|
42
|
+
----------
|
|
43
|
+
central_longitude : float, default: 0
|
|
44
|
+
The central meridian longitude in degrees.
|
|
45
|
+
false_easting: float, default: 0
|
|
46
|
+
X offset from planar origin in metres.
|
|
47
|
+
false_northing: float, default: 0
|
|
48
|
+
Y offset from planar origin in metres.
|
|
49
|
+
globe : `~cartopy.crs.Globe`, optional
|
|
50
|
+
If omitted, a default globe is created.
|
|
51
|
+
"""
|
|
52
|
+
docstring._snippet_manager["proj.reso"] = _reso_docstring
|
|
53
|
+
docstring._snippet_manager["proj.init"] = _init_docstring
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
class Aitoff(_WarpedRectangularProjection):
|
|
57
|
+
"""
|
|
58
|
+
The `Aitoff <https://en.wikipedia.org/wiki/Aitoff_projection>`__ projection.
|
|
59
|
+
"""
|
|
60
|
+
|
|
61
|
+
#: Registered projection name.
|
|
62
|
+
name = "aitoff"
|
|
63
|
+
|
|
64
|
+
@docstring._snippet_manager
|
|
65
|
+
def __init__(
|
|
66
|
+
self, central_longitude=0, globe=None, false_easting=None, false_northing=None
|
|
67
|
+
):
|
|
68
|
+
"""
|
|
69
|
+
%(proj.init)s
|
|
70
|
+
"""
|
|
71
|
+
from cartopy.crs import WGS84_SEMIMAJOR_AXIS, Globe
|
|
72
|
+
|
|
73
|
+
if globe is None:
|
|
74
|
+
globe = Globe(semimajor_axis=WGS84_SEMIMAJOR_AXIS, ellipse=None)
|
|
75
|
+
|
|
76
|
+
a = globe.semimajor_axis or WGS84_SEMIMAJOR_AXIS
|
|
77
|
+
b = globe.semiminor_axis or a
|
|
78
|
+
if b != a or globe.ellipse is not None:
|
|
79
|
+
warnings.warn(
|
|
80
|
+
f"The {self.name!r} projection does not handle elliptical globes."
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
proj4_params = {"proj": "aitoff", "lon_0": central_longitude}
|
|
84
|
+
super().__init__(
|
|
85
|
+
proj4_params,
|
|
86
|
+
central_longitude,
|
|
87
|
+
false_easting=false_easting,
|
|
88
|
+
false_northing=false_northing,
|
|
89
|
+
globe=globe,
|
|
90
|
+
)
|
|
91
|
+
|
|
92
|
+
@docstring._snippet_manager
|
|
93
|
+
@property
|
|
94
|
+
def threshold(self): # how finely to interpolate line data, etc.
|
|
95
|
+
"""
|
|
96
|
+
%(proj.reso)s
|
|
97
|
+
"""
|
|
98
|
+
return 1e5
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
class Hammer(_WarpedRectangularProjection):
|
|
102
|
+
"""
|
|
103
|
+
The `Hammer <https://en.wikipedia.org/wiki/Hammer_projection>`__ projection.
|
|
104
|
+
"""
|
|
105
|
+
|
|
106
|
+
#: Registered projection name.
|
|
107
|
+
name = "hammer"
|
|
108
|
+
|
|
109
|
+
@docstring._snippet_manager
|
|
110
|
+
def __init__(
|
|
111
|
+
self, central_longitude=0, globe=None, false_easting=None, false_northing=None
|
|
112
|
+
):
|
|
113
|
+
"""
|
|
114
|
+
%(proj.init)s
|
|
115
|
+
"""
|
|
116
|
+
from cartopy.crs import WGS84_SEMIMAJOR_AXIS, Globe
|
|
117
|
+
|
|
118
|
+
if globe is None:
|
|
119
|
+
globe = Globe(semimajor_axis=WGS84_SEMIMAJOR_AXIS, ellipse=None)
|
|
120
|
+
|
|
121
|
+
a = globe.semimajor_axis or WGS84_SEMIMAJOR_AXIS
|
|
122
|
+
b = globe.semiminor_axis or a
|
|
123
|
+
if b != a or globe.ellipse is not None:
|
|
124
|
+
warnings.warn(
|
|
125
|
+
f"The {self.name!r} projection does not handle elliptical globes."
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
proj4_params = {"proj": "hammer", "lon_0": central_longitude}
|
|
129
|
+
super().__init__(
|
|
130
|
+
proj4_params,
|
|
131
|
+
central_longitude,
|
|
132
|
+
false_easting=false_easting,
|
|
133
|
+
false_northing=false_northing,
|
|
134
|
+
globe=globe,
|
|
135
|
+
)
|
|
136
|
+
|
|
137
|
+
@docstring._snippet_manager
|
|
138
|
+
@property
|
|
139
|
+
def threshold(self): # how finely to interpolate line data, etc.
|
|
140
|
+
"""
|
|
141
|
+
%(proj.reso)s
|
|
142
|
+
"""
|
|
143
|
+
return 1e5
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
class KavrayskiyVII(_WarpedRectangularProjection):
|
|
147
|
+
"""
|
|
148
|
+
The `Kavrayskiy VII \
|
|
149
|
+
<https://en.wikipedia.org/wiki/Kavrayskiy_VII_projection>`__ projection.
|
|
150
|
+
"""
|
|
151
|
+
|
|
152
|
+
#: Registered projection name.
|
|
153
|
+
name = "kavrayskiyVII"
|
|
154
|
+
|
|
155
|
+
@docstring._snippet_manager
|
|
156
|
+
def __init__(
|
|
157
|
+
self, central_longitude=0, globe=None, false_easting=None, false_northing=None
|
|
158
|
+
):
|
|
159
|
+
"""
|
|
160
|
+
%(proj.init)s
|
|
161
|
+
"""
|
|
162
|
+
from cartopy.crs import WGS84_SEMIMAJOR_AXIS, Globe
|
|
163
|
+
|
|
164
|
+
if globe is None:
|
|
165
|
+
globe = Globe(semimajor_axis=WGS84_SEMIMAJOR_AXIS, ellipse=None)
|
|
166
|
+
|
|
167
|
+
a = globe.semimajor_axis or WGS84_SEMIMAJOR_AXIS
|
|
168
|
+
b = globe.semiminor_axis or a
|
|
169
|
+
if b != a or globe.ellipse is not None:
|
|
170
|
+
warnings.warn(
|
|
171
|
+
f"The {self.name!r} projection does not handle elliptical globes."
|
|
172
|
+
)
|
|
173
|
+
|
|
174
|
+
proj4_params = {"proj": "kav7", "lon_0": central_longitude}
|
|
175
|
+
super().__init__(
|
|
176
|
+
proj4_params,
|
|
177
|
+
central_longitude,
|
|
178
|
+
false_easting=false_easting,
|
|
179
|
+
false_northing=false_northing,
|
|
180
|
+
globe=globe,
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
@docstring._snippet_manager
|
|
184
|
+
@property
|
|
185
|
+
def threshold(self):
|
|
186
|
+
"""
|
|
187
|
+
%(proj.reso)s
|
|
188
|
+
"""
|
|
189
|
+
return 1e5
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
class WinkelTripel(_WarpedRectangularProjection):
|
|
193
|
+
"""
|
|
194
|
+
The `Winkel tripel (Winkel III) \
|
|
195
|
+
<https://en.wikipedia.org/wiki/Winkel_tripel_projection>`__ projection.
|
|
196
|
+
"""
|
|
197
|
+
|
|
198
|
+
#: Registered projection name.
|
|
199
|
+
name = "winkeltripel"
|
|
200
|
+
|
|
201
|
+
@docstring._snippet_manager
|
|
202
|
+
def __init__(
|
|
203
|
+
self, central_longitude=0, globe=None, false_easting=None, false_northing=None
|
|
204
|
+
):
|
|
205
|
+
"""
|
|
206
|
+
%(proj.init)s
|
|
207
|
+
"""
|
|
208
|
+
from cartopy.crs import WGS84_SEMIMAJOR_AXIS, Globe
|
|
209
|
+
|
|
210
|
+
if globe is None:
|
|
211
|
+
globe = Globe(semimajor_axis=WGS84_SEMIMAJOR_AXIS, ellipse=None)
|
|
212
|
+
|
|
213
|
+
a = globe.semimajor_axis or WGS84_SEMIMAJOR_AXIS
|
|
214
|
+
b = globe.semiminor_axis or a
|
|
215
|
+
if b != a or globe.ellipse is not None:
|
|
216
|
+
warnings.warn(
|
|
217
|
+
f"The {self.name!r} projection does not handle " "elliptical globes."
|
|
218
|
+
)
|
|
219
|
+
|
|
220
|
+
proj4_params = {"proj": "wintri", "lon_0": central_longitude}
|
|
221
|
+
super().__init__(
|
|
222
|
+
proj4_params,
|
|
223
|
+
central_longitude,
|
|
224
|
+
false_easting=false_easting,
|
|
225
|
+
false_northing=false_northing,
|
|
226
|
+
globe=globe,
|
|
227
|
+
)
|
|
228
|
+
|
|
229
|
+
@docstring._snippet_manager
|
|
230
|
+
@property
|
|
231
|
+
def threshold(self):
|
|
232
|
+
"""
|
|
233
|
+
%(proj.reso)s
|
|
234
|
+
"""
|
|
235
|
+
return 1e5
|
|
236
|
+
|
|
237
|
+
|
|
238
|
+
class NorthPolarAzimuthalEquidistant(AzimuthalEquidistant):
|
|
239
|
+
"""
|
|
240
|
+
Analogous to `~cartopy.crs.NorthPolarStereo`.
|
|
241
|
+
"""
|
|
242
|
+
|
|
243
|
+
@docstring._snippet_manager
|
|
244
|
+
def __init__(self, central_longitude=0.0, globe=None):
|
|
245
|
+
"""
|
|
246
|
+
%(proj.init)s
|
|
247
|
+
"""
|
|
248
|
+
super().__init__(
|
|
249
|
+
central_latitude=90, central_longitude=central_longitude, globe=globe
|
|
250
|
+
)
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
class SouthPolarAzimuthalEquidistant(AzimuthalEquidistant):
|
|
254
|
+
"""
|
|
255
|
+
Analogous to `~cartopy.crs.SouthPolarStereo`.
|
|
256
|
+
"""
|
|
257
|
+
|
|
258
|
+
@docstring._snippet_manager
|
|
259
|
+
def __init__(self, central_longitude=0.0, globe=None):
|
|
260
|
+
"""
|
|
261
|
+
%(proj.init)s
|
|
262
|
+
"""
|
|
263
|
+
super().__init__(
|
|
264
|
+
central_latitude=-90, central_longitude=central_longitude, globe=globe
|
|
265
|
+
)
|
|
266
|
+
|
|
267
|
+
|
|
268
|
+
class NorthPolarLambertAzimuthalEqualArea(LambertAzimuthalEqualArea):
|
|
269
|
+
"""
|
|
270
|
+
Analogous to `~cartopy.crs.NorthPolarStereo`.
|
|
271
|
+
"""
|
|
272
|
+
|
|
273
|
+
@docstring._snippet_manager
|
|
274
|
+
def __init__(self, central_longitude=0.0, globe=None):
|
|
275
|
+
"""
|
|
276
|
+
%(proj.init)s
|
|
277
|
+
"""
|
|
278
|
+
super().__init__(
|
|
279
|
+
central_latitude=90, central_longitude=central_longitude, globe=globe
|
|
280
|
+
)
|
|
281
|
+
|
|
282
|
+
|
|
283
|
+
class SouthPolarLambertAzimuthalEqualArea(LambertAzimuthalEqualArea):
|
|
284
|
+
"""
|
|
285
|
+
Analogous to `~cartopy.crs.SouthPolarStereo`.
|
|
286
|
+
"""
|
|
287
|
+
|
|
288
|
+
@docstring._snippet_manager
|
|
289
|
+
def __init__(self, central_longitude=0.0, globe=None):
|
|
290
|
+
"""
|
|
291
|
+
%(proj.init)s
|
|
292
|
+
"""
|
|
293
|
+
super().__init__(
|
|
294
|
+
central_latitude=-90, central_longitude=central_longitude, globe=globe
|
|
295
|
+
)
|
|
296
|
+
|
|
297
|
+
|
|
298
|
+
class NorthPolarGnomonic(Gnomonic):
|
|
299
|
+
"""
|
|
300
|
+
Analogous to `~cartopy.crs.NorthPolarStereo`.
|
|
301
|
+
"""
|
|
302
|
+
|
|
303
|
+
@docstring._snippet_manager
|
|
304
|
+
def __init__(self, central_longitude=0.0, globe=None):
|
|
305
|
+
"""
|
|
306
|
+
%(proj.init)s
|
|
307
|
+
"""
|
|
308
|
+
super().__init__(
|
|
309
|
+
central_latitude=90, central_longitude=central_longitude, globe=globe
|
|
310
|
+
)
|
|
311
|
+
|
|
312
|
+
|
|
313
|
+
class SouthPolarGnomonic(Gnomonic):
|
|
314
|
+
"""
|
|
315
|
+
Analogous to `~cartopy.crs.SouthPolarStereo`.
|
|
316
|
+
"""
|
|
317
|
+
|
|
318
|
+
@docstring._snippet_manager
|
|
319
|
+
def __init__(self, central_longitude=0.0, globe=None):
|
|
320
|
+
"""
|
|
321
|
+
%(proj.init)s
|
|
322
|
+
"""
|
|
323
|
+
super().__init__(
|
|
324
|
+
central_latitude=-90, central_longitude=central_longitude, globe=globe
|
|
325
|
+
)
|