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 marginsen lugar de set_xlimy 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()
Alejado, Acercado

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 marginsmétodos. Por ejemplo, imshowespere pcolorque 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_edgesen 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()
es pegajoso, no es pegajoso

Galería generada por Sphinx-Gallery