Matplotlib 3D-Diagramm – 2D-Format für Eingabedaten?

Ich zeichne eine Funktion von zwei Parametern mit matplotlib. Ich habe ein Beispiel in matplotlib Tutorial kopiert und mit meinen eigenen Eingabedaten umgewandelt: Vektoren X und Y (gleichmäßig Leerzeichen in -3: 3) und Z = Peaks (X, Y) mit Peaks eine Funktion, die ich definierte befohand. Was ist falsch?

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() 

Danke für den Rat!

  • PusherBadRequest Unbekannt Auth_Key
  • Wann __getattr__ zu verwenden
  • PANDAs erstellen eine Ordinale aufsteigende Wertspalte innerhalb der Gruppe
  • Wie bekomme ich einen zufälligen Wert im Python-Wörterbuch
  • Wie benutzt man die After-Methode, um einen regelmäßigen Anruf zu machen?
  • Wie kann ich Inline schreiben?
  • Machen Sie Tkinter Widget nehmen Fokus
  • Python-Multiprocessing für jeden Schlüssel im Wörterbuch
  • One Solution collect form web for “Matplotlib 3D-Diagramm – 2D-Format für Eingabedaten?”

    Du musst das Meshgrid erzeugen. X, Y und Z müssen 2D-Arrays sein

     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() 

    Bildbeschreibung hier eingeben

    Python ist die beste Programmiersprache der Welt.