From 57a3d47fc2698b8c3a8f073a31fce1cee1c386d5 Mon Sep 17 00:00:00 2001 From: Till Stensitzki Date: Fri, 2 Oct 2015 16:26:21 +0200 Subject: [PATCH 1/3] Don't allow 1d arrays in plot_surface. --- lib/mpl_toolkits/mplot3d/axes3d.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index b1032f45091e..af08251e218a 100755 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -1581,7 +1581,8 @@ def plot_surface(self, X, Y, Z, *args, **kwargs): had_data = self.has_data() - Z = np.atleast_2d(Z) + if Z.ndim != 2: + raise ValueError("Argument Z must be 2-dimensional.") # TODO: Support masked arrays X, Y, Z = np.broadcast_arrays(X, Y, Z) rows, cols = Z.shape From 8ac406432229666773d64eab757bd18a7942d8be Mon Sep 17 00:00:00 2001 From: Till Stensitzki Date: Fri, 2 Oct 2015 17:19:48 +0200 Subject: [PATCH 2/3] add test --- lib/mpl_toolkits/tests/test_mplot3d.py | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/lib/mpl_toolkits/tests/test_mplot3d.py b/lib/mpl_toolkits/tests/test_mplot3d.py index 42718166d32d..4dbf4c0e6912 100644 --- a/lib/mpl_toolkits/tests/test_mplot3d.py +++ b/lib/mpl_toolkits/tests/test_mplot3d.py @@ -311,7 +311,17 @@ def test_axes3d_cla(): ax.set_axis_off() ax.cla() # make sure the axis displayed is 3D (not 2D) - +@cleanup +def test_plotsurface_1d_raises(): + x = np.linspace(0.5, 10, num=100) + y = np.linspace(0.5, 10, num=100) + X, Y = np.meshgrid(x, y) + z = np.random.randn(100) + + fig = plt.figure(figsize=(14,6)) + ax = fig.add_subplot(1, 2, 1, projection='3d') + assert_raises(ValueError, ax.plot_surface, X, Y, z) + if __name__ == '__main__': import nose nose.runmodule(argv=['-s', '--with-doctest'], exit=False) From 85604a0c286845c688670564a9adeeb837147e7f Mon Sep 17 00:00:00 2001 From: Till Stensitzki Date: Fri, 2 Oct 2015 18:50:11 +0200 Subject: [PATCH 3/3] also check in plot_wireframe --- lib/mpl_toolkits/mplot3d/axes3d.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/mpl_toolkits/mplot3d/axes3d.py b/lib/mpl_toolkits/mplot3d/axes3d.py index af08251e218a..912722bc4583 100755 --- a/lib/mpl_toolkits/mplot3d/axes3d.py +++ b/lib/mpl_toolkits/mplot3d/axes3d.py @@ -1756,7 +1756,8 @@ def plot_wireframe(self, X, Y, Z, *args, **kwargs): cstride = kwargs.pop("cstride", 1) had_data = self.has_data() - Z = np.atleast_2d(Z) + if Z.ndim != 2: + raise ValueError("Argument Z must be 2-dimensional.") # FIXME: Support masked arrays X, Y, Z = np.broadcast_arrays(X, Y, Z) rows, cols = Z.shape