Source code for femagtools.tools3d
""" Interface for 3D plotting functions
Module containing functions that allow to access the 3d-functions
with the normal pylab syntax.
>>> from pylab import *
>>> from tools3d import *
>>> x = frange(-2,2,0.1)
>>> X, Y = meshgrid(x,x)
>>> wireframe(X, Y, X**2+Y**2) #doctest: +ELLIPSIS
<mpl_toolkits.mplot3d.art3d.Line3DCollection object at 0x...>
>>> show()
"""
from pylab import gca, figure, subplot, draw_if_interactive
from mpl_toolkits.mplot3d import axes3d
def _check_axis():
from matplotlib.projections import get_projection_class
from matplotlib import _pylab_helpers
create_axis = True
if _pylab_helpers.Gcf.get_active() is not None:
if isinstance(gca(), get_projection_class('3d')):
create_axis = False
if create_axis:
figure()
subplot(111, projection='3d')
[docs]def wireframe(*args, **kwargs):
"""
wrapper for axes3d.Axes3D.plot_wireframe
allows to create wireframe plots with the usual
pylab syntax.
"""
_check_axis()
ret = gca().plot_wireframe(*args, **kwargs)
draw_if_interactive()
return ret
[docs]def surface(*args, **kwargs):
"""
wrapper for axes3d.Axes3D.plot_surface
allows to create surface plots with the usual
pylab syntax.
Don't forget to set cstride=1 and rstride=1.
Otherwise you might get very ugly plots.
"""
_check_axis()
ret = gca().plot_surface(*args, **kwargs)
draw_if_interactive()
return ret
wireframe.__doc__ += axes3d.Axes3D.plot_wireframe.__doc__
surface.__doc__ += axes3d.Axes3D.plot_surface.__doc__