from numpy import linspace, sin, cos from pylab import figure, show from mpl_toolkits.mplot3d import Axes3D # generating some data x = linspace(-10,10,100); y = sin(x); z = cos(x); fig = figure() ax = Axes3D(fig) # plotting the stems for i in range(len(x)): ax.plot([x[i], x[i]], [y[i], y[i]], [0, z[i]], '--', linewidth=2, color='b', alpha=.5) # plotting a circle on the top of each stem ax.plot(x, y, z, 'o', markersize=8, markerfacecolor='none', color='b',label='ib') ax.set_xlabel('x') ax.set_ylabel('y') ax.set_zlabel('z') show()And this is the result
Showing posts with label 3D. Show all posts
Showing posts with label 3D. Show all posts
Thursday, December 6, 2012
3D stem plot
A two-dimensional stem plot displays data as lines extending from a baseline along the x axis. In the following snippet we will see how to make a three-dimensional stem plot using the mplot3d toolkit. In this case we have that data is displayed as lines extending from the x-y plane along the z direction.Let's go with the code:
Saturday, January 14, 2012
How to plot a function of two variables with matplotlib
In this post we will see how to visualize a function of two variables in two ways. First, we will create an intensity image of the function and, second, we will use the 3D plotting capabilities of matplotlib to create a shaded surface plot. So, let's go with the code:
And now we are going to use the values stored in X,Y and Z to make a 3D plot using the mplot3d toolkit. Here's the snippet:
from numpy import exp,arange from pylab import meshgrid,cm,imshow,contour,clabel,colorbar,axis,title,show # the function that I'm going to plot def z_func(x,y): return (1-(x**2+y**3))*exp(-(x**2+y**2)/2) x = arange(-3.0,3.0,0.1) y = arange(-3.0,3.0,0.1) X,Y = meshgrid(x, y) # grid of point Z = z_func(X, Y) # evaluation of the function on the grid im = imshow(Z,cmap=cm.RdBu) # drawing the function # adding the Contour lines with labels cset = contour(Z,arange(-1,1.5,0.2),linewidths=2,cmap=cm.Set2) clabel(cset,inline=True,fmt='%1.1f',fontsize=10) colorbar(im) # adding the colobar on the right # latex fashion title title('$z=(1-x^2+y^3) e^{-(x^2+y^2)/2}$') show()The script would have the following output:
And now we are going to use the values stored in X,Y and Z to make a 3D plot using the mplot3d toolkit. Here's the snippet:
from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm from matplotlib.ticker import LinearLocator, FormatStrFormatter import matplotlib.pyplot as plt fig = plt.figure() ax = fig.gca(projection='3d') surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.RdBu,linewidth=0, antialiased=False) ax.zaxis.set_major_locator(LinearLocator(10)) ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f')) fig.colorbar(surf, shrink=0.5, aspect=5) plt.show()And this is the result:
Subscribe to:
Posts (Atom)