From 6893bc843d79dac9539130c7977a25daf6d33455 Mon Sep 17 00:00:00 2001 From: Tim Hoffmann <2836374+timhoffm@users.noreply.github.com> Date: Sun, 3 Mar 2024 18:25:52 +0100 Subject: [PATCH] Backport PR #27754: fix quiver3d incorrect arrow colors Update figure test image --- lib/mpl_toolkits/mplot3d/axes3d.py | 13 ++++-------- .../test_axes3d/quiver3d_colorcoded.png | Bin 0 -> 56401 bytes lib/mpl_toolkits/mplot3d/tests/test_axes3d.py | 19 ++++++++++++++++-- 3 files changed, 21 insertions(+), 11 deletions(-) create mode 100644 lib/mpl_toolkits/mplot3d/tests/baseline_images/test_axes3d/quiver3d_colorcoded.png diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index a74c11f54e60..6bcd7a6b65a8 100644 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -2727,15 +2727,10 @@ def calc_arrows(UVW): UVW = np.column_stack(input_args[3:]).astype(float) # Normalize rows of UVW - norm = np.linalg.norm(UVW, axis=1) - - # If any row of UVW is all zeros, don't make a quiver for it - mask = norm > 0 - XYZ = XYZ[mask] if normalize: - UVW = UVW[mask] / norm[mask].reshape((-1, 1)) - else: - UVW = UVW[mask] + norm = np.linalg.norm(UVW, axis=1) + norm[norm == 0] = 1 + UVW = UVW / norm.reshape((-1, 1)) if len(XYZ) > 0: # compute the shaft lines all at once with an outer product @@ -2749,7 +2744,7 @@ def calc_arrows(UVW): # transpose to get a list of lines heads = heads.swapaxes(0, 1) - lines = [*shafts, *heads] + lines = [*shafts, *heads[::2], *heads[1::2]] else: lines = [] diff --git a/lib/mpl_toolkits/mplot3d/tests/baseline_images/test_axes3d/quiver3d_colorcoded.png b/lib/mpl_toolkits/mplot3d/tests/baseline_images/test_axes3d/quiver3d_colorcoded.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ef3e53a96388cff4030471640ace7b3e9058cf GIT binary patch literal 56401 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 B2YCPh literal 0 HcmV?d00001 diff --git a/lib/mpl_toolkits/mplot3d/tests/test_axes3d.py b/lib/mpl_toolkits/mplot3d/tests/test_axes3d.py index 9cebc8a33efc..b3fcffcc6e24 100644 --- a/lib/mpl_toolkits/mplot3d/tests/test_axes3d.py +++ b/lib/mpl_toolkits/mplot3d/tests/test_axes3d.py @@ -806,7 +806,8 @@ def test_mixedsamplesraises(): ax.plot_surface(X, Y, Z, cstride=50, rcount=10) -@mpl3d_image_comparison(['quiver3d.png'], style='mpl20') +# remove tolerance when regenerating the test image +@mpl3d_image_comparison(['quiver3d.png'], style='mpl20', tol=0.003) def test_quiver3d(): fig = plt.figure() ax = fig.add_subplot(projection='3d') @@ -853,6 +854,19 @@ def test_quiver3d_masked(): ax.quiver(x, y, z, u, v, w, length=0.1, pivot='tip', normalize=True) +@mpl3d_image_comparison(['quiver3d_colorcoded.png'], style='mpl20') +def test_quiver3d_colorcoded(): + fig = plt.figure() + ax = fig.add_subplot(projection='3d') + + x = y = dx = dz = np.zeros(10) + z = dy = np.arange(10.) + + color = plt.cm.Reds(dy/dy.max()) + ax.quiver(x, y, z, dx, dy, dz, colors=color) + ax.set_ylim(0, 10) + + def test_patch_modification(): fig = plt.figure() ax = fig.add_subplot(projection="3d") @@ -1519,7 +1533,8 @@ def test_minor_ticks(): ax.set_zticklabels(["half"], minor=True) -@mpl3d_image_comparison(['errorbar3d_errorevery.png'], style='mpl20') +# remove tolerance when regenerating the test image +@mpl3d_image_comparison(['errorbar3d_errorevery.png'], style='mpl20', tol=0.003) def test_errorbar3d_errorevery(): """Tests errorevery functionality for 3D errorbars.""" t = np.arange(0, 2*np.pi+.1, 0.01)