real - python graficos 2d
Diagrama 3D Matplotlib-Formato 2D para datos de entrada? (1)
Necesitas generar la malla de malla. X, Y y Z deben ser matrices en 2D
import numpy
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import axes3d
def peaks(x,y):
return x * numpy.sin(y)
fig = plt.figure()
ax = fig.gca(projection=''3d'')
X = Y= numpy.arange(-3, 3, 0.1).tolist()
X, Y = numpy.meshgrid(X, Y)
Z = []
for i in range(len(X)):
Z.append(peaks(X[i],Y[i]))
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z, zdir=''z'', offset=-8)
cset = ax.contour(X, Y, Z, zdir=''x'', offset=-8)
cset = ax.contour(X, Y, Z, zdir=''y'', offset=8)
ax.set_xlabel(''X'')
ax.set_xlim(-8, 8)
ax.set_ylabel(''Y'')
ax.set_ylim(-8, 8)
ax.set_zlabel(''Z'')
ax.set_zlim(-8, 8)
plt.show()
Estoy trazando una función de dos parámetros con matplotlib. Copié un ejemplo en el tutorial matplotlib y lo transformé con mis propios datos de entrada: vectores X e Y (igualmente espacios números en -3: 3) y Z = picos (X, Y) con picos una función que definí antes de eso. ¿Qué está mal?
def peaks(x,y):
xsq=x**2
ysq=y**2
xsq_one=(x+1)**2
ysq_one=(y+1)**2
m1=3*(1-x)**2
m2=10*(x/5-x**3-y**5)
m3=1/3
return m1*numpy.exp(-xsq-ysq_one)-m2*numpy.exp(-xsq-ysq)-m3*numpy.exp(-xsq_one-ysq)
from mpl_toolkits.mplot3d import axes3d
import matplotlib.pyplot as plt
fig = plt.figure()
ax = fig.gca(projection=''3d'')
X=Y=numpy.arange(-3,3,0.01).tolist()
Z=[]
for i in range(len(X)):
Z.append(peaks(X[i],Y[i]))
ax.plot_surface(X, Y, Z, rstride=8, cstride=8, alpha=0.3)
cset = ax.contour(X, Y, Z, zdir=''z'', offset=-100)
cset = ax.contour(X, Y, Z, zdir=''x'', offset=-40)
cset = ax.contour(X, Y, Z, zdir=''y'', offset=40)
ax.set_xlabel(''X'')
ax.set_xlim(-40, 40)
ax.set_ylabel(''Y'')
ax.set_ylim(-40, 40)
ax.set_zlabel(''Z'')
ax.set_zlim(-100, 100)
plt.show()
¡Gracias por el consejo!