Wie zeichne ich eine 3D-Patch-Sammlung in Matplotlib?

8

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:

  • Wenn ich 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'] .

  • Ich hätte auch erwartet, dass ich 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'

  •   
ptomato 10.06.2011, 08:55
quelle

1 Antwort

11
%Vor%     
Lilith 14.06.2011, 21:41
quelle

Tags und Links