Skip to content

Organize documentation and sync ipython notebooks instead of nbconvert-generated RST files #47

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 151 commits into from
Nov 27, 2019
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
151 commits
Select commit Hold shift + click to select a range
0422fbb
Initial pull request
lukelbd Sep 18, 2019
baabc93
Merge pull request #55 from lukelbd/2dlatlon-bug
lukelbd Oct 21, 2019
dc48320
Construct base class skeletons and add folder search funcs
lukelbd Oct 22, 2019
8a4956e
Move config files and standardize searching locations
lukelbd Oct 24, 2019
8addbd0
Code quality changes
lukelbd Oct 24, 2019
b48f147
Cleanup, flesh out base classes
lukelbd Oct 25, 2019
a64a18e
Default transform bugfix
lukelbd Oct 25, 2019
473c489
Define wrappers on BasemapAxes for consistency with CartopyAxes
lukelbd Oct 25, 2019
9b720aa
Update docs regarding .proplotrc
lukelbd Oct 25, 2019
3bffca3
Update rcdocs
lukelbd Oct 25, 2019
4425813
Merge branch 'master' into custom-cmaps-cycles
lukelbd Oct 25, 2019
e9b2bea
Implement colormap modifying features on classes
lukelbd Oct 28, 2019
771dddb
Cleanup
lukelbd Oct 28, 2019
d6cd771
Revert to old config file/folder layout
lukelbd Oct 28, 2019
42ef8c2
Fill default ~/.proplotrc file with commented out lines
lukelbd Oct 28, 2019
f835850
Rename rc categories
lukelbd Oct 28, 2019
f11c283
Cleanup
lukelbd Oct 28, 2019
33e384c
Rename rc dicts again
lukelbd Oct 28, 2019
1203055
Rename Colormap.copy() --> from_cmap(), cleanup
lukelbd Oct 28, 2019
4b6d1a5
Bugfix
lukelbd Oct 28, 2019
47dd70f
Segmentdata bugs
lukelbd Oct 28, 2019
fab23de
Cleanup and standardize names
lukelbd Oct 29, 2019
5974268
Make concatenate + copy non-static, misc bugfixes
lukelbd Oct 29, 2019
fd420c6
Remove duplicate reverse features, more misc bugfixes
lukelbd Oct 29, 2019
ceb98fd
Various bugfixes (from testing colors.ipynb)
lukelbd Oct 29, 2019
683c6d7
Address codacy complaints
lukelbd Oct 29, 2019
49ef944
Update docs, fix save methods, add __repr__
lukelbd Oct 29, 2019
a4b9b6d
Fix save() bug, tweak __repr__()
lukelbd Oct 30, 2019
fd79457
Unused import
lukelbd Oct 30, 2019
31439dd
Merge pull request #57 from lukelbd/custom-cmaps-cycles
lukelbd Oct 30, 2019
0fe3bfc
Add new classes to __all__
lukelbd Oct 30, 2019
e1712e7
Repair save() docs
lukelbd Oct 30, 2019
f32e950
Fix merge conflict
lukelbd Oct 30, 2019
923f6b4
Cleanup save() extensions table
lukelbd Oct 30, 2019
704c7d3
Merge branch 'master' into dualax-factoryfunc-fixes
lukelbd Oct 30, 2019
629cf55
Typo in save() docs
lukelbd Oct 30, 2019
5ae9b22
Fix sphinx links
lukelbd Oct 30, 2019
5e61499
Plural classes
lukelbd Oct 30, 2019
26fae3b
Rename Colormap.copy --> Colormap.new, cleanup benchmarking code
lukelbd Oct 30, 2019
8984497
CmapDict docs
lukelbd Oct 30, 2019
894e454
ColorCacheDict docs
lukelbd Oct 30, 2019
89db9c0
ColorCacheDict docs
lukelbd Oct 30, 2019
200c2c9
Merge branch 'master' into dualax-factoryfunc-fixes
lukelbd Oct 30, 2019
774e7f8
Change back dualx/dualy syntax
lukelbd Oct 30, 2019
ee43c53
Fix bugs due to resetting scale at drawtime
lukelbd Oct 30, 2019
02bd8fe
Add back gridliner label warnings
lukelbd Oct 30, 2019
09ed143
Update notebooks
lukelbd Oct 30, 2019
f5eff48
Implement log/symlog formatter overrides on classes
lukelbd Oct 30, 2019
552a2a4
Merge pull request #52 from lukelbd/dualax-factoryfunc-fixes
lukelbd Oct 30, 2019
4a1247b
Use mixin _Scale class, better default dualx/y locators/formatters
lukelbd Oct 30, 2019
0ea6609
Dualx/y bugfix
lukelbd Oct 30, 2019
ef51e0f
Update cartesian axes examples
lukelbd Oct 31, 2019
a2708f6
Add ETA to README
lukelbd Oct 31, 2019
20a354c
Rename _Scale-->_ScaleBase
lukelbd Oct 31, 2019
633b0ad
Move notebooks folders
lukelbd Oct 31, 2019
53142b3
Colormap() converts input matplotlib cmaps to subclass
lukelbd Oct 31, 2019
170e51d
Remove commented out code from panels-to-parasites
lukelbd Oct 31, 2019
6e98b80
Fix CartopyAxes.text() bug
lukelbd Oct 31, 2019
b547de2
Fix lonlines bug
lukelbd Oct 31, 2019
d7430ba
Default cartopy transform bugfix
lukelbd Nov 1, 2019
9ce261b
Update geophysical data example
lukelbd Nov 1, 2019
1027fb3
Permit loading arbitrary colormap files
lukelbd Nov 6, 2019
86f35f1
Rename new() --> updated()
lukelbd Nov 11, 2019
b6fbd42
Merge branch 'master' into nbsphinx-docs
lukelbd Nov 13, 2019
56c945a
Restructure docs, add new pages
lukelbd Nov 13, 2019
f1f9c6f
Add git comments to why-proplot
lukelbd Nov 13, 2019
42d81f3
Why proplot section
lukelbd Nov 13, 2019
645ad8e
Why proplot
lukelbd Nov 15, 2019
4ca91e6
Various changes, fix Parameters tables
lukelbd Nov 16, 2019
20fb6f6
Update from stash
lukelbd Nov 16, 2019
010b1cc
Revert back to :parameters: so can list multiple params at once
lukelbd Nov 17, 2019
e285557
Add light theme stylesheet, remove unused rtd clone
lukelbd Nov 18, 2019
cda6963
Fix light theme sidebar
lukelbd Nov 18, 2019
a1e703b
Light mode final CSS edits
lukelbd Nov 18, 2019
b42fd81
Slightly darker background
lukelbd Nov 18, 2019
050e0eb
Make table colors grayscale
lukelbd Nov 18, 2019
63d1311
Contribute instructions
lukelbd Nov 18, 2019
20b4fdb
Lots of writing
lukelbd Nov 18, 2019
0e7940c
My hands are writing words
lukelbd Nov 18, 2019
d1ca33e
My hands are writing words
lukelbd Nov 18, 2019
67243e1
Initial commit of notebook files
lukelbd Nov 18, 2019
6749022
Use nbsphinx fork
lukelbd Nov 18, 2019
4a6e609
Set markdown cells to raw+RST, no more nbsphinx fork
lukelbd Nov 18, 2019
fc7747b
Travis CI
lukelbd Nov 18, 2019
45c6d5c
Link fixes, minor CSS changes, overview edits
lukelbd Nov 18, 2019
252244d
Parameter header edits
lukelbd Nov 18, 2019
d40a441
Add to quick overview, various other changes
lukelbd Nov 18, 2019
63cc63e
Links, better homepage, axistools cleanup
lukelbd Nov 19, 2019
43f7767
Quick overview and links cleanup
lukelbd Nov 19, 2019
5a53690
Split user guide notebooks into smaller sections
lukelbd Nov 19, 2019
c5e83a2
Contribution guide
lukelbd Nov 19, 2019
3288d58
proj.py docs
lukelbd Nov 19, 2019
c1f843a
API ref main page
lukelbd Nov 19, 2019
1a95106
Split up figure notebook sections
lukelbd Nov 19, 2019
4021238
Compare APIs in why-proplot, not user guide
lukelbd Nov 19, 2019
9c0781a
Split color usage notebook into 3 notebooks
lukelbd Nov 19, 2019
c12451c
Rename the axes classes
lukelbd Nov 19, 2019
c3a1aa5
Better admonition blocks, fix broken links
lukelbd Nov 19, 2019
120501c
Thinner tables, docs cleanup
lukelbd Nov 19, 2019
1060158
External links
lukelbd Nov 19, 2019
d0db1bf
Docs cleanup, add manifest, add INSTALL.rst
lukelbd Nov 20, 2019
0148841
Why proplot
lukelbd Nov 20, 2019
f28706f
Misc docs changes
lukelbd Nov 20, 2019
b270941
Fix notebook links, rename cmapline --> parametric
lukelbd Nov 20, 2019
cbb956b
Add parametric method to docs
lukelbd Nov 20, 2019
a1330ef
Fix wrapper docs links
lukelbd Nov 20, 2019
5459654
Fix sidebar colors for deeply nested entries
lukelbd Nov 20, 2019
33074ee
Figures notebook cleanup
lukelbd Nov 20, 2019
3015729
Tight layout notebook
lukelbd Nov 20, 2019
3554b57
Remove add-subplot workflow refs, fix sidebar colors/buttons
lukelbd Nov 20, 2019
7b49a86
Remove remaining add-subplot refs
lukelbd Nov 21, 2019
7b07b4a
subplots() docstring
lukelbd Nov 21, 2019
97d4ec7
Dark/light mode toggle (!), zerotrim bugfix
lukelbd Nov 24, 2019
0da79e3
API page changes
lukelbd Nov 24, 2019
a9673e5
Minor changes
lukelbd Nov 24, 2019
3f7f337
Stop documenting Circle() func
lukelbd Nov 24, 2019
4631ee7
Really fix zerotrim
lukelbd Nov 24, 2019
d3b0f0b
Faq, overview, fix links, align nbsphinx output
lukelbd Nov 24, 2019
f99fbdc
Dark/light mode toggles pygments stylesheet (!)
lukelbd Nov 24, 2019
c922439
Fix dark-light toggler
lukelbd Nov 24, 2019
bccf8d7
Use rubric:: for API page subheaders
lukelbd Nov 24, 2019
76c79e5
Style tweaks, misc changes
lukelbd Nov 24, 2019
ef7843e
Style tweaks, misc changes
lukelbd Nov 24, 2019
29ea57e
Use local pygment css files, cleanup, tweaks
lukelbd Nov 24, 2019
75ce94f
Test
lukelbd Nov 24, 2019
506c491
Larger fonts in examples, docs cleanup, custom_roles cleanup, misc bu…
lukelbd Nov 25, 2019
6b79f2f
Clean notebook output
lukelbd Nov 25, 2019
f47345d
Update contribution instructions
lukelbd Nov 25, 2019
98f9652
Fix merge conflict
lukelbd Nov 25, 2019
d6a7c5a
Stylesheet bugfixes
lukelbd Nov 25, 2019
fb64eb0
Overview, faq, why proplot
lukelbd Nov 25, 2019
8bbe050
Remove units section
lukelbd Nov 25, 2019
efb4475
Why proplot
lukelbd Nov 25, 2019
e43db85
Why proplot
lukelbd Nov 25, 2019
cebc74e
Why proplot
lukelbd Nov 25, 2019
62d94e0
Codacy complaints
lukelbd Nov 25, 2019
2c1e3e1
Why and overview
lukelbd Nov 25, 2019
6736ea6
Overview and why-proplot, split nb_setup() into 3 funcs
lukelbd Nov 26, 2019
e9e8634
Why proplot
lukelbd Nov 26, 2019
53aff70
Code qaulity, Colormap.from_list improvements, cyclic + transparent m…
lukelbd Nov 27, 2019
b08e52d
Merge branch 'master' into nbsphinx-docs
lukelbd Nov 27, 2019
1f4ba46
Physical units descrip
lukelbd Nov 27, 2019
f1d2e9d
Physical units
lukelbd Nov 27, 2019
0d5127e
Remove 'default' formatter, code quality fixes
lukelbd Nov 27, 2019
acffc34
Use setuptools_scm, no more hardcoded version / MANIFEST
lukelbd Nov 27, 2019
8743b85
Travis fix (just notebooks for now)
lukelbd Nov 27, 2019
b49f54f
Fix sphinx-build requirements
lukelbd Nov 27, 2019
ab0ca7e
Use conda for documentation build reqs
lukelbd Nov 27, 2019
c7dbcae
Fix conda activate
lukelbd Nov 27, 2019
d34d888
Fix proplot not found issue
lukelbd Nov 27, 2019
0c6d581
Bugfix (travis caught it! awesome!)
lukelbd Nov 27, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Quick overview and links cleanup
  • Loading branch information
lukelbd committed Nov 19, 2019
commit 43f7767a24fb8fd319a72b0c29fd45aee44e4a18
25 changes: 11 additions & 14 deletions docs/external-links.rst
Original file line number Diff line number Diff line change
Expand Up @@ -8,36 +8,36 @@ or are directly used by ProPlot.

Python packages
===============
* `matplotlib <https://matplotlib.org>`__ - The powerful, comprehensive plotting package that we all know and love.
* `xarray <http://xarray.pydata.org/en/stable/api.html>`__ - The venerable NetCDF data package. If you haven't heard of it and you work with NetCDF files, it will change your life.
* `pandas <https://pandas.pydata.org>`__ - Package that turns spreadsheets and tables into annotated numpy arrays. Invaluable for certain types of data.
* `matplotlib <https://matplotlib.org>`__ - The venerable plotting package that we all know and love.
* `xarray <http://xarray.pydata.org/en/stable/api.html>`__ - Package for working with annotated ND numpy arrays. If you haven't heard of it and you work with NetCDF files, it will change your life.
* `pandas <https://pandas.pydata.org>`__ - Package that turns spreadsheets and tables into annotated 2D numpy arrays. Invaluable for certain types of data.
* `seaborn <https://seaborn.pydata.org>`__ - A statistical data visualization package. It has some awesome features, but few people in my field use it because it is geared more toward statistical data than geophysical data and other data types.

Downloadable Colormaps
Downloadable colormaps
======================
The following colormap repositories are
imported and registered by ProPlot.

#. `Color Brewer <http://colorbrewer2.org/#type=sequential&scheme=BuGn&n=3>`__ - The O.G. perceptually uniform colormap distribution. These are included with the matplotlib distribution.
#. `cmocean <https://matplotlib.org/cmocean/>`__ - Perceptually uniform colormaps designed for oceangoraphy, but suitable for plenty of other applications.
#. `cmocean <https://matplotlib.org/cmocean/>`__ - Perceptually uniform colormaps designed for oceanography, but suitable for plenty of other applications.
#. `SciVisColor <https://sciviscolor.org/>`__ - Science-focused colormaps created by the viz team at UT Austin. Provides tools for *merging* and *combining* colormaps, suitable for complex datasets with weird distributions.
#. `Fabio Crameri <http://www.fabiocrameri.ch/colourmaps.php>`__ - Perceptually uniform colormaps for geosciences.

Design Your Own Colormaps
=========================
Tools for making new colormaps
==============================

Resources for making your own colormaps from scratch.
Use these resources to make colormaps from scratch.

#. `Proplot API <https://proplot.readthedocs.io/en/latest/colors.html#making-your-own-colormaps>`__
#. `HCL Picker <http://tristen.ca/hcl-picker/#/hlc/6/1/15534C/E2E062>`__
#. `Chroma.js <https://gka.github.io/palettes/>`__
#. `HCL Wizard <http://hclwizard.org:64230/hclwizard/>`__
#. `SciVisColor <https://sciviscolor.org/home/colormoves/>`__

Design Your Own Color Cycles
============================
Tools for making new color cycles
=================================

Resources for making your own color cycles from scratch.
Use these resources to make color cycles from scratch.

#. `Proplot API <https://proplot.readthedocs.io/en/latest/colors.html#making-your-own-color-cycles>`__
#. `Color Cycle Picker <https://colorcyclepicker.mpetroff.net/>`__
Expand All @@ -48,6 +48,3 @@ Resources for making your own color cycles from scratch.
#. `Adobe Color <https://color.adobe.com/explore>`__





11 changes: 0 additions & 11 deletions docs/importing.rst

This file was deleted.

59 changes: 32 additions & 27 deletions docs/quick-overview.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,18 @@
Quick overview
==============

.. include:: importing.rst

Color usage tools
Importing proplot
=================

When you import proplot:
We recommend importing ProPlot with

.. code-block:: python

* A bunch of new colormaps, property cyclers, color names, and fonts are registered and some default settings are changed.
* New tools for visualizing, creating, and modifying colormaps and property cyclers are registered.
import proplot as plot

This differentiates ProPlot from the usual ``plt`` abbreviation used for the `~matplotlib.pyplot` module.

Importing proplot immediately adds a bunch of new colormaps, property cyclers, color names, and fonts to matplotlib and changes some default settings.
If this is all you want and you don't care about the plotting features, simply
``import proplot`` at the top of your script. See :ref:`Color usage`, `~proplot.styletools.register_cmaps`, `~proplot.styletools.register_cycles`, `~proplot.styletools.register_colors`, and `~proplot.styletools.register_fonts` for details.

Expand All @@ -20,10 +22,11 @@ Top-level commands

ProPlot's features derive from the `~proplot.subplots.subplots` and `~proplot.subplots.figure` commands, inspired
by the pyplot `~matplotlib.pyplot.subplots` and `~matplotlib.pyplot.figure`
commands.
This creates a special `~proplot.subplots.Figure` subclass, whose `~proplot.subplots.Figure.add_subplot` method draws special `~proplot.axes.Axes` subclasses.
commands. These create a `~proplot.subplots.Figure` subclass
that generates special `~proplot.axes.Axes` subclasses
when `~proplot.subplots.Figure.add_subplot` is called.

The features provided by `~proplot.subplots.subplots` and `~proplot.subplots.figure` are numerous; check out the :ref:`Introduction` and the :ref:`API reference`.
The features provided by `~proplot.subplots.subplots` and `~proplot.subplots.figure` are numerous. One highlight is the new `tight layout <https://matplotlib.org/3.1.1/tutorials/intermediate/tight_layout_guide.html>`__ algorithm applied to all figures by default. This allows the figure width and height to vary so that subplot aspect ratios remain fixed, which is particularly useful for grids of map projections and images. Arbitrary physical units, including *metric* units like ``cm`` and ``mm``, can be used for sizing arguments.

Figure and axes commands
========================
Expand All @@ -32,27 +35,29 @@ override various matplotlib methods to implement tons of useful features.

The most important new method is `~proplot.axes.Axes.format`. This is available on every axes subclass generated by proplot -- `~proplot.axes.CartesianAxes`, `~proplot.axes.PolarAxes`, and `~proplot.axes.ProjectionAxes`. Use this method to fine-tune your axis properties, titles, labels, limits, arbitrary settings, and much much more. Think of this as an improved version of the `~matplotlib.artist.Artist` `~matplotlib.artist.Artist.update` method.

ProPlot also introduces helpful `~proplot.axistools.Locator`, `~proplot.axistools.Formatter`, `~proplot.axistools.Scale`, `~proplot.projs.Proj`, `~proplot.styletools.Norm`, `~proplot.styletools.Colormap`, and `~proplot.styletools.Cycle` constructor functions. These are used to interpret keyword arguments supplied to `~proplot.axes.Axes.format`, `~proplot.figure.Figure.subplots`, and various plotting commands. This means more flexibility and less boilerplate code.

Automatic layout
================
ProPlot implements a new `tight layout <https://matplotlib.org/3.1.1/tutorials/intermediate/tight_layout_guide.html>`__ algorithm and automatically applies it by default. The figure width and height are allowed to vary so that subplot aspect ratios remain fixed, which is particularly useful for grids of map projections and images. Arbitrary physical units, including *metric* units like ``cm`` and ``mm``, can be used for sizing arguments.
Edge stacks
===========
Proplot adds new `~proplot.axes.Axes` `~proplot.axes.Axes.colorbar` and `~proplot.axes.Axes.legend` commands and `~proplot.subplots.Figure` `~proplot.subplots.Figure.colorbar` and `~proplot.subplots.Figure.legend` commands that make adding colorbars and legends to the *outside* of axes simple.

The `~proplot.subplots.Figure` methods align objects with respect to the subplot grid, rather than the figure bounds. You can also make inset colorbars, make colorbars from lists of lines or colors, and make legends with centered rows instead of aligned columns.

Automatic labelling
===================
ProPlot automatically applies axis labels, tick labels, titles, colorbar labels, and legend labels when you pass an `xarray.DataArray`, `pandas.DataFrame`, or `pandas.Series` object to any plotting command. This works just like the native `xarray.DataRray.plot` and `pandas.DataFrame.plot` methods.
Integration with other packages
===============================
ProPlot includes integration with `xarray`, `pandas`, `cartopy`, and `~mpl_toolkits.basemap`:

Side stacks
===========
Proplot adds new `~proplot.axes.Axes` `~proplot.axes.Axes.colorbar` and `~proplot.axes.Axes.legend` commands and `~proplot.subplots.Figure` `~proplot.subplots.Figure.colorbar` and `~proplot.subplots.Figure.legend` commands that make adding colorbars and legends to the *outside* of axes simple. It centers them with respect to the subplot grid. You can also make **inset** colorbars, colorbars from list of lines or colors, and legends with centered rows instead of aligned columns.
* Axis labels, tick labels, titles, colorbar labels, and legend labels are automatically applied when you pass an `xarray.DataArray`, `pandas.DataFrame`, or `pandas.Series` object to any plotting command. This works just like the native `xarray.DataArray.plot` and `pandas.DataFrame.plot` methods.
* The `~proplot.projs.Proj` function lets you make arbitrary grids of map projections by passing a `proj` name to `~proplot.subplots.Figure.add_subplot` or `~proplot.subplots.Figure.subplots`. The resulting axes are instances of `~proplot.axes.ProjectionAxes` with `~proplot.axes.ProjectionAxes.format` that can be used to add geographic features and custom meridian and parallel gridlines.

Styling your figures
====================
Beautiful new colormaps, named "color cycles", and easy-to-remember color names. Tools for merging colormaps and making new "perceptually uniform" colormaps on-the-fly. Tools for slicing and modifying existing colormaps.
Additional tools
================
ProPlot includes a bunch of additional tools outside
of the `~proplot.subplots.Figure` and `~proplot.axes.Axes` subclasses:

You can customize global settings with a user ``.proplotrc`` file. Save custom colormaps, color cycles, and fonts in a user ``.proplot`` folder, and they will be loaded every time on startup.
* The `~proplot.styletools.Colormap` and `~proplot.styletools.Cycle` constructor functions. These can slice, merge, and modify colormaps and color cycles.
* The `~proplot.styletools.LinearSegmentedColormap` and `~proplot.styletools.ListedColormap` subclasses. These are used to wrap the default matplotlib colormaps.
* The new `~proplot.styletools.PerceptuallyUniformColormap` class, used for creating arbitrary colormaps with perceptually uniform transitions.
* The `~proplot.rctools.rc` object, an instance of `~proplot.rctools.rc_configurator`, for modifying global settings. You can also control settings with a ``~/.proplotrc`` file. See :ref:`Configuring proplot` for details.
* The `~proplot.axistools.Locator`, `~proplot.axistools.Formatter`, and `~proplot.axistools.Scale` constructor functions, used to generate class instances from variable input types. These are used to interpret keyword arguments passed to `~proplot.axes.Axes.format` and `~proplot.subplots.Figure.colorbar`.
* The `~proplot.projs.Proj` constructor function, used to generate basemap `~mpl_toolkits.basemap.Basemap` and cartopy `~cartopy.crs.Projection` instances from shorthand projection names.
* The `~proplot.styletools.Norm` constructor function, used to generated colormap normalizers from shorthand names; the `~proplot.styletools.LinearSegmentedNorm` normalizer, used to scale colors evenly w.r.t. index for arbitrarily spaced monotonic levels; and the `~proplot.styletools.BinNorm` meta-normalizer, used to discretized colormap colors.

Cartopy and basemap intergration
================================
Generate arbitrary grids of arbitrary map projections in one go. Switch between the cartopy and basemap backends painlessly. Simplified plotting commands. Add geographic features and custom meridian and parallel gridlines and labels with the `~proplot.ProjectionAxes.format` command.