Mit Matplotlib, wie kann ich die folgenden algebraischen Gleichungen in 3d plotten? Möchte den Schnittpunkt von 3-Ebenen visualisieren.Mit Matplotlib wie algebraische Gleichungen plotten
x - y + 2z = 5
y - z = -1
z = 3
Mit Matplotlib, wie kann ich die folgenden algebraischen Gleichungen in 3d plotten? Möchte den Schnittpunkt von 3-Ebenen visualisieren.Mit Matplotlib wie algebraische Gleichungen plotten
x - y + 2z = 5
y - z = -1
z = 3
Die Gleichungen müssen in eine geschlossene Form gebracht werden, um mit Matplotlib geplottet zu werden. Dies ist relativ einfach für diese Gleichungen aus der Frage.
Man kann dann ein Meshgrid in 2 Dimensionen verwenden, um die Werte der fehlenden Dimension gemäß den Gleichungen zu berechnen. Nun können wir Werte für alle 3 Dimensionen verwenden, um die Ebenen mit plot_surface
zu plotten.
from mpl_toolkits.mplot3d import Axes3D
import matplotlib.pyplot as plt
import numpy as np
z1 = lambda x,y: 5./2.-x/2.+y/2. # x - y + 2z = 5
z2 = lambda x,y: y+1 # y - z = -1
z3 = lambda x,y: 3.*np.ones_like(x) # z = 3
x = np.arange(-3,3)
X,Y = np.meshgrid(x,x)
fig = plt.figure()
ax = fig.gca(projection='3d')
ax.set_xlabel("x"); ax.set_ylabel("y"); ax.set_zlabel("z")
surf = ax.plot_surface(X, Y, z1(X,Y), color="C1", linewidth=0, shade=False)
surf = ax.plot_surface(X, Y, z2(X,Y), color="C2", linewidth=0, shade=False)
surf = ax.plot_surface(X, Y, z3(X,Y), color="C3", linewidth=0, shade=False)
plt.show()
Die Flugzeuge scheinen nicht zu schneiden, was nicht matplotlib gebührt Renderer eine echte 3D zu sein.
Danke! Genau das habe ich gesucht. Gibt es keinen Grund, kein echter 3D-Renderer zu sein? Ich sehe komplexere 3D-Beispiele in ihrer Galerie. – Godekere
Die Künstler in einem 3D-Plot werden einfach auf 2D-Raum projiziert. Dies bedeutet, dass ein Künstler entweder vor oder hinter einem anderen steht, aber nicht teilweise davor und teilweise dahinter. Der einzige Weg, dies in Matplotlib zu lösen, wäre, die Ebene je nach Betrachtungswinkel in zwei Teile zu unterteilen. – ImportanceOfBeingErnest
Mit% matplotlib Notebook und mit alpha = 0,5 in allen plot_surface .... zB :. ax.plot_surface (X, Y, z1 (X, Y), Alpha = 0.5, rstride = 100, cstride = 100), kann ich den Betrachtungswinkel ändern, um den Schnittpunkt der Ebenen im Jupyter Notebook zu sehen und alle Ebenen schneiden sich bei a Punkt – Godekere
Es heißt * matplotlib * nicht * mat ** h ** plotlib * - bedeutet, dass mathematische Funktionen nicht dargestellt werden. Sie müssen diskrete Werte von Paaren (x, y, z) berechnen, um sie zu zeichnen. Alternativ können Sie sich auch das [sympys Plotting-Modul] (http://docs.sympy.org/dev/modules/plotting.html) ansehen, das eher mit dem übereinstimmt, was Sie erreichen möchten. – kazemakase
Ich dachte immer Matplotlib steht für Mat ** h ** ematic Plotten Bibliothek. – ImportanceOfBeingErnest
@ImportanceOfBeingErnest nur um zu verdeutlichen, schrieb das OP ursprünglich matplotlib mit h. Ich dachte eher, dass es nach Matlab benannt wurde, was eine Abkürzung für * Matrix Laboratory * ist. – kazemakase