Building a 2D array using Matplotlib

So, I have a 2D array (named Data) that looks like this:

Shape 0 Shape 1 ... Shape N ------- ------- ------- Scale 0 | Value00 , Value01 ... Value0N | Scale 1 | Value10 , Value11 ... Value1N | . . . Scale N | ValueN0 , ValueN1 ... ValueNN | 

And I want to create a 3D plot where ValueXX is the Z axis. I tried two attempts, but each one gives me a surface that rotates with respect to the other, so I'm a little confused. Here is my first attempt at a solution:

 x,y = numpy.mgrid[0:50:50j,0:50:50j] f = Data fig = plt.figure() ax = Axes3D(fig) ax.plot_surface(x,y,f,rstride=1,cstride=1) 

Here is my second attempt:

 nx, ny = 50, 50 x = range(nx) y = range(ny) hf = plt.figure() ha = hf.add_subplot(111, projection='3d') X, Y = numpy.meshgrid(x, y) ha.plot_surface(X,Y,Data,rstride=1,cstride=1) 

Examining X and Y does not really help, because its square. I am not sure when X represents my "Scale", when it represents my "form".

So what is happening with these two examples? Is there a better way to build this array?

Thanks!

+4
source share
1 answer

If I understand that you are right, then confusion is what axis is that, right? If so, you can easily build a well-known asymmetric shape, and the plot will tell you everything. For example, using an example from the gallery :

 # By Armin Moser from mpl_toolkits.mplot3d import Axes3D import matplotlib import numpy as np from matplotlib import cm from matplotlib import pyplot as plt step = 0.04 maxval = 1.0 fig = plt.figure() ax = fig.add_subplot(111, projection='3d') # create supporting points in polar coordinates r = np.linspace(0,1.25,50) p = np.linspace(0,2*np.pi,50) R,P = np.meshgrid(r,p) # transform them to cartesian system X,Y = R*np.cos(P),R*np.sin(P) #Z = ((R**2 - 1)**2) Z = (X**2 + 0.2*Y**2 -1)**2 # <------- edit ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.jet) #ax.set_zlim3d(0, 1) ax.set_xlabel(r'$\phi_\mathrm{real}$') ax.set_ylabel(r'$\phi_\mathrm{im}$') ax.set_zlabel(r'$V(\phi)$') plt.show() 
+1
source

Source: https://habr.com/ru/post/1444003/


All Articles