Ask Your Question
1

How to embed a 3D matplotlib figure in the notebook interface?

asked 2016-01-05 09:51:50 +0100

Fusion809 gravatar image

I'd like to embed a matplotlib figure in the notebook interface of SageMath, is this possible? Presently I am using this SageMath code:

x,y,z=var('x,y,z')

# Next we define the parameters
sigma=10
rho=40
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=150
h=tmax/N
times=srange(0,tmax+h,h)
ics=[0,1,1]
sol=desolve_odeint(lorenz,ics,times,[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
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()

to solve and plot the solution to the Lorenz equations. What modification to the plot() function do I have to make in order to embed the matplotlib plot in the notebook interface.

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
2

answered 2016-01-05 15:09:38 +0100

kcrisman gravatar image

First off, you probably don't need a separate function for that, and secondly you definitely shouldn't clobber the normal Sage plot() function with yours - maybe name it plot1()?

But the real thing you need is to create a file for sagenb to display, with something like

plt.savefig('test.png')

It would be nice to use the temporary filename creation capabilities in Sage but those create filenames in the whole tree; you could do something more annoying like

plt.savefig(os.path.basename(tmp_filename(ext='.png')))

Anyway, I get a nice Lorenz plot so I guess everything works okay! Nice code. I cannot say if this would work with other savefig outputs though as I don't use mpl directly.

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower

Stats

Asked: 2016-01-05 09:51:50 +0100

Seen: 672 times

Last updated: Jan 05 '16