Thanks to a nice question on stackexchange, I now know how to not settle for the defaults.
Let's use a specific example: here's the graph of a function which I want to plot:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D sigmoid = lambda x,y: 1/sqrt(1 + 2*exp(20.1-27*(x**2 + y**2))) ts = arange(0,1.001,.01) fig = plt.figure() ax = fig.gca(projection='3d') (XX,YY) = meshgrid(ts,ts) ZZ = vectorize(sigmoid)(XX,YY) ax.plot_surface(XX,YY,ZZ,rstride = 5, cstride = 5, cmap = cm.jet)
This produces the following graphic:
Now, this isn't awful, but it's not the angle that I really want to be looking at this function from. What I'd really like is to be looking approximately down the line \(y = x \) and not be nearly so far "above" the plot.
The way to change this is to change the azim(uth) and elev(ation) attributes of the axis (the object called ax in the code above). Elevation refers to the angle between the top plane of the axis (the red stuff in the image) and the viewer's eye; in the picture above, it's about 30 degrees. (Python uses degrees instead of radians for these parameters, btw.) Azimuth refers to the direction that the viewer is facing, but be careful! In the image above, we're looking along the line \(y = - \frac{1}{\sqrt{3}} x \), which is a 120-degree rotation from the \(x\)-axis; however, if you type in ax.azim you'll get -60 out, not 120. That's because ax.azim is the angular position of the viewer, and not of their gaze.
ax.plot_surface(XX,YY,ZZ,rstride = 3, cstride = 3, cmap = cm.jet) ax.view_init(azim = 180+40,elev = 22)
I've adjusted the rstride and cstride parameters also, which determines how densely spaced the grid lines on the surface are. Notice how in this image, our view goes out along the line with slope \( \tan 40^\circ \), corresponding to the azimuth entered above.
One of the great article, I have seen yet. Waiting for more updates.
ReplyDeleteccna Training in Chennai
ccna course in Chennai
R Programming Training in Chennai
Python Classes in Chennai
Best Python Training in Chennai
CCNA Training in Anna Nagar
CCNA Training in Porur
Excellent post!!!. The strategy you have posted on this technology helped me to get into the next level and had lot of information in it.
ReplyDeleteCyber Security Training Course in Chennai | Certification | Cyber Security Online Training Course | Ethical Hacking Training Course in Chennai | Certification | Ethical Hacking Online Training Course |
CCNA Training Course in Chennai | Certification | CCNA Online Training Course | RPA Robotic Process Automation Training Course in Chennai | Certification | RPA Training Course Chennai | SEO Training in Chennai | Certification | SEO Online Training Course