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..332f0b5416ac
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..d166d97ab667
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..2b57c5f9d758
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/bar3d.svg
@@ -0,0 +1,1241 @@
+
+
+
+
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..1a2ad23ccd12
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..684e04ca413a
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..65bc12139c44
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contour3d.svg
@@ -0,0 +1,3599 @@
+
+
+
+
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..831f71fbb7bb
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..5c4f5f4c8228
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..e0f8b5865045
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/contourf3d.svg
@@ -0,0 +1,7798 @@
+
+
+
+
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..96250ee946db
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..166e79a11561
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..bbb152d68d1d
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/mixedsubplot.svg
@@ -0,0 +1,18472 @@
+
+
+
+
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..5bc1ac2d1ecf
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..b5b1daf0a5da
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..5d55a5c9a17e
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/scatter3d.svg
@@ -0,0 +1,796 @@
+
+
+
+
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..c6661a78412c
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..51a9008519e8
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..48f0ca80ebbe
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/text3d.svg
@@ -0,0 +1,17347 @@
+
+
+
+
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..5313114aa91e
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..deca6c039fe2
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..77c40056b871
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/trisurf3d.svg
@@ -0,0 +1,5461 @@
+
+
+
+
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..9559d94aabcc
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..b6ae104a8d48
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..cc4cd21ca303
--- /dev/null
+++ b/lib/mpl_toolkits/tests/baseline_images/test_mplot3d/wireframe3d.svg
@@ -0,0 +1,3979 @@
+
+
+
+
diff --git a/lib/mpl_toolkits/tests/test_mplot3d.py b/lib/mpl_toolkits/tests/test_mplot3d.py
new file mode 100644
index 000000000000..976b0da520d5
--- /dev/null
+++ b/lib/mpl_toolkits/tests/test_mplot3d.py
@@ -0,0 +1,174 @@
+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'])
+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)
+ ax.set_xlabel('X')
+ ax.set_ylabel('Y')
+ ax.set_zlabel('Z')
+
+@image_comparison(baseline_images=['contour3d'])
+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_xlabel('X')
+ ax.set_xlim(-40, 40)
+ ax.set_ylabel('Y')
+ ax.set_ylim(-40, 40)
+ ax.set_zlabel('Z')
+ ax.set_zlim(-100, 100)
+
+@image_comparison(baseline_images=['contourf3d'])
+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_xlabel('X')
+ ax.set_xlim(-40, 40)
+ ax.set_ylabel('Y')
+ ax.set_ylim(-40, 40)
+ ax.set_zlabel('Z')
+ ax.set_zlim(-100, 100)
+
+@image_comparison(baseline_images=['lines3d'])
+def test_lines3d():
+ mpl.rcParams['legend.fontsize'] = 10
+ 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, label='parametric curve')
+ ax.legend()
+
+@image_comparison(baseline_images=['mixedsubplot'])
+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.))
+ fig.suptitle('A tale of 2 subplots')
+ ax = fig.add_subplot(2, 1, 1)
+ l = ax.plot(t1, f(t1), 'bo',
+ t2, f(t2), 'k--', markerfacecolor='green')
+ ax.grid(True)
+ ax.set_ylabel('Damped oscillation')
+
+ 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'])
+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='^')
+ ax.set_xlabel('X Label')
+ ax.set_ylabel('Y Label')
+ ax.set_zlabel('Z Label')
+
+@image_comparison(baseline_images=['surface3d'])
+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)
+
+ ax.zaxis.set_major_locator(LinearLocator(10))
+ ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f'))
+
+ 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'])
+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'])
+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)