schreibe meine dipl auf python und muss jetzt so manche plots erstellen. nun bin ich auf ein problem beim 3d plotten gestossen.
mir ist das normale 3d plotten ja geläufig. man definiere einfach eine funktion mit def test(x,y): ... return f(x,y) und dann erstellt man ein meshgrid, mit zwei vektoren (X,Y). danach kann man einen surface plot erstellen wobei man das meshgrid auf die funktion anwendet. so einfach ist das leider bei mir nicht gegangen.
der funktion "test" werden 2 parameter übergeben, und die zu plottende funktion z = f(x,y) ist auch der return. jedoch muss innerhalb der funktion mal eine if abfrage gemacht werden, wo zum beispiel der übergebene parameter x auf irgendwas geprüft wird.
das ist im wesentlichen der fehler.
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
ich weiss leider nicht genau wie meshgrid arbeitet, und daher bin ich nicht in der lage mein problem zu lösen.
hat jemand eine idee? wär sehr dankbar? im folgenden noch mals das problem mit code dargestellt. hoffe jemand versteht mein problem
Code: Alles auswählen
def test(x,y)
if x > ...:
...
else:
...
return f(x,y)
fig = plt.figure()
ax = fig.gca(projection='3d')
x = np.arange(500, 550, 10)
y = np.arange(400, 450, 10)
X1, Y1 = np.meshgrid(x, y)
Z = test(X1,Y1)
surf = ax.plot_surface(X1, Y1, Z, rstride=1, cstride=1, cmap=cm.jet,linewidth=0, antialiased=False)
ax.set_zlim3d(1000, 4000)
ax.w_zaxis.set_major_locator(LinearLocator(10))
ax.w_zaxis.set_major_formatter(FormatStrFormatter('%.01f'))
fig.colorbar(surf, shrink=0.5, aspect=1)
plt.show()
vielen dank für euro hilfe