Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit be54fae

Browse files
committed
Add more transforms to affine image transform demo
1 parent a43e3a0 commit be54fae

File tree

1 file changed

+29
-18
lines changed

1 file changed

+29
-18
lines changed

examples/api/demo_affine_image.py

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
"""
2-
For the backends that supports draw_image with optional affine
2+
For the backends that support draw_image with optional affine
33
transform (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

77
import numpy as np
8-
import matplotlib.cm as cm
98
import matplotlib.mlab as mlab
109
import matplotlib.pyplot as plt
1110
import 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

Comments
 (0)