¿Cómo trazar una colección de parches en 3D en matplotlib?

Intento hacer un gráfico 3D en matplotlib con tres círculos, cada uno centrado en el origen y con un radio de 1, apuntando en diferentes direcciones, para ilustrar una esfera de radio 1, por ejemplo.

En 2D haría una colección de parches circulares y la agregaría a los ejes. En 3D estoy teniendo problemas para que los parches se muestren, por no hablar de orientarlos en diferentes direcciones.

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() 

La ejecución de este progtwig llena toda la ventana del gráfico con azul, es decir, el color de la cara de los parches, sin importar cómo lo rote. Si configuro facecolor='none' en la llamada PatchCollection() , aparece un Axes3D vacío.

Cosas que he probado:

ValueError: configurando un elemento de matriz con una secuencia.

  • Para orientar los parches de manera diferente, espero poder pasar algo como zdir=['x', 'y', 'z'] pero los resultados no son diferentes, ya sea que pase eso o 'z' o ['z'] .

  • También habría esperado poder hacer ax.add_collection3d(circles, zs=[0, 0, 0], zdir=['x', 'y', 'z']) lugar de convertir la colección de parches de 2d a 3d, pero que arroja un error también:

    AttributeError: el objeto ‘Patch3DCollection’ no tiene atributo ‘set_sort_zpos’

  •  import matplotlib.pyplot as plt from matplotlib.patches import Circle, PathPatch from mpl_toolkits.mplot3d import Axes3D import mpl_toolkits.mplot3d.art3d as art3d fig = plt.figure() ax=fig.gca(projection='3d') for i in ["x","y","z"]: circle = Circle((0, 0), 1) ax.add_patch(circle) art3d.pathpatch_2d_to_3d(circle, z=0, zdir=i) ax.set_xlim3d(-2, 2) ax.set_ylim3d(-2, 2) ax.set_zlim3d(-2, 2) plt.show()