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

Skip to content

Commit 0223035

Browse files
committed
Fix incorrect dims in CompositeAffine [skip ci]
1 parent 2804271 commit 0223035

File tree

2 files changed

+46
-39
lines changed

2 files changed

+46
-39
lines changed

lib/matplotlib/tests/test_transforms.py

Lines changed: 45 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -381,12 +381,12 @@ def test_rotate(self):
381381
assert_array_almost_equal(r90[1].transform(self.single_point), [1, 1, -1])
382382
assert_array_almost_equal(r90[2].transform(self.single_point), [-1, 1, 1])
383383

384-
assert_array_almost_equal(r90[0].transform(self.multiple_points), [
385-
[2, 0, 0], [0, 0, 3], [0, -4, 0], [5, 0, 5], [6, -6, 6]])
386-
assert_array_almost_equal(r90[1].transform(self.multiple_points), [
387-
[0, 0, -2], [0, 3, 0], [4, 0, 0], [0, 5, -5], [6, 6, -6]])
388-
assert_array_almost_equal(r90[2].transform(self.multiple_points), [
389-
[0, 2, 0], [-3, 0, 0], [0, 0, 4], [-5, 5, 0], [-6, 6, 6]])
384+
assert_array_almost_equal(r90[0].transform(self.multiple_points),
385+
[[2, 0, 0], [0, 0, 3], [0, -4, 0], [5, 0, 5], [6, -6, 6]])
386+
assert_array_almost_equal(r90[1].transform(self.multiple_points),
387+
[[0, 0, -2], [0, 3, 0], [4, 0, 0], [0, 5, -5], [6, 6, -6]])
388+
assert_array_almost_equal(r90[2].transform(self.multiple_points),
389+
[[0, 2, 0], [-3, 0, 0], [0, 0, 4], [-5, 5, 0], [-6, 6, 6]])
390390

391391
r_pi = [Affine3D().rotate(np.pi, dim) for dim in range(3)]
392392
r180 = [Affine3D().rotate_deg(180, dim) for dim in range(3)]
@@ -395,12 +395,12 @@ def test_rotate(self):
395395
assert_array_almost_equal(r180[1].transform(self.single_point), [-1, 1, -1])
396396
assert_array_almost_equal(r180[2].transform(self.single_point), [-1, -1, 1])
397397

398-
assert_array_almost_equal(r180[0].transform(self.multiple_points), [
399-
[2, 0, 0], [0, -3, 0], [0, 0, -4], [5, -5, 0], [6, -6, -6]])
400-
assert_array_almost_equal(r180[1].transform(self.multiple_points), [
401-
[-2, 0, 0], [0, 3, 0], [0, 0, -4], [-5, 5, 0], [-6, 6, -6]])
402-
assert_array_almost_equal(r180[2].transform(self.multiple_points), [
403-
[-2, 0, 0], [0, -3, 0], [0, 0, 4], [-5, -5, 0], [-6, -6, 6]])
398+
assert_array_almost_equal(r180[0].transform(self.multiple_points),
399+
[[2, 0, 0], [0, -3, 0], [0, 0, -4], [5, -5, 0], [6, -6, -6]])
400+
assert_array_almost_equal(r180[1].transform(self.multiple_points),
401+
[[-2, 0, 0], [0, 3, 0], [0, 0, -4], [-5, 5, 0], [-6, 6, -6]])
402+
assert_array_almost_equal(r180[2].transform(self.multiple_points),
403+
[[-2, 0, 0], [0, -3, 0], [0, 0, 4], [-5, -5, 0], [-6, -6, 6]])
404404

405405
r_pi_3_2 = [Affine3D().rotate(3 * np.pi / 2, dim) for dim in range(3)]
406406
r270 = [Affine3D().rotate_deg(270, dim) for dim in range(3)]
@@ -409,12 +409,12 @@ def test_rotate(self):
409409
assert_array_almost_equal(r270[1].transform(self.single_point), [-1, 1, 1])
410410
assert_array_almost_equal(r270[2].transform(self.single_point), [1, -1, 1])
411411

412-
assert_array_almost_equal(r270[0].transform(self.multiple_points), [
413-
[2, 0, 0], [0, 0, -3], [0, 4, 0], [5, 0, -5], [6, 6, -6]])
414-
assert_array_almost_equal(r270[1].transform(self.multiple_points), [
415-
[0, 0, 2], [0, 3, 0], [-4, 0, 0], [0, 5, 5], [-6, 6, 6]])
416-
assert_array_almost_equal(r270[2].transform(self.multiple_points), [
417-
[0, -2, 0], [3, 0, 0], [0, 0, 4], [5, -5, 0], [6, -6, 6]])
412+
assert_array_almost_equal(r270[0].transform(self.multiple_points),
413+
[[2, 0, 0], [0, 0, -3], [0, 4, 0], [5, 0, -5], [6, 6, -6]])
414+
assert_array_almost_equal(r270[1].transform(self.multiple_points),
415+
[[0, 0, 2], [0, 3, 0], [-4, 0, 0], [0, 5, 5], [-6, 6, 6]])
416+
assert_array_almost_equal(r270[2].transform(self.multiple_points),
417+
[[0, -2, 0], [3, 0, 0], [0, 0, 4], [5, -5, 0], [6, -6, 6]])
418418

419419
for dim in range(3):
420420
assert_array_equal(r_pi_2[dim].get_matrix(), r90[dim].get_matrix())
@@ -430,35 +430,35 @@ def test_rotate_around(self):
430430
for dim in range(3)]
431431
r90 = [Affine3D().rotate_deg_around(*self.pivot, 90, dim) for dim in range(3)]
432432

433-
assert_array_almost_equal(r90[0].transform(self.multiple_points), [
434-
[2, 2, 0], [0, 2, 3], [0, -2, 0], [5, 2, 5], [6, -4, 6]])
435-
assert_array_almost_equal(r90[1].transform(self.multiple_points), [
436-
[0, 0, 0], [0, 3, 2], [4, 0, 2], [0, 5, -3], [6, 6, -4]])
437-
assert_array_almost_equal(r90[2].transform(self.multiple_points), [
438-
[2, 2, 0], [-1, 0, 0], [2, 0, 4], [-3, 5, 0], [-4, 6, 6]])
433+
assert_array_almost_equal(r90[0].transform(self.multiple_points),
434+
[[2, 2, 0], [0, 2, 3], [0, -2, 0], [5, 2, 5], [6, -4, 6]])
435+
assert_array_almost_equal(r90[1].transform(self.multiple_points),
436+
[[0, 0, 0], [0, 3, 2], [4, 0, 2], [0, 5, -3], [6, 6, -4]])
437+
assert_array_almost_equal(r90[2].transform(self.multiple_points),
438+
[[2, 2, 0], [-1, 0, 0], [2, 0, 4], [-3, 5, 0], [-4, 6, 6]])
439439

440440

441441
r_pi = [Affine3D().rotate_around(*self.pivot, np.pi, dim) for dim in range(3)]
442442
r180 = [Affine3D().rotate_deg_around(*self.pivot, 180, dim) for dim in range(3)]
443443

444-
assert_array_almost_equal(r180[0].transform(self.multiple_points), [
445-
[2, 2, 2], [0, -1, 2], [0, 2, -2], [5, -3, 2], [6, -4, -4]])
446-
assert_array_almost_equal(r180[1].transform(self.multiple_points), [
447-
[0, 0, 2], [2, 3, 2], [2, 0, -2], [-3, 5, 2], [-4, 6, -4]])
448-
assert_array_almost_equal(r180[2].transform(self.multiple_points), [
449-
[0, 2, 0], [2, -1, 0], [2, 2, 4], [-3, -3, 0], [-4, -4, 6]])
444+
assert_array_almost_equal(r180[0].transform(self.multiple_points),
445+
[[2, 2, 2], [0, -1, 2], [0, 2, -2], [5, -3, 2], [6, -4, -4]])
446+
assert_array_almost_equal(r180[1].transform(self.multiple_points),
447+
[[0, 0, 2], [2, 3, 2], [2, 0, -2], [-3, 5, 2], [-4, 6, -4]])
448+
assert_array_almost_equal(r180[2].transform(self.multiple_points),
449+
[[0, 2, 0], [2, -1, 0], [2, 2, 4], [-3, -3, 0], [-4, -4, 6]])
450450

451451

452452
r_pi_3_2 = [Affine3D().rotate_around(*self.pivot, 3 * np.pi / 2, dim)
453453
for dim in range(3)]
454454
r270 = [Affine3D().rotate_deg_around(*self.pivot, 270, dim) for dim in range(3)]
455455

456-
assert_array_almost_equal(r270[0].transform(self.multiple_points), [
457-
[2, 0, 2], [0, 0, -1], [0, 4, 2], [5, 0, -3], [6, 6, -4]])
458-
assert_array_almost_equal(r270[1].transform(self.multiple_points), [
459-
[2, 0, 2], [2, 3, 0], [-2, 0, 0], [2, 5, 5], [-4, 6, 6]])
460-
assert_array_almost_equal(r270[2].transform(self.multiple_points), [
461-
[0, 0, 0], [3, 2, 0], [0, 2, 4], [5, -3, 0], [6, -4, 6]])
456+
assert_array_almost_equal(r270[0].transform(self.multiple_points),
457+
[[2, 0, 2], [0, 0, -1], [0, 4, 2], [5, 0, -3], [6, 6, -4]])
458+
assert_array_almost_equal(r270[1].transform(self.multiple_points),
459+
[[2, 0, 2], [2, 3, 0], [-2, 0, 0], [2, 5, 5], [-4, 6, 6]])
460+
assert_array_almost_equal(r270[2].transform(self.multiple_points),
461+
[[0, 0, 0], [3, 2, 0], [0, 2, 4], [5, -3, 0], [6, -4, 6]])
462462

463463
for dim in range(3):
464464
assert_array_almost_equal(r90[dim].transform(self.single_point), [1, 1, 1])
@@ -472,6 +472,15 @@ def test_rotate_around(self):
472472
assert_array_almost_equal(
473473
(r90[dim] + r180[dim]).get_matrix(), r270[dim].get_matrix())
474474

475+
def test_scale(self):
476+
sx = Affine3D().scale(3, 1, 1)
477+
sy = Affine3D().scale(1, -2, 1)
478+
sz = Affine3D().scale(1, 1, 4)
479+
trans = Affine3D().scale(3, -2, 4)
480+
assert_array_equal((sx + sy + sz).get_matrix(), trans.get_matrix())
481+
assert_array_equal(trans.transform(self.single_point), [3, -2, 4])
482+
assert_array_equal(trans.transform(self.multiple_points),
483+
[[6, 0, 0], [0, -6, 0], [0, 0, 16], [15, -10, 0], [18, -12, 24]])
475484

476485
def test_non_affine_caching():
477486
class AssertingNonAffineTransform(mtransforms.Transform):

lib/matplotlib/transforms.py

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2833,10 +2833,8 @@ def __init__(self, a, b, **kwargs):
28332833
if a.output_dims != b.input_dims:
28342834
raise ValueError("The output dimension of 'a' must be equal to "
28352835
"the input dimensions of 'b'")
2836-
self.input_dims = a.input_dims
2837-
self.output_dims = b.output_dims
2836+
super().__init__(dims=a.output_dims, **kwargs)
28382837

2839-
super().__init__(**kwargs)
28402838
self._a = a
28412839
self._b = b
28422840
self.set_children(a, b)

0 commit comments

Comments
 (0)