diff --git a/lib/matplotlib/testing/decorators.py b/lib/matplotlib/testing/decorators.py
index 6b8327c4193d..e3c490c3eadd 100644
--- a/lib/matplotlib/testing/decorators.py
+++ b/lib/matplotlib/testing/decorators.py
@@ -110,6 +110,11 @@ def remove_text(figure):
ax.xaxis.set_minor_formatter(ticker.NullFormatter())
ax.yaxis.set_major_formatter(ticker.NullFormatter())
ax.yaxis.set_minor_formatter(ticker.NullFormatter())
+ try:
+ ax.zaxis.set_major_formatter(ticker.NullFormatter())
+ ax.zaxis.set_minor_formatter(ticker.NullFormatter())
+ except AttributeError:
+ pass
def test(self):
baseline_dir, result_dir = _image_directories(self._func)
diff --git a/lib/matplotlib/tests/test_backend_pdf.py b/lib/matplotlib/tests/test_backend_pdf.py
index 5196476eb72c..99aaac1dd495 100644
--- a/lib/matplotlib/tests/test_backend_pdf.py
+++ b/lib/matplotlib/tests/test_backend_pdf.py
@@ -1,6 +1,10 @@
# -*- encoding: utf-8 -*-
-from matplotlib import rcParams
+import io
+
+import numpy as np
+
+from matplotlib import cm, rcParams
from matplotlib import pyplot as plt
from matplotlib.testing.decorators import image_comparison, knownfailureif, cleanup
@@ -26,8 +30,6 @@ def test_use14corefonts():
@cleanup
def test_type42():
- import io
-
rcParams['pdf.fonttype'] = 42
fig = plt.figure()
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/bar3d.pdf b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/bar3d.pdf
new file mode 100644
index 000000000000..18489251692e
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/bar3d.pdf differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/bar3d.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/bar3d.png
new file mode 100644
index 000000000000..9c80f196971e
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/bar3d.png differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/bar3d.svg b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/bar3d.svg
new file mode 100644
index 000000000000..0b37edf833a4
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/bar3d.svg
@@ -0,0 +1,942 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contour3d.pdf b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contour3d.pdf
new file mode 100644
index 000000000000..a07ca1c5711d
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contour3d.pdf differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contour3d.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contour3d.png
new file mode 100644
index 000000000000..dc5a214ed20f
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contour3d.png differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contour3d.svg b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contour3d.svg
new file mode 100644
index 000000000000..4ca2fbe05030
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contour3d.svg
@@ -0,0 +1,3217 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contourf3d.pdf b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contourf3d.pdf
new file mode 100644
index 000000000000..fbd01e0a226a
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contourf3d.pdf differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contourf3d.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contourf3d.png
new file mode 100644
index 000000000000..2c77f390af7b
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contourf3d.png differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contourf3d.svg b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contourf3d.svg
new file mode 100644
index 000000000000..37ef1c5eeddd
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contourf3d.svg
@@ -0,0 +1,7416 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/lines3d.pdf b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/lines3d.pdf
new file mode 100644
index 000000000000..4a7dd722a5fa
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/lines3d.pdf differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/lines3d.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/lines3d.png
new file mode 100644
index 000000000000..b6e595702a96
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/lines3d.png differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/lines3d.svg b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/lines3d.svg
new file mode 100644
index 000000000000..ad3f6d71fee4
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/lines3d.svg
@@ -0,0 +1,489 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/mixedsubplot.pdf b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/mixedsubplot.pdf
new file mode 100644
index 000000000000..4e5d6a3ffbeb
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/mixedsubplot.pdf differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/mixedsubplot.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/mixedsubplot.png
new file mode 100644
index 000000000000..6493c67a2493
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/mixedsubplot.png differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/mixedsubplot.svg b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/mixedsubplot.svg
new file mode 100644
index 000000000000..7d1c93e40451
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/mixedsubplot.svg
@@ -0,0 +1,17582 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d.pdf b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d.pdf
new file mode 100644
index 000000000000..d994cafb5cc0
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d.pdf differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d.png
new file mode 100644
index 000000000000..033900be897e
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d.png differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d.svg b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d.svg
new file mode 100644
index 000000000000..e8a79383fad8
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d.svg
@@ -0,0 +1,400 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/surface3d.pdf b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/surface3d.pdf
new file mode 100644
index 000000000000..d11eb77e4764
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/surface3d.pdf differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/surface3d.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/surface3d.png
new file mode 100644
index 000000000000..ab05010ba648
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/surface3d.png differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/surface3d.svg b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/surface3d.svg
new file mode 100644
index 000000000000..bb38d58fb98e
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/surface3d.svg
@@ -0,0 +1,19470 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/text3d.pdf b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/text3d.pdf
new file mode 100644
index 000000000000..d4b80a8dbb07
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/text3d.pdf differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/text3d.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/text3d.png
new file mode 100644
index 000000000000..9ae3fdd741e1
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/text3d.png differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/text3d.svg b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/text3d.svg
new file mode 100644
index 000000000000..87915696ec97
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/text3d.svg
@@ -0,0 +1,1220 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/trisurf3d.pdf b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/trisurf3d.pdf
new file mode 100644
index 000000000000..e04bb21e0218
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/trisurf3d.pdf differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/trisurf3d.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/trisurf3d.png
new file mode 100644
index 000000000000..ca70ddc6fb3f
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/trisurf3d.png differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/trisurf3d.svg b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/trisurf3d.svg
new file mode 100644
index 000000000000..2053cee0df1f
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/trisurf3d.svg
@@ -0,0 +1,5166 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/wireframe3d.pdf b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/wireframe3d.pdf
new file mode 100644
index 000000000000..ee3752ca2aa1
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/wireframe3d.pdf differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/wireframe3d.png b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/wireframe3d.png
new file mode 100644
index 000000000000..4ddd17179dcb
Binary files /dev/null and b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/wireframe3d.png differ
diff --git a/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/wireframe3d.svg b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/wireframe3d.svg
new file mode 100644
index 000000000000..a5a1b4e8adab
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/wireframe3d.svg
@@ -0,0 +1,3614 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/test_mplot3d.py b/lib/mpl_toolkits/tests/test_mplot3d.py
new file mode 100644
index 000000000000..91bae834f703
--- /dev/null
+++ b/lib/mpl_toolkits/tests/test_mplot3d.py
@@ -0,0 +1,161 @@
+from mpl_toolkits.mplot3d import Axes3D, axes3d
+from matplotlib import cm
+from matplotlib.testing.decorators import image_comparison
+import matplotlib.pyplot as plt
+import numpy as np
+
+
+@image_comparison(baseline_images=['bar3d'], remove_text=True)
+def test_bar3d():
+ fig = plt.figure()
+ ax = fig.add_subplot(111, projection='3d')
+ for c, z in zip(['r', 'g', 'b', 'y'], [30, 20, 10, 0]):
+ xs = np.arange(20)
+ ys = np.arange(20)
+ cs = [c] * len(xs)
+ cs[0] = 'c'
+ ax.bar(xs, ys, zs=z, zdir='y', color=cs, alpha=0.8)
+
+
+@image_comparison(baseline_images=['contour3d'], remove_text=True)
+def test_contour3d():
+ fig = plt.figure()
+ ax = fig.gca(projection='3d')
+ X, Y, Z = axes3d.get_test_data(0.05)
+ cset = ax.contour(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)
+ cset = ax.contour(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)
+ cset = ax.contour(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)
+ ax.set_xlim(-40, 40)
+ ax.set_ylim(-40, 40)
+ ax.set_zlim(-100, 100)
+
+
+@image_comparison(baseline_images=['contourf3d'], remove_text=True)
+def test_contourf3d():
+ fig = plt.figure()
+ ax = fig.gca(projection='3d')
+ X, Y, Z = axes3d.get_test_data(0.05)
+ cset = ax.contourf(X, Y, Z, zdir='z', offset=-100, cmap=cm.coolwarm)
+ cset = ax.contourf(X, Y, Z, zdir='x', offset=-40, cmap=cm.coolwarm)
+ cset = ax.contourf(X, Y, Z, zdir='y', offset=40, cmap=cm.coolwarm)
+ ax.set_xlim(-40, 40)
+ ax.set_ylim(-40, 40)
+ ax.set_zlim(-100, 100)
+
+
+@image_comparison(baseline_images=['lines3d'], remove_text=True)
+def test_lines3d():
+ fig = plt.figure()
+ ax = fig.gca(projection='3d')
+ theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
+ z = np.linspace(-2, 2, 100)
+ r = z ** 2 + 1
+ x = r * np.sin(theta)
+ y = r * np.cos(theta)
+ ax.plot(x, y, z)
+
+
+@image_comparison(baseline_images=['mixedsubplot'], remove_text=True)
+def test_mixedsubplots():
+ def f(t):
+ s1 = np.cos(2*np.pi*t)
+ e1 = np.exp(-t)
+ return np.multiply(s1, e1)
+
+ t1 = np.arange(0.0, 5.0, 0.1)
+ t2 = np.arange(0.0, 5.0, 0.02)
+
+ fig = plt.figure(figsize=plt.figaspect(2.))
+ ax = fig.add_subplot(2, 1, 1)
+ l = ax.plot(t1, f(t1), 'bo',
+ t2, f(t2), 'k--', markerfacecolor='green')
+ ax.grid(True)
+
+ ax = fig.add_subplot(2, 1, 2, projection='3d')
+ X, Y = np.meshgrid(np.arange(-5, 5, 0.25), np.arange(-5, 5, 0.25))
+ R = np.sqrt(X ** 2 + Y ** 2)
+ Z = np.sin(R)
+
+ surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1,
+ linewidth=0, antialiased=False)
+
+ ax.set_zlim3d(-1, 1)
+
+
+@image_comparison(baseline_images=['scatter3d'], remove_text=True)
+def test_scatter3d():
+ fig = plt.figure()
+ ax = fig.add_subplot(111, projection='3d')
+ ax.scatter(np.arange(10), np.arange(10), np.arange(10),
+ c='r', marker='o')
+ ax.scatter(np.arange(10, 20), np.arange(10, 20), np.arange(10, 20),
+ c='b', marker='^')
+
+
+@image_comparison(baseline_images=['surface3d'], remove_text=True)
+def test_surface3d():
+ fig = plt.figure()
+ ax = fig.gca(projection='3d')
+ X = np.arange(-5, 5, 0.25)
+ Y = np.arange(-5, 5, 0.25)
+ X, Y = np.meshgrid(X, Y)
+ R = np.sqrt(X ** 2 + Y ** 2)
+ Z = np.sin(R)
+ surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm,
+ lw=0, antialiased=False)
+ ax.set_zlim(-1.01, 1.01)
+ fig.colorbar(surf, shrink=0.5, aspect=5)
+
+
+@image_comparison(baseline_images=['text3d'])
+def test_text3d():
+ fig = plt.figure()
+ ax = fig.gca(projection='3d')
+
+ zdirs = (None, 'x', 'y', 'z', (1, 1, 0), (1, 1, 1))
+ xs = (2, 6, 4, 9, 7, 2)
+ ys = (6, 4, 8, 7, 2, 2)
+ zs = (4, 2, 5, 6, 1, 7)
+
+ for zdir, x, y, z in zip(zdirs, xs, ys, zs):
+ label = '(%d, %d, %d), dir=%s' % (x, y, z, zdir)
+ ax.text(x, y, z, label, zdir)
+
+ ax.text(1, 1, 1, "red", color='red')
+ ax.text2D(0.05, 0.95, "2D Text", transform=ax.transAxes)
+ ax.set_xlim3d(0, 10)
+ ax.set_ylim3d(0, 10)
+ ax.set_zlim3d(0, 10)
+ ax.set_xlabel('X axis')
+ ax.set_ylabel('Y axis')
+ ax.set_zlabel('Z axis')
+
+
+@image_comparison(baseline_images=['trisurf3d'], remove_text=True)
+def test_trisurf3d():
+ n_angles = 36
+ n_radii = 8
+ radii = np.linspace(0.125, 1.0, n_radii)
+ angles = np.linspace(0, 2*np.pi, n_angles, endpoint=False)
+ angles = np.repeat(angles[..., np.newaxis], n_radii, axis=1)
+
+ x = np.append(0, (radii*np.cos(angles)).flatten())
+ y = np.append(0, (radii*np.sin(angles)).flatten())
+ z = np.sin(-x*y)
+
+ fig = plt.figure()
+ ax = fig.gca(projection='3d')
+ ax.plot_trisurf(x, y, z, cmap=cm.jet, linewidth=0.2)
+
+
+@image_comparison(baseline_images=['wireframe3d'], remove_text=True)
+def test_wireframe3d():
+ fig = plt.figure()
+ ax = fig.add_subplot(111, projection='3d')
+ X, Y, Z = axes3d.get_test_data(0.05)
+ ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
+
+
+if __name__ == '__main__':
+ import nose
+ nose.runmodule(argv=['-s', '--with-doctest'], exit=False)