Note

Go to the endto download the full example code.

Affine transform of an image#

Prepending an affine transformation (Affine2D) to thedatatransform of an image allows to manipulate the image's shape andorientation. This is an example of the concept oftransform chaining.

The image of the output should have its boundary match the dashed yellowrectangle.

importmatplotlib.pyplotaspltimportnumpyasnpimportmatplotlib.transformsasmtransformsdefget_image():delta=0.25x=y=np.arange(-3.0,3.0,delta)X,Y=np.meshgrid(x,y)Z1=np.exp(-X**2-Y**2)Z2=np.exp(-(X-1)**2-(Y-1)**2)Z=(Z1-Z2)returnZdefdo_plot(ax,Z,transform):im=ax.imshow(Z,interpolation='none',origin='lower',extent=[-2,4,-3,2],clip_on=True)trans_data=transform+ax.transDataim.set_transform(trans_data)# display intended extent of the imagex1,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 figurefig,((ax1,ax2),(ax3,ax4))=plt.subplots(2,2)Z=get_image()# image rotationdo_plot(ax1,Z,mtransforms.Affine2D().rotate_deg(30))# image skewdo_plot(ax2,Z,mtransforms.Affine2D().skew_deg(30,15))# scale and reflectiondo_plot(ax3,Z,mtransforms.Affine2D().scale(-1,.5))# everything and a translationdo_plot(ax4,Z,mtransforms.Affine2D().rotate_deg(30).skew_deg(30,15).scale(-1,.5).translate(.5,-1))plt.show()
affine image

References

The use of the following functions, methods, classes and modules is shownin this example:

Gallery generated by Sphinx-Gallery