Source code for matplotlib.projections

from .. import axes, docstring, cbook
from .geo import AitoffAxes, HammerAxes, LambertAxes, MollweideAxes
from .polar import PolarAxes
from mpl_toolkits.mplot3d import Axes3D


[docs]class ProjectionRegistry: """A mapping of registered projection names to projection classes.""" def __init__(self): self._all_projection_types = {}
[docs] def register(self, *projections): """Register a new set of projections.""" for projection in projections: name = projection.name self._all_projection_types[name] = projection
[docs] def get_projection_class(self, name): """Get a projection class from its *name*.""" return self._all_projection_types[name]
[docs] def get_projection_names(self): """Return the names of all projections currently registered.""" return sorted(self._all_projection_types)
projection_registry = ProjectionRegistry() projection_registry.register( axes.Axes, PolarAxes, AitoffAxes, HammerAxes, LambertAxes, MollweideAxes, Axes3D, )
[docs]def register_projection(cls): projection_registry.register(cls)
[docs]def get_projection_class(projection=None): """ Get a projection class from its name. If *projection* is None, a standard rectilinear projection is returned. """ if projection is None: projection = 'rectilinear' try: return projection_registry.get_projection_class(projection) except KeyError: raise ValueError("Unknown projection %r" % projection)
[docs]@cbook.deprecated("3.1") def process_projection_requirements(figure, *args, **kwargs): return figure._process_projection_requirements(*args, **kwargs)
get_projection_names = projection_registry.get_projection_names docstring.interpd.update(projection_names=get_projection_names())