Nota
Haga clic aquí para descargar el código de ejemplo completo
Controlando los límites de vista usando márgenes y sticky_edges #
La primera figura de este ejemplo muestra cómo acercar y alejar un gráfico utilizando margins
en lugar de set_xlim
y
set_ylim
. La segunda figura demuestra el concepto de "pegajosidad" del borde introducido por ciertos métodos y artistas y cómo solucionarlo de forma eficaz.
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.patches import Polygon
def f(t):
return np.exp(-t) * np.cos(2*np.pi*t)
t1 = np.arange(0.0, 3.0, 0.01)
ax1 = plt.subplot(212)
ax1.margins(0.05) # Default margin is 0.05, value 0 means fit
ax1.plot(t1, f(t1))
ax2 = plt.subplot(221)
ax2.margins(2, 2) # Values >0.0 zoom out
ax2.plot(t1, f(t1))
ax2.set_title('Zoomed out')
ax3 = plt.subplot(222)
ax3.margins(x=0, y=-0.25) # Values in (-0.5, 0.0) zooms in to center
ax3.plot(t1, f(t1))
ax3.set_title('Zoomed in')
plt.show()
Sobre la "pegajosidad" de ciertos métodos de trazado #
Algunas funciones de trazado hacen que los límites de los ejes sean "pegajosos" o inmunes a la voluntad de los margins
métodos. Por ejemplo, imshow
espere
pcolor
que el usuario desee que los límites sean estrictos alrededor de los píxeles que se muestran en el gráfico. Si no desea este comportamiento, debe establecerlo
use_sticky_edges
en False
. Considere el siguiente ejemplo:
y, x = np.mgrid[:5, 1:6]
poly_coords = [
(0.25, 2.75), (3.25, 2.75),
(2.25, 0.75), (0.25, 0.75)
]
fig, (ax1, ax2) = plt.subplots(ncols=2)
# Here we set the stickiness of the axes object...
# ax1 we'll leave as the default, which uses sticky edges
# and we'll turn off stickiness for ax2
ax2.use_sticky_edges = False
for ax, status in zip((ax1, ax2), ('Is', 'Is Not')):
cells = ax.pcolor(x, y, x+y, cmap='inferno', shading='auto') # sticky
ax.add_patch(
Polygon(poly_coords, color='forestgreen', alpha=0.5)
) # not sticky
ax.margins(x=0.1, y=0.05)
ax.set_aspect('equal')
ax.set_title('{} Sticky'.format(status))
plt.show()
Referencias
En este ejemplo se muestra el uso de las siguientes funciones, métodos, clases y módulos: