Note

Go to the endto download the full example code.

3D plot projection types#

Demonstrates the different camera projections for 3D plots, and the effects ofchanging the focal length for a perspective projection. Note that Matplotlibcorrects for the 'zoom' effect of changing the focal length.

The default focal length of 1 corresponds to a Field of View (FOV) of 90 deg.An increased focal length between 1 and infinity "flattens" the image, while adecreased focal length between 1 and 0 exaggerates the perspective and givesthe image more apparent depth. In the limiting case, a focal length ofinfinity corresponds to an orthographic projection after correction of thezoom effect.

You can calculate focal length from a FOV via the equation:

\[1 / \tan (\mathrm{FOV} / 2)\]

Or vice versa:

\[\mathrm{FOV} = 2 \arctan (1 / \mathrm{focal length})\]
importmatplotlib.pyplotaspltfrommpl_toolkits.mplot3dimportaxes3dfig,axs=plt.subplots(1,3,subplot_kw={'projection':'3d'})# Get the test dataX,Y,Z=axes3d.get_test_data(0.05)# Plot the dataforaxinaxs:ax.plot_wireframe(X,Y,Z,rstride=10,cstride=10)# Set the orthographic projection.axs[0].set_proj_type('ortho')# FOV = 0 degaxs[0].set_title("'ortho'\nfocal_length = ∞",fontsize=10)# Set the perspective projectionsaxs[1].set_proj_type('persp')# FOV = 90 degaxs[1].set_title("'persp'\nfocal_length = 1 (default)",fontsize=10)axs[2].set_proj_type('persp',focal_length=0.2)# FOV = 157.4 degaxs[2].set_title("'persp'\nfocal_length = 0.2",fontsize=10)plt.show()
'ortho' focal_length = ∞, 'persp' focal_length = 1 (default), 'persp' focal_length = 0.2

Tags:plot-type: 3Dstyling: small-multiplescomponent: subplotlevel: intermediate

Gallery generated by Sphinx-Gallery