matplotlib.path
#
Un módulo para tratar con las polilíneas utilizadas en Matplotlib.
La clase principal para el manejo de polilíneas en Matplotlib es Path
. Casi todos los dibujos vectoriales utilizan Path
s en algún lugar de la tubería de dibujo.
Si bien una Path
instancia en sí no se puede dibujar, algunas Artist
subclases, como PathPatch
y PathCollection
, se pueden usar para una Path
visualización conveniente.
- clase matplotlib.ruta. Ruta ( vértices , códigos = Ninguno , _interpolation_steps = 1 , cerrado = Falso , solo lectura = Falso ) [fuente] #
Bases:
object
Una serie de segmentos de línea y curva posiblemente desconectados, posiblemente cerrados.
El almacenamiento subyacente se compone de dos matrices numpy paralelas:
vertices : una matriz flotante Nx2 de vértices
códigos : una matriz uint8 de longitud N de códigos de ruta, o Ninguno
Estas dos matrices siempre tienen la misma longitud en la primera dimensión. Por ejemplo, para representar una curva cúbica, debe proporcionar tres vértices y tres
CURVE4
códigos.Los tipos de código son:
STOP
1 vértice (ignorado)Un marcador para el final de toda la ruta (actualmente no se requiere y se ignora)
MOVETO
1 vérticeRecoge el bolígrafo y muévete al vértice dado.
LINETO
1 vérticeDibuja una línea desde la posición actual hasta el vértice dado.
CURVE3
1 punto de control, 1 punto finalDibuje una curva Bezier cuadrática desde la posición actual, con el punto de control dado, hasta el punto final dado.
CURVE4
2 puntos de control, 1 punto finalDibuje una curva Bezier cúbica desde la posición actual, con los puntos de control dados, hasta el punto final dado.
CLOSEPOLY
1 vértice (ignorado)Dibuja un segmento de línea hasta el punto inicial de la polilínea actual.
Si Codes es None, se interpreta como
MOVETO
seguido de una serie deLINETO
.Los usuarios de objetos Path no deben acceder directamente a los vértices y matrices de códigos. En su lugar, deberían usar
iter_segments
ocleaned
para obtener los pares de vértice/código. Esto ayuda, en particular, a manejar consistentemente el caso de que los códigos sean Ninguno.Algunos comportamientos de los objetos Path pueden controlarse mediante rcParams. Consulte los rcParams cuyas claves comienzan con 'ruta'.
Nota
Las matrices de vértices y códigos deben tratarse como inmutables: hay una serie de optimizaciones y suposiciones hechas por adelantado en el constructor que no cambiarán cuando cambien los datos.
Crea un nuevo camino con los vértices y códigos dados.
- Parámetros :
- vértices (N, 2) en forma de matriz
Los vértices de la ruta, como una matriz, una matriz enmascarada o una secuencia de pares. Los valores enmascarados, si los hay, se convertirán en NaN, que luego Agg PathIterator y otros consumidores de datos de ruta, como
iter_segments()
.- códigos tipo matriz o ninguno, opcional
Matriz de longitud N de números enteros que representan los códigos de la ruta. Si no es Ninguno, los códigos deben tener la misma longitud que los vértices. Si es Ninguno, los vértices se tratarán como una serie de segmentos de línea.
- _interpolation_steps int, opcional
Se utiliza como sugerencia para ciertas proyecciones, como Polar, de que esta ruta debe interpolarse linealmente inmediatamente antes de dibujar. Este atributo es principalmente un detalle de implementación y no está diseñado para uso público.
- bool cerrado , opcional
Si los códigos son Ninguno y cerrado es Verdadero, los vértices se tratarán como segmentos de línea de un polígono cerrado. Tenga en cuenta que el último vértice se ignorará (ya que el código correspondiente se establecerá en CLOSEPOLY).
- booleano de solo lectura , opcional
Hace que la ruta se comporte de forma inmutable y establece los vértices y los códigos como matrices de solo lectura.
- CLOSEPOLY = 79 #
- CURVA3 = 3 #
- CURVA4 = 4 #
- LINEA = 2 #
- MOVER A = 1 #
- NUM_VERTICES_FOR_CODE = {0: 1, 1: 1, 2: 1, 3: 2, 4: 3, 79: 1} #
Un diccionario que asigna códigos de ruta al número de vértices que espera el código.
- PARAR = 0 #
- arco de método de clase ( theta1 , theta2 , n = Ninguno , is_wedge = False ) [fuente] #
Devuelve a
Path
para el arco del círculo unitario desde los ángulos theta1 a theta2 (en grados).theta2 se desenvuelve para producir el arco más corto dentro de los 360 grados. Es decir, si theta2 > theta1 + 360, el arco será de theta1 a theta2 - 360 y no un círculo completo más alguna superposición adicional.
Si se proporciona n , es el número de segmentos de spline a realizar. Si no se proporciona n , el número de segmentos spline se determina en función del delta entre theta1 y theta2 .
Masionobe, L. 2003. Dibujar un arco elíptico utilizando polilíneas, curvas de Bézier cuadráticas o cúbicas .
- círculo de método de clase ( centro = (0.0, 0.0) , radio = 1.0 , solo lectura = Falso ) [fuente] #
Devuelve un
Path
que representa un círculo de un radio y centro dados.- Parámetros :
- centro (flotante, flotante), por defecto: (0, 0)
El centro del círculo.
- radio flotante, por defecto: 1
El radio del círculo.
- booleano de solo lectura
Indica si la ruta creada debe tener establecido el argumento "solo lectura" al crear la instancia de Path.
notas
El círculo se aproxima usando 8 curvas Bezier cúbicas, como se describe en
- limpiado ( transformar = Ninguno , eliminar_nans = Falso , recortar = Ninguno , * , simplificar = Falso , curvas = Falso , trazo_ancho = 1.0 , ajustar = Falso , boceto = Ninguno ) [fuente] #
Devuelve una nueva ruta con vértices y códigos limpios según los parámetros.
Ver también
Path.iter_segments
para obtener detalles de los argumentos de palabras clave.
- clip_to_bbox ( bbox , dentro = Verdadero ) [fuente] #
Recorte la ruta al cuadro delimitador dado.
El camino debe estar formado por uno o más polígonos cerrados. Este algoritmo no se comportará correctamente para rutas no cerradas.
Si está adentro
True
, sujételo al interior de la caja, de lo contrario, al exterior de la caja.
- código_tipo #
alias de
uint8
- códigos de propiedad #
La lista de códigos en
Path
como una matriz numérica 1D. Cada código es uno deSTOP
,MOVETO
,LINETO
, o . Para códigos que correspondan a más de un vértice ( y ), ese código se repetirá para que la longitud de y sea siempre la misma.CURVE3
CURVE4
CLOSEPOLY
CURVE3
CURVE4
vertices
codes
- contiene_ruta ( ruta , transformar = Ninguno ) [fuente] #
Devuelve si esta ruta (cerrada) contiene completamente la ruta dada.
Si transform no es
None
, la ruta se transformará antes de verificar la contención.
- contains_point ( punto , transformar = Ninguno , radio = 0.0 ) [fuente] #
Devuelve si el área encerrada por el camino contiene el punto dado.
El camino siempre se trata como cerrado; es decir, si el último código no es CLOSEPOLY, se asume un segmento implícito que conecta el último vértice con el primer vértice.
- Parámetros :
- punto (flotante, flotante)
El punto (x, y) a comprobar.
- transformar
matplotlib.transforms.Transform
, opcional Si no
None
, el punto se comparará conself
transformado por transformación ; es decir, para una verificación correcta, transform debe transformar la ruta en el sistema de coordenadas del punto .- radio flotante, por defecto: 0
Agregue un margen adicional en la ruta en las coordenadas del punto . La trayectoria se prolonga tangencialmente por radio/2 ; es decir, si dibujara la ruta con un ancho de línea de radio , todos los puntos de la línea aún se considerarían contenidos en el área. Por el contrario, los valores negativos reducen el área: los puntos en la línea imaginaria se considerarán fuera del área.
- Devoluciones :
- bool
notas
El algoritmo actual tiene algunas limitaciones:
El resultado es indefinido para puntos exactamente en el límite (es decir, en la ruta desplazada por el radio/2 ).
El resultado es indefinido si no hay un área cerrada, es decir, todos los vértices están en una línea recta.
Si las líneas delimitadoras comienzan a cruzarse entre sí debido al cambio de radio , no se garantiza que el resultado sea correcto.
- contains_points ( puntos , transformar = Ninguno , radio = 0.0 ) [fuente] #
Devuelve si el área encerrada por el camino contiene los puntos dados.
El camino siempre se trata como cerrado; es decir, si el último código no es CLOSEPOLY, se asume un segmento implícito que conecta el último vértice con el primer vértice.
- Parámetros :
- matriz de puntos (N, 2)
Los puntos a revisar. Las columnas contienen valores de x e y.
- transformar
matplotlib.transforms.Transform
, opcional Si no
None
, los puntos se compararánself
transformados por transformación ; es decir, para una verificación correcta, transform debe transformar la ruta en el sistema de coordenadas de puntos .- radio flotante, por defecto: 0
Agregue un margen adicional en la ruta en coordenadas de puntos . La trayectoria se prolonga tangencialmente por radio/2 ; es decir, si dibujara la ruta con un ancho de línea de radio , todos los puntos de la línea aún se considerarían contenidos en el área. Por el contrario, los valores negativos reducen el área: los puntos en la línea imaginaria se considerarán fuera del área.
- Devoluciones :
- matriz bool longitud-N
notas
El algoritmo actual tiene algunas limitaciones:
El resultado es indefinido para puntos exactamente en el límite (es decir, en la ruta desplazada por el radio/2 ).
El resultado es indefinido si no hay un área cerrada, es decir, todos los vértices están en una línea recta.
Si las líneas delimitadoras comienzan a cruzarse entre sí debido al cambio de radio , no se garantiza que el resultado sea correcto.
- copiar ( ) [fuente] #
Devuelve una copia superficial de
Path
, que compartirá los vértices y los códigos con la fuentePath
.
- copia profunda ( memorándum = Ninguno ) [fuente] #
Devolver una copia profunda del
Path
. NoPath
será de solo lectura, incluso si la fuentePath
lo es.
- get_extents ( transformar = Ninguno , ** kwargs ) [fuente] #
Obtener Bbox de la ruta.
- Parámetros :
- transformar matplotlib.transforms.Transform, opcional
Transforme para aplicar a la ruta antes de calcular las extensiones, si corresponde.
- **kwargs
Reenviado a
iter_bezier
.
- Devoluciones :
- matplotlib.transforms.Bbox
Las extensiones de la ruta Bbox([[xmin, ymin], [xmax, ymax]])
- sombreado estático ( patrón de sombreado , densidad = 6 ) [fuente] #
Dado un especificador de sombreado, patrón de sombreado , genera una ruta que se puede usar en un patrón de sombreado repetido. la densidad es el número de líneas por unidad cuadrada.
- interpolado ( pasos ) [fuente] #
Devuelve una nueva ruta remuestreada a una longitud de N x pasos.
Los códigos que no sean LINETO no se manejan correctamente.
- intersects_bbox ( bbox , lleno = Verdadero ) [fuente] #
Devuelve si este camino se cruza con un determinado
Bbox
.Si relleno es Verdadero, esto también devuelve Verdadero si la ruta encierra completamente
Bbox
(es decir, la ruta se trata como llena).El cuadro delimitador siempre se considera lleno.
- intersects_path ( otro , lleno = Verdadero ) [fuente] #
Devuelve si este camino se cruza con otro camino dado.
Si relleno es Verdadero, esto también devuelve Verdadero si una ruta encierra completamente a la otra (es decir, las rutas se tratan como llenas).
- iter_bezier ( ** kwargs ) [fuente] #
Iterar sobre cada curva Bezier (líneas incluidas) en una ruta.
- Parámetros :
- **kwargs
Reenviado a
iter_segments
.
- Rendimientos :
- B matplotlib.bezier.BezierSegment
Las curvas Bézier que forman la ruta actual. Tenga en cuenta en particular que los puntos independientes son curvas Bézier de orden 0 y las líneas son curvas Bézier de orden 1 (con dos puntos de control).
- código Path.code_type
El código que describe qué tipo de curva se devuelve. Path.MOVETO, Path.LINETO, Path.CURVE3, Path.CURVE4 corresponden a curvas Bézier con 1, 2, 3 y 4 puntos de control (respectivamente). Path.CLOSEPOLY es un Path.LINETO con los puntos de control elegidos correctamente en función de los puntos de inicio/fin del trazo actual.
- iter_segments ( transformar = Ninguno , remove_nans = True , clip = None , snap = False , stroke_width = 1.0 , simplificar = None , curves = True , sketch = None ) [fuente] #
Iterar sobre todos los segmentos de curva en la ruta.
Cada iteración devuelve un par , donde es una secuencia de 1-3 pares de coordenadas y es un código.
(vertices, code)
vertices
code
Path
Además, este método puede proporcionar una serie de conversiones y limpiezas estándar en la ruta.
- Parámetros :
- transformar Ninguno o
Transform
Si no es Ninguno, la transformación afín dada se aplicará a la ruta.
- remove_nans booleano , opcional
Ya sea para eliminar todos los NaN de la ruta y omitirlos usando los comandos MOVETO.
- clip Ninguno o (flotante, flotante, flotante, flotante), opcional
Si no es Ninguno, debe ser una tupla cuádruple (x1, y1, x2, y2) que defina un rectángulo en el que recortar la ruta.
- snap Ninguno o bool, opcional
Si es Verdadero, ajuste todos los nodos a píxeles; si es falso, no los rompa. Si es Ninguno, alinee si la ruta contiene solo segmentos paralelos a los ejes x o y, y no más de 1024 de ellos.
- stroke_width flotante, opcional
El ancho del trazo que se está dibujando (utilizado para ajustar la ruta).
- simplificar Ninguno o bool, opcional
Ya sea para simplificar la ruta eliminando vértices que no afectan su apariencia. Si ninguno, utilice el
should_simplify
atributo. Consulte tambiénrcParams["path.simplify"]
(predeterminado:True
) yrcParams["path.simplify_threshold"]
(predeterminado:0.111111111111
).- curvas bool, opcional
Si es True, los segmentos de curva se devolverán como segmentos de curva. Si es False, todas las curvas se convertirán en segmentos de línea.
- croquis Ninguno o secuencia, opcional
Si no es Ninguno, debe ser una tupla de 3 de la forma (escala, longitud, aleatoriedad), que representa los parámetros del boceto.
- transformar Ninguno o
- classmethod make_compound_path ( * argumentos ) [fuente] #
Haz un trazado compuesto a partir de una lista de
Path
objetos. Elimina a ciegas todosPath.STOP
los puntos de control.
- classmethod make_compound_path_from_polys ( XY ) [fuente] #
Cree un objeto de ruta compuesta para dibujar una cantidad de polígonos con la misma cantidad de lados. XY es una matriz de vértices (numpolys x numsides x 2). El objeto de retorno es un
Path
.( Código fuente , png )
- propiedad simplificar_umbral #
La fracción de diferencia de un píxel por debajo de la cual se simplificarán los vértices.
- to_polygons ( transformar = Ninguno , ancho = 0 , alto = 0 , cerrado_solo = Verdadero ) [fuente] #
Convierta esta ruta en una lista de polígonos o polilíneas. Cada polígono/polilínea es una matriz Nx2 de vértices. En otras palabras, cada polígono no tiene
MOVETO
instrucciones ni curvas. Esto es útil para mostrar en backends que no admiten rutas compuestas o curvas Bezier.Si el ancho y la altura son distintos de cero, las líneas se simplificarán para que los vértices fuera de (0, 0), (ancho, alto) se recorten.
Si closed_only es
True
(predeterminado), solo se devolverán los polígonos cerrados, siendo el último punto el mismo que el primero. Cualquier polilínea no cerrada en la ruta se cerrará explícitamente. Si closed_only esFalse
, todos los polígonos no cerrados de la ruta se devolverán como polígonos no cerrados, y los polígonos cerrados se devolverán explícitamente cerrados estableciendo el último punto como el primero.
- transformado ( transformar ) [fuente] #
Devuelve una copia transformada de la ruta.
Ver también
matplotlib.transforms.TransformedPath
Una clase de ruta especializada que almacenará en caché el resultado transformado y se actualizará automáticamente cuando cambie la transformación.
- classmethod unit_circle ( ) [fuente] #
Devuelve el valor de solo lectura
Path
del círculo unitario.Para la mayoría de los casos,
Path.circle()
será lo que quieras.
- classmethod unit_circle_righthalf ( ) [fuente] #
Devuelve a
Path
de la mitad derecha de un círculo unitario.Consulte
Path.circle
la referencia sobre la aproximación utilizada.
- classmethod unit_rectangle ( ) [fuente] #
Devuelve una
Path
instancia del rectángulo unitario de (0, 0) a (1, 1).
- classmethod unit_regular_asterisco ( numVertices ) [fuente] #
Devuelve a
Path
para un asterisco regular unitario con el número de vértices dado y un radio de 1,0, centrado en (0, 0).
- classmethod unit_regular_polygon ( numVertices ) [fuente] #
Retorna una
Path
instancia para un polígono regular unitario con los numVertices dados tal que el círculo que lo circunscribe tiene un radio de 1.0, centrado en (0, 0).
- classmethod unit_regular_star ( numVertices , innerCircle = 0.5 ) [fuente] #
Devuelve a
Path
para una estrella regular unitaria con el número de vértices dado y un radio de 1,0, centrada en (0, 0).
- cuña de método de clase ( theta1 , theta2 , n = Ninguno ) [fuente] #
Devuelve a
Path
para la cuña del círculo unitario desde los ángulos theta1 a theta2 (en grados).theta2 se desenvuelve para producir la cuña más corta dentro de los 360 grados. Es decir, si theta2 > theta1 + 360, la cuña será de theta1 a theta2 - 360 y no un círculo completo más una superposición adicional.
Si se proporciona n , es el número de segmentos de spline a realizar. Si no se proporciona n , el número de segmentos spline se determina en función del delta entre theta1 y theta2 .
Consulte
Path.arc
la referencia sobre la aproximación utilizada.
- matplotlib.ruta. get_path_collection_extents ( master_transform , paths , transforms , offsets , offset_transform ) [fuente] #
Dada una secuencia de
Path
s,Transform
s objetos y compensaciones, como se encuentra en aPathCollection
, devuelve el cuadro delimitador que los encapsula a todos.- Parámetros :
notas
La forma en que se combinan las rutas , las transformaciones y las compensaciones sigue el mismo método que para las colecciones: cada una se itera de forma independiente, por lo que si tiene 3 rutas, 2 transformaciones y 1 compensación, sus combinaciones son las siguientes:
(A, A, A), (B, B, A), (C, A, A)