Wie zeichne ich eine 3D -Patch -Sammlung in Matplotlib auf?
Posted: 16 May 2025, 18:36
Ich versuche, mit drei Kreisen ein 3D -Diagramm in Matplotlib mit drei Kreisen zu erstellen, die jeweils am Ursprung zentriert sind, und mit einem Radius von 1, der in unterschiedliche Richtungen zeigt - um eine Kugel mit Radius 1 zu veranschaulichen, z. In 3D habe ich Probleme, die Patches überhaupt zu sehen, geschweige denn in verschiedene Richtungen zu orientieren. < /P>
aufrufen kann () non ', wird ein leerer Achsen3d angezeigt. Überall. Ich würde erwarten, entweder Zs = 0 (ein Z-Koordinat für alle drei Patches) oder ZS = [0,0,0] (ein separater Z-Koordinat für jeden Patch) zu setzen, aber beide werfen einen Fehler aus:
[*] Um die Patches anders auszurichten, würde ich erwarten, dass ich in der Lage sein würde, etwas wie zdir = ['x', 'y', 'z'] zu übergeben, aber die Ergebnisse unterscheiden sich nicht, ob ich diese oder 'z' oder ['Z'] . Ax.Add_Collection3D (Kreise, Zs = [0, 0, 0], Zdir = ['x', 'y', 'z']) < /code> Anstatt die Patch -Sammlung von 2D von 2D in 3D zu konvertieren, aber das löst auch einen Fehler aus:
Code: Select all
import matplotlib
import matplotlib.pyplot as P
import mpl_toolkits.mplot3d as M3
fig = P.figure()
ax = fig.add_subplot(1, 1, 1, projection='3d')
circles = matplotlib.collections.PatchCollection(
[matplotlib.patches.Circle((0, 0), 1) for count in range(3)],
offsets=(0, 0))
M3.art3d.patch_collection_2d_to_3d(circles, zs=[0], zdir='z')
ax.add_collection(circles)
P.show()
< /code>
Ausführen dieses Programms füllt das gesamte Plotfenster mit Blau, d. H. Die Gesichtsfarbe der Patches, egal wie ich das Diagramm drehe. Wenn ich in der PatchCollection ()
[*] Um die Patches anders auszurichten, würde ich erwarten, dass ich in der Lage sein würde, etwas wie zdir = ['x', 'y', 'z'] zu übergeben, aber die Ergebnisse unterscheiden sich nicht, ob ich diese oder 'z' oder ['Z'] . Ax.Add_Collection3D (Kreise, Zs = [0, 0, 0], Zdir = ['x', 'y', 'z']) < /code> Anstatt die Patch -Sammlung von 2D von 2D in 3D zu konvertieren, aber das löst auch einen Fehler aus: