From 00761411dcc1c2a23ae9ddbfe4466c2fc9f7dd69 Mon Sep 17 00:00:00 2001 From: krassowski <5832902+krassowski@users.noreply.github.com> Date: Sat, 16 Jul 2022 13:34:32 +0100 Subject: [PATCH 1/4] Fix array-like linewidth for 3d scatter --- lib/mpl_toolkits/mplot3d/art3d.py | 2 +- .../test_mplot3d/scatter3d_linewidth.png | Bin 0 -> 46016 bytes lib/mpl_toolkits/tests/test_mplot3d.py | 10 ++++++++++ 3 files changed, 11 insertions(+), 1 deletion(-) create mode 100644 lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d_linewidth.png diff --git a/lib/mpl_toolkits/mplot3d/art3d.py b/lib/mpl_toolkits/mplot3d/art3d.py index acbeca931c38..8754ecc2705a 100644 --- a/lib/mpl_toolkits/mplot3d/art3d.py +++ b/lib/mpl_toolkits/mplot3d/art3d.py @@ -600,7 +600,7 @@ def do_3d_projection(self): self._sizes = self._sizes3d[z_markers_idx] if len(self._linewidths3d) > 1: - self._linewidths = self._linewidths3d[z_markers_idx] + self._linewidths = np.array(self._linewidths3d)[z_markers_idx] # Re-order items vzs = vzs[z_markers_idx] diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d_linewidth.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d_linewidth.png new file mode 100644 index 0000000000000000000000000000000000000000..c4c07dd9e8d6697e129fbb4fb3b2f9075d86c704 GIT binary patch literal 46016 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

UmeM7_rNuJ5BgoJ^brW1Rcd*3L#-<$r3@=u}%m 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 literal 0 HcmV?d00001 diff --git a/lib/mpl_toolkits/tests/test_mplot3d.py b/lib/mpl_toolkits/tests/test_mplot3d.py index 505cb4f0c50f..e79a87666e55 100644 --- a/lib/mpl_toolkits/tests/test_mplot3d.py +++ b/lib/mpl_toolkits/tests/test_mplot3d.py @@ -299,6 +299,16 @@ def test_scatter3d_color(): color='b', marker='s') +@mpl3d_image_comparison(['scatter3d_linewidth.png']) +def test_scatter3d_linewidth(): + fig = plt.figure() + ax = fig.add_subplot(projection='3d') + + # Check that array-like linewidth can be set + ax.scatter(np.arange(10), np.arange(10), np.arange(10), + marker='o', linewidth=np.arange(10)) + + @check_figures_equal(extensions=['png']) def test_scatter3d_modification(fig_ref, fig_test): # Changing Path3DCollection properties post-creation should work correctly. From f88d1f6e559a0888bbab7d455916f20f79994cd8 Mon Sep 17 00:00:00 2001 From: krassowski <5832902+krassowski@users.noreply.github.com> Date: Mon, 18 Jul 2022 00:34:12 +0100 Subject: [PATCH 2/4] Cast to np.array earlier (in `set_3d_properties`) --- lib/mpl_toolkits/mplot3d/art3d.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/mpl_toolkits/mplot3d/art3d.py b/lib/mpl_toolkits/mplot3d/art3d.py index 8754ecc2705a..dd919d5b8897 100644 --- a/lib/mpl_toolkits/mplot3d/art3d.py +++ b/lib/mpl_toolkits/mplot3d/art3d.py @@ -545,7 +545,7 @@ def set_3d_properties(self, zs, zdir): # # Grab the current sizes and linewidths to preserve them. self._sizes3d = self._sizes - self._linewidths3d = self._linewidths + self._linewidths3d = np.array(self._linewidths) xs, ys, zs = self._offsets3d # Sort the points based on z coordinates @@ -600,7 +600,7 @@ def do_3d_projection(self): self._sizes = self._sizes3d[z_markers_idx] if len(self._linewidths3d) > 1: - self._linewidths = np.array(self._linewidths3d)[z_markers_idx] + self._linewidths = self._linewidths3d[z_markers_idx] # Re-order items vzs = vzs[z_markers_idx] From 261670f2eb3d56a39b3eaffb01798d5b3cf0520a Mon Sep 17 00:00:00 2001 From: krassowski <5832902+krassowski@users.noreply.github.com> Date: Fri, 22 Jul 2022 12:02:14 +0100 Subject: [PATCH 3/4] Fix typo, ensure that `linewidths` broadcasted in parent's method are used --- lib/mpl_toolkits/mplot3d/art3d.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/mpl_toolkits/mplot3d/art3d.py b/lib/mpl_toolkits/mplot3d/art3d.py index dd919d5b8897..8fe6e7a9c10b 100644 --- a/lib/mpl_toolkits/mplot3d/art3d.py +++ b/lib/mpl_toolkits/mplot3d/art3d.py @@ -563,7 +563,7 @@ def set_sizes(self, sizes, dpi=72.0): def set_linewidth(self, lw): super().set_linewidth(lw) if not self._in_draw: - self._linewidth3d = lw + self._linewidths3d = np.array(self._linewidths) def get_depthshade(self): return self._depthshade From 7fd98f1b9dcd71bd0c101055c307b19edfb271f7 Mon Sep 17 00:00:00 2001 From: krassowski <5832902+krassowski@users.noreply.github.com> Date: Fri, 22 Jul 2022 14:25:15 +0100 Subject: [PATCH 4/4] Add a test for changing post-creation with array-like --- lib/mpl_toolkits/tests/test_mplot3d.py | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/mpl_toolkits/tests/test_mplot3d.py b/lib/mpl_toolkits/tests/test_mplot3d.py index e79a87666e55..19d4ca77cd1f 100644 --- a/lib/mpl_toolkits/tests/test_mplot3d.py +++ b/lib/mpl_toolkits/tests/test_mplot3d.py @@ -309,6 +309,20 @@ def test_scatter3d_linewidth(): marker='o', linewidth=np.arange(10)) +@check_figures_equal(extensions=['png']) +def test_scatter3d_linewidth_modification(fig_ref, fig_test): + # Changing Path3DCollection linewidths with array-like post-creation + # should work correctly. + ax_test = fig_test.add_subplot(projection='3d') + c = ax_test.scatter(np.arange(10), np.arange(10), np.arange(10), + marker='o') + c.set_linewidths(np.arange(10)) + + ax_ref = fig_ref.add_subplot(projection='3d') + ax_ref.scatter(np.arange(10), np.arange(10), np.arange(10), marker='o', + linewidths=np.arange(10)) + + @check_figures_equal(extensions=['png']) def test_scatter3d_modification(fig_ref, fig_test): # Changing Path3DCollection properties post-creation should work correctly.