Ich versuche ein 3D-Diagramm in Matplotlib mit drei Kreisen zu machen, die jeweils am Ursprung zentriert sind und einen Radius von 1 haben, in verschiedene Richtungen zeigend - um beispielsweise eine Kugel mit dem Radius 1 zu veranschaulichen.
In 2D würde ich eine Kreispatchesammlung machen und sie zu den Achsen hinzufügen. In 3D habe ich Probleme, die Patches überhaupt zu zeigen, geschweige denn, sie in verschiedene Richtungen zu orientieren.
%Vor% Wenn Sie dieses Programm ausführen, wird das gesamte Plotfenster mit Blau gefüllt, d. h. die Gesichtsfarbe der Patches, egal wie ich das Plot rotiere. Wenn ich facecolor='none'
im PatchCollection()
-Aufruf einstelle, erscheint ein leeres Axes3D
.
Dinge, die ich versucht habe:
CircleCollection
anstelle von PatchCollection
verwende, werden keine Patches angezeigt. Der Parameter zs
im Aufruf patch_collection_2d_to_3d()
ist ungerade; Ich würde erwarten, entweder zs=0
(eine Z-Koordinate für alle drei Patches) oder zs=[0,0,0]
(eine separate Z-Koordinate für jeden Patch), aber beide werfen einen Fehler:
ValueError: Setzen eines Array-Elements mit einer Sequenz.
Um die Patches anders zu orientieren, würde ich erwarten, etwas wie zdir=['x', 'y', 'z']
weitergeben zu können, aber die Ergebnisse unterscheiden sich nicht, egal ob ich das übergebe oder 'z'
oder ['z']
.
ax.add_collection3d(circles, zs=[0, 0, 0], zdir=['x', 'y', 'z'])
anstatt die Patch-Sammlung von 2D nach 3D konvertieren könnte, aber das wirft auch einen Fehler auf:
AttributeError: Das 'Patch3DCollection' Objekt hat kein Attribut 'set_sort_zpos'
Tags und Links python matplotlib mplot3d