| Server IP : 202.61.199.114 / Your IP : 216.73.217.139 Web Server : nginx/1.22.1 System : Linux de.arni-solutions.de 6.1.0-49-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.174-1 (2026-05-26) x86_64 User : web20 ( 1018) PHP Version : 8.4.23 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/local/lib/python3.9/dist-packages/matplotlib/__pycache__/ |
Upload File : |
a
���h�� � @ sV d Z ddlZddlZddlZddlZddlZddlZddlm Z ddl
mZ ddlm
Z
mZmZ ddlmZ dZd d
� ZG dd� d�ZG d
d� de�Ze�ejejg�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�ZG dd� de�Z G dd � d e�Z!G d!d"� d"�Z"G d#d$� d$e"e�Z#G d%d&� d&e"e�Z$d'd(� Z%G d)d*� d*e�Z&G d+d,� d,e�Z'd-d.� Z(G d/d0� d0e�Z)G d1d2� d2e�Z*e�+d3�G d4d5� d5e*��Z,G d6d7� d7e�Z-G d8d9� d9e�Z.G d:d;� d;e�Z/G d<d=� d=e�Z0G d>d?� d?e0�Z1dPdCdD�Z2dEdF� Z3dQdHdI�Z4dJdK� Z5dRdNdO�Z6dS )Sa
Matplotlib includes a framework for arbitrary geometric
transformations that is used determine the final position of all
elements drawn on the canvas.
Transforms are composed into trees of `TransformNode` objects
whose actual value depends on their children. When the contents of
children change, their parents are automatically invalidated. The
next time an invalidated transform is accessed, it is recomputed to
reflect those changes. This invalidation/caching approach prevents
unnecessary recomputations of transforms, and contributes to better
interactive performance.
For example, here is a graph of the transform tree used to plot data
to the graph:
.. image:: ../_static/transforms.png
The framework can be used for both affine and non-affine
transformations. However, for speed, we want to use the backend
renderers to perform affine transformations whenever possible.
Therefore, it is possible to perform just the affine or non-affine
part of a transformation on a set of data. The affine is always
assumed to occur after the non-affine. For any transform::
full transform == non-affine part + affine part
The backends are not expected to handle non-affine transformations
themselves.
See the tutorial :ref:`transforms_tutorial` for examples
of how to use transforms.
� N)�inv)�_api)�affine_transform�count_bboxes_overlapping_bbox�update_path_extents� )�PathFc s* t jtjdd��dd� �� ���fdd�S )a+
Generate a ``__str__`` method for a `.Transform` subclass.
After ::
class T:
__str__ = _make_str_method("attr", key="other")
``str(T(...))`` will be
.. code-block:: text
{type(T).__name__}(
{self.attr},
key={self.other})
z )�prefixc S s t | t�rt| �S t| �S �N)�
isinstance�str�repr)�x� r �?/usr/local/lib/python3.9/dist-packages/matplotlib/transforms.py�strreprJ � z!_make_str_method.<locals>.strreprc sL t � �jd d�g �� �fdd��D ���� �fdd���� D ��� d S )N�(�,c 3 s$ | ]}� d �t �|�� �V qdS )�
N��getattr)�.0�arg��indent�selfr r r � <genexpr>M s �z5_make_str_method.<locals>.<lambda>.<locals>.<genexpr>c 3 s0 | ](\}}� d | d �t �|�� �V qdS )r �=Nr )r �kr r r r r O s ��))�type�__name__�join�items�r ��argsr �kwargsr r% r �<lambda>K s �����z"_make_str_method.<locals>.<lambda>)� functools�partial�textwrapr )r'