diff --git a/lib/mpl_toolkits/mplot3d/art3d.py b/lib/mpl_toolkits/mplot3d/art3d.py index 5df5c8271e7f..e18563a816d6 100644 --- a/lib/mpl_toolkits/mplot3d/art3d.py +++ b/lib/mpl_toolkits/mplot3d/art3d.py @@ -808,6 +808,7 @@ def patch_collection_2d_to_3d(col, zs=0, zdir='z', depthshade=True): """ if isinstance(col, PathCollection): col.__class__ = Path3DCollection + col._offset_zordered = None elif isinstance(col, PatchCollection): col.__class__ = Patch3DCollection col._depthshade = depthshade diff --git a/lib/mpl_toolkits/mplot3d/tests/test_art3d.py b/lib/mpl_toolkits/mplot3d/tests/test_art3d.py index 02d35aad0e4b..4ed48aae4685 100644 --- a/lib/mpl_toolkits/mplot3d/tests/test_art3d.py +++ b/lib/mpl_toolkits/mplot3d/tests/test_art3d.py @@ -1,6 +1,9 @@ +import numpy as np + import matplotlib.pyplot as plt from matplotlib.backend_bases import MouseEvent +from mpl_toolkits.mplot3d.art3d import Line3DCollection def test_scatter_3d_projection_conservation(): @@ -36,3 +39,18 @@ def test_scatter_3d_projection_conservation(): assert contains is True assert len(ind["ind"]) == 1 assert ind["ind"][0] == i + + +def test_zordered_error(): + # Smoke test for https://github.com/matplotlib/matplotlib/issues/26497 + lc = [(np.fromiter([0.0, 0.0, 0.0], dtype="float"), + np.fromiter([1.0, 1.0, 1.0], dtype="float"))] + pc = [np.fromiter([0.0, 0.0], dtype="float"), + np.fromiter([0.0, 1.0], dtype="float"), + np.fromiter([1.0, 1.0], dtype="float")] + + fig = plt.figure() + ax = fig.add_subplot(projection="3d") + ax.add_collection(Line3DCollection(lc)) + ax.scatter(*pc, visible=False) + plt.draw()