Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

How to add tick marks or control them in the frame of 3d plots?

Apparently there is no way to add tick marks or control their spacing in the frame box for 3d plots as you can do it in 2d plots. There is no ticks option. There is no axis with ticks option. No control over axes labels neither.

I found a way to do so as in the following code (But I cannot interact with the plot as rotating and zooming with the mouse as can be done with sage 3d plots. I would like to have frame tick marks and grid lines, and axis labels as in the graph generated by this code):

from matplotlib import pyplot as plt
from mpl_toolkits.mplot3d import axes3d
x,y,z=var('x,y,z')

# Next we define the parameters
sigma=10
rho=28
beta=8/3

# The Lorenz equations
lorenz=[sigma*(y-x),x*(rho-z)-y,x*y-beta*z]

# Time and initial conditions
N=250000
tmax=250
h=tmax/N
t=srange(0,tmax+h,h)
ics=[0,1,1]
sol=desolve_odeint(lorenz,ics,t,[x,y,z],rtol=1e-13,atol=1e-14)
X=sol[:,0]
Y=sol[:,1]
Z=sol[:,2]
# Plot the result
from mpl_toolkits.mplot3d import axes3d
from matplotlib import pyplot as plt
# Call the plot function if you want to plot the data
def plot():
    fig = plt.figure(1)
    ax = fig.add_subplot(111, projection='3d')
    ax.plot_wireframe(X, Y, Z, rstride=10, cstride=10)
    ax.set_xlabel('X(t)')
    ax.set_ylabel('Y(t)')
    ax.set_zlabel('Z(t)')
    plt.show()

plot()