.. _api-demo_affine_image: api example code: demo_affine_image.py ====================================== .. plot:: /home/tcaswell/source/p/matplotlib/doc/mpl_examples/api/demo_affine_image.py :: """ ============================ Affine transform of an image ============================ For the backends that support draw_image with optional affine transform (e.g., agg, ps backend), the image of the output should have its boundary match the dashed yellow rectangle. """ import numpy as np import matplotlib.mlab as mlab import matplotlib.pyplot as plt import matplotlib.transforms as mtransforms def get_image(): delta = 0.25 x = y = np.arange(-3.0, 3.0, delta) X, Y = np.meshgrid(x, y) Z1 = mlab.bivariate_normal(X, Y, 1.0, 1.0, 0.0, 0.0) Z2 = mlab.bivariate_normal(X, Y, 1.5, 0.5, 1, 1) Z = Z2 - Z1 # difference of Gaussians return Z def do_plot(ax, Z, transform): im = ax.imshow(Z, interpolation='none', origin='lower', extent=[-2, 4, -3, 2], clip_on=True) trans_data = transform + ax.transData im.set_transform(trans_data) # display intended extent of the image x1, x2, y1, y2 = im.get_extent() ax.plot([x1, x2, x2, x1, x1], [y1, y1, y2, y2, y1], "y--", transform=trans_data) ax.set_xlim(-5, 5) ax.set_ylim(-4, 4) # prepare image and figure fig, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2) Z = get_image() # image rotation do_plot(ax1, Z, mtransforms.Affine2D().rotate_deg(30)) # image skew do_plot(ax2, Z, mtransforms.Affine2D().skew_deg(30, 15)) # scale and reflection do_plot(ax3, Z, mtransforms.Affine2D().scale(-1, .5)) # everything and a translation do_plot(ax4, Z, mtransforms.Affine2D(). rotate_deg(30).skew_deg(30, 15).scale(-1, .5).translate(.5, -1)) plt.show() Keywords: python, matplotlib, pylab, example, codex (see :ref:`how-to-search-examples`)