11"""
2- For the backends that supports draw_image with optional affine
2+ For the backends that support draw_image with optional affine
33transform (e.g., agg, ps backend), the image of the output should
4- have its boundary matches the red rectangles .
4+ have its boundary match the dashed yellow rectangle .
55"""
66
77import numpy as np
8- import matplotlib .cm as cm
98import matplotlib .mlab as mlab
109import matplotlib .pyplot as plt
1110import matplotlib .transforms as mtransforms
@@ -21,25 +20,37 @@ def get_image():
2120 return Z
2221
2322
24- if 1 :
23+ def do_plot (ax , Z , transform ):
24+ im = ax .imshow (Z , interpolation = 'none' ,
25+ origin = 'lower' ,
26+ extent = [- 2 , 4 , - 3 , 2 ], clip_on = True )
27+
28+ trans_data = transform + ax .transData
29+ im .set_transform (trans_data )
30+
31+ # display intended extent of the image
32+ x1 , x2 , y1 , y2 = im .get_extent ()
33+ ax .plot ([x1 , x2 , x2 , x1 , x1 ], [y1 , y1 , y2 , y2 , y1 ], "y--" ,
34+ transform = trans_data )
35+ ax .set_xlim (- 5 , 5 )
36+ ax .set_ylim (- 4 , 4 )
2537
26- # image rotation
2738
28- fig , ax1 = plt .subplots (1 , 1 )
39+ if 1 :
40+ fig , ((ax1 , ax2 ), (ax3 , ax4 )) = plt .subplots (2 , 2 )
2941 Z = get_image ()
30- im1 = ax1 .imshow (Z , interpolation = 'none' ,
31- origin = 'lower' ,
32- extent = [- 2 , 4 , - 3 , 2 ], clip_on = True )
3342
34- trans_data2 = mtransforms .Affine2D ().rotate_deg (30 ) + ax1 .transData
35- im1 .set_transform (trans_data2 )
43+ # image rotation
44+ do_plot (ax1 , Z , mtransforms .Affine2D ().rotate_deg (30 ))
45+
46+ # image skew
47+ do_plot (ax2 , Z , mtransforms .Affine2D ().skew_deg (30 , 15 ))
3648
37- # display intended extent of the image
38- x1 , x2 , y1 , y2 = im1 .get_extent ()
39- x3 , y3 = x2 , y1
49+ # scale and reflection
50+ do_plot (ax3 , Z , mtransforms .Affine2D ().scale (- 1 , .5 ))
4051
41- ax1 .plot ([x1 , x2 , x2 , x1 , x1 ], [y1 , y1 , y2 , y2 , y1 ], "--" ,
42- transform = trans_data2 )
52+ # everything and a translation
53+ do_plot (ax4 , Z , mtransforms .Affine2D ().
54+ rotate_deg (30 ).skew_deg (30 , 15 ).scale (- 1 , .5 ).translate (.5 , - 1 ))
4355
44- ax1 .set_xlim (- 3 , 5 )
45- ax1 .set_ylim (- 4 , 4 )
56+ plt .show ()
0 commit comments