
    
3js                        S r SSKJrJrJr  SSKJrJrJrJ	r	  SSK
Jr   SSKJr   " S
 S5      r\" 5       r\R'                  \R(                  \\\\\	5        \b  \R'                  \5        OCS rSS jr\R.                  r\R0                  R'                  \" 5       S9  g! \ a    SSKr\R                   " S	5        Sr Nf = f)a	  
Non-separable transforms that map from data space to screen space.

Projections are defined as `~.axes.Axes` subclasses.  They include the
following elements:

- A transformation from data coordinates into display coordinates.

- An inverse of that transformation.  This is used, for example, to convert
  mouse positions from screen space back into data space.

- Transformations for the gridlines, ticks and ticklabels.  Custom projections
  will often need to place these elements in special locations, and Matplotlib
  has a facility to help with doing so.

- Setting up default values (overriding `~.axes.Axes.cla`), since the defaults
  for a rectilinear Axes may not be appropriate.

- Defining the shape of the Axes, for example, an elliptical Axes, that will be
  used to draw the background of the plot and for clipping any data elements.

- Defining custom locators and formatters for the projection.  For example, in
  a geographic projection, it may be more convenient to display the grid in
  degrees, even if the data is in radians.

- Set up interactive panning and zooming.  This is left as an "advanced"
  feature left to the reader, but there is an example of this for polar plots
  in `matplotlib.projections.polar`.

- Any additional methods for additional convenience or features.

Once the projection Axes is defined, it can be used in one of two ways:

- By defining the class attribute ``name``, the projection Axes can be
  registered with `matplotlib.projections.register_projection` and subsequently
  simply invoked by name::

      fig.add_subplot(projection="my_proj_name")

- For more complex, parameterisable projections, a generic "projection" object
  may be defined which includes the method ``_as_mpl_axes``. ``_as_mpl_axes``
  should take no arguments and return the projection's Axes subclass and a
  dictionary of additional arguments to pass to the subclass' ``__init__``
  method.  Subsequently a parameterised projection can be initialised with::

      fig.add_subplot(projection=MyProjection(param1=param1_value))

  where MyProjection is an object which implements a ``_as_mpl_axes`` method.

A full-fledged and heavily annotated example is in
:doc:`/gallery/misc/custom_projection`.  The polar plot functionality in
`matplotlib.projections.polar` may also be of interest.
   )_apiaxes
_docstring   )
AitoffAxes
HammerAxesLambertAxesMollweideAxes)	PolarAxes    )Axes3DNzUnable to import Axes3D. This may be due to multiple versions of Matplotlib being installed (e.g. as a system package and as a pip package). As a result, the 3D projection is not available.c                   6    \ rS rSrSrS rS r\4S jrS r	Sr
g)	ProjectionRegistryE   z?A mapping of registered projection names to projection classes.c                     0 U l         g N_all_projection_typesselfs    Y/home/wildlama/miniconda3/lib/python3.13/site-packages/matplotlib/projections/__init__.py__init__ProjectionRegistry.__init__H   s
    %'"    c                 J    U H  nUR                   nX R                  U'   M     g)z"Register a new set of projections.N)namer   )r   projections
projectionr   s       r   registerProjectionRegistry.registerK   s#    %J??D/9&&t, &r   c                 B    [         R                  " U R                  UUS9$ )z'Get a projection class from its *name*.)
_error_clsr   )r   getitem_checkedr   )r   r   r"   s      r   get_projection_class'ProjectionRegistry.get_projection_classQ   s"    ##D$>$>:/35 	5r   c                 ,    [        U R                  5      $ )z9Return the names of all projections currently registered.)sortedr   r   s    r   get_projection_names'ProjectionRegistry.get_projection_namesV   s    d0011r   r   N)__name__
__module____qualname____firstlineno____doc__r   r   KeyErrorr$   r(   __static_attributes__ r   r   r   r   E   s    I(: 5= 5
2r   r   c                 .    [         R                  U 5        g r   )projection_registryr   )clss    r   register_projectionr5   k   s      %r   c                 <    U c  Sn [         R                  U [        S9$ )zp
Get a projection class from its name.

If *projection* is None, a standard rectilinear projection is returned.
rectilinear)r"   )r3   r$   
ValueError)r   s    r   r$   r$   o   s%     "
33J:3VVr   )projection_namesr   )r.    r   r   r   geor   r   r	   r
   polarr   mpl_toolkits.mplot3dr   	Exceptionwarningswarnr   r3   r   Axesr5   r$   r(   interpdr1   r   r   <module>rC      s   4l & % C C +2 2, )*    II 
  ( 	&	W +??  
    -A-C  D  MM O P Fs   B   C C