Matplotlib es una increíble biblioteca de visualización en Python para gráficos 2D de arrays. Matplotlib es una biblioteca de visualización de datos multiplataforma basada en arrays NumPy y diseñada para funcionar con la pila SciPy más amplia.
matplotlib.patches.ConnectionPatch
Matplotlib.patches.ConnectionPatch es una subclase de la clase matplotlib.patches.FancyArrowPatch y se usa para hacer líneas de conexión entre dos puntos.
Sintaxis: class matplotlib.patches.ConnectionPatch(xyA, xyB, coordsA, coordsB=Ninguno, axesA=Ninguno, axesB=Ninguno, arrowstyle=’-‘, arrow_transmuter=Ninguno, connectionstyle=’arc3’, conector=Ninguno, patchA=Ninguno , parcheB=Ninguno, encogerA=0.0, encogerB=0.0, escala_mutación=10.0, aspecto_mutación=Ninguno, clip_on=False, dpi_cor=1.0, **kwargs)
Parámetros:
- xyA: Es el punto de inicio de la línea de conexión en el gráfico xy también llamado Punto A.
- xyB: Es el punto de inicio de la línea de conexión en el gráfico xy también llamado Punto B.
- coordsA: Coordenada del punto A.
- coordsB: Coordenada del punto B.
- axesA: es el punto de inicio de la conexión de los ejes en la gráfica xy.
- axesB: Es el punto final de la conexión de ejes en la gráfica xy.
- arrowstyle: se utiliza para diseñar la flecha de conexión. Su tipo predeterminado es ‘-‘.
- arrow_transmuter: Se utiliza para ignorar una línea de conexión.
- estilo de conexión: describe cómo se conectan posA y posB . Puede ser una instancia de la clase ConnectionStyle o una string con el nombre de connectionstyle , tiene atributos opcionales separados por comas.
- conector: generalmente se ignora y decide qué conector ignorar.
- patchA: se usa para agregar parches en el punto A.
- patchB: se usa para agregar parches en el punto B
- encogerA: se utiliza para encoger el conector en el punto A.
- encogerB: se utiliza para encoger el conector en el punto B.
- escala_mutación : valor con el que se escalan los atributos de estiloflecha (p. ej., longitud_cabeza).
- mutación_aspecto: la altura del rectángulo se reducirá en este valor antes de la mutación y el cuadro mutado se estirará en el inverso.
- clip_on: establece si el artista usa recorte.
- dpi_cor: dpi_cor se usa actualmente para cosas relacionadas con el ancho de línea y el factor de reducción. La escala de mutación se ve afectada por esto.
La siguiente es una lista de claves válidas de Kwargs;
Llave | Descripción |
---|---|
estilo de flecha | el estilo de flecha |
Estilo de conexión | el estilo de conexión |
relpos | el valor predeterminado es (0.5, 0.5) |
parcheA | el valor predeterminado es el cuadro delimitador del texto |
parcheB | el valor predeterminado es Ninguno |
encogerA | el valor predeterminado es 2 puntos |
encogerB | el valor predeterminado es 2 puntos |
mutación_escala | el valor predeterminado es el tamaño del texto (en puntos) |
mutación_aspecto | el valor predeterminado es 1. |
? | cualquier clave para matplotlib.patches.PathPatch |
Las coordenadas de xyA y xyB se indican mediante una string coordsA y coordsB.
Propiedad | Descripción |
---|---|
‘puntos de figura’ | puntos de la esquina inferior izquierda de la figura |
‘píxeles de figura’ | píxeles de la esquina inferior izquierda de la figura |
‘fracción de figura’ | 0, 0 es la parte inferior izquierda de la figura y 1, 1 es la parte superior derecha |
‘puntos de ejes’ | puntos de la esquina inferior izquierda de los ejes |
‘píxeles de ejes’ | píxeles de la esquina inferior izquierda de los ejes |
‘fracción de ejes’ | 0, 0 es la parte inferior izquierda de los ejes y 1, 1 es la parte superior derecha |
‘datos’ | usar el sistema de coordenadas del objeto que se está anotando (predeterminado) |
‘puntos de compensación’ | desplazamiento (en puntos) del valor xy |
‘polar’ | puede especificar theta, r para la anotación, incluso en gráficos cartesianos. Tenga en cuenta que si está utilizando ejes polares, no necesita especificar polar para el sistema de coordenadas ya que ese es el sistema de coordenadas nativo de «datos». |
Ejemplo 1:
Python3
from matplotlib.patches import ConnectionPatch import matplotlib.pyplot as plt fig, (ax1, ax2) = plt.subplots(1, 2, figsize =(6, 3)) # Draw a simple arrow between # two points in axes coordinates # within a single axes. xyA = (0.2, 0.2) xyB = (0.8, 0.8) coordsA = "data" coordsB = "data" con = ConnectionPatch(xyA, xyB, coordsA, coordsB, arrowstyle ="-|>", shrinkA = 5, shrinkB = 5, mutation_scale = 20, fc ="w") ax1.plot([xyA[0], xyB[0]], [xyA[1], xyB[1]], "o") ax1.add_artist(con) # Draw an arrow between the # same point in data coordinates, # but in different axes. xy = (0.3, 0.2) con = ConnectionPatch( xyA = xy, coordsA = ax2.transData, xyB = xy, coordsB = ax1.transData, arrowstyle ="->", shrinkB = 5) ax2.add_artist(con) # Draw a line between the different # points, defined in different coordinate # systems. con = ConnectionPatch( # in axes coordinates xyA =(0.6, 1.0), coordsA = ax2.transAxes, # x in axes coordinates, y in data coordinates xyB =(0.0, 0.2), coordsB = ax2.get_yaxis_transform(), arrowstyle ="-") ax2.add_artist(con) ax1.set_xlim(0, 1) ax1.set_ylim(0, 1) ax2.set_xlim(0, .5) ax2.set_ylim(0, .5) plt.show()
Producción:
Ejemplo 2:
Python3
import matplotlib.pyplot as plt from matplotlib.patches import ConnectionPatch import numpy as np # make figure and assign axis # objects fig = plt.figure(figsize =(9, 5)) ax1 = fig.add_subplot(121) ax2 = fig.add_subplot(122) fig.subplots_adjust(wspace = 0) # pie chart parameters ratios = [.27, .56, .17] explode = [0.1, 0, 0] # rotate so that first wedge is # split by the x-axis angle = -180 * ratios[0] ax1.pie(ratios, autopct ='% 1.1f %%', startangle = angle, explode = explode) # bar chart parameters xpos = 0 bottom = 0 ratios = [.33, .54, .07, .06] width = .2 colors = [[.1, .3, .5], [.1, .3, .3], [.1, .3, .7], [.1, .3, .9]] for j in range(len(ratios)): height = ratios[j] ax2.bar(xpos, height, width, bottom = bottom, color = colors[j]) ypos = bottom + ax2.patches[j].get_height() / 2 bottom += height ax2.text(xpos, ypos, "% d %%" % (ax2.patches[j].get_height() * 100), ha ='center') ax2.set_title('') ax2.legend(('50-65', 'Over 65', '35-49', 'Under 35')) ax2.axis('off') ax2.set_xlim(- 2.5 * width, 2.5 * width) # use ConnectionPatch to draw # lines between the two plots # get the wedge data theta1, theta2 = ax1.patches[0].theta1, ax1.patches[0].theta2 center, r = ax1.patches[0].center, ax1.patches[0].r bar_height = sum([item.get_height() for item in ax2.patches]) # draw top connecting line x = r * np.cos(np.pi / 180 * theta2) + center[0] y = np.sin(np.pi / 180 * theta2) + center[1] con = ConnectionPatch(xyA =(-width / 2, bar_height), coordsA = ax2.transData, xyB =(x, y), coordsB = ax1.transData) con.set_color([0, 0, 0]) con.set_linewidth(4) ax2.add_artist(con) # draw bottom connecting line x = r * np.cos(np.pi / 180 * theta1) + center[0] y = np.sin(np.pi / 180 * theta1) + center[1] con = ConnectionPatch(xyA =(-width / 2, 0), coordsA = ax2.transData, xyB =(x, y), coordsB = ax1.transData) con.set_color([0, 0, 0]) ax2.add_artist(con) con.set_linewidth(4) plt.show()
Producción:
Publicación traducida automáticamente
Artículo escrito por RajuKumar19 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA