2011-09-07 43 views
26

¿Cómo puedo hacer un trazado en 3D sin mostrar los ejes?¿Cómo puedo ocultar los ejes en matplotlib 3d?

Al trazar un gráfico en 3D, Matplotlib no solo dibuja los ejes x, y, z, sino que dibuja cuadrículas gris claro en los planos x-y, y-zy x-z. Me gustaría dibujar una trama 3D "libre flotante", sin ninguno de estos elementos.

cosas que he intentado:

# Doesn't work; this hides the plot, not the axes 
my_3d_axes.set_visible(False) 

# Doesn't do anything. Also, there's no get_zaxis() function. 
my_3d_axes.get_xaxis().set_visible(False) 
my_3d_axes.get_yaxis().set_visible(False) 
+0

lo que ha intentado utiliza para trabajar. Desafortunadamente, no estoy seguro de que haya una manera de hacerlo fácilmente, nunca más ... ¡Afortunadamente todavía existe! –

+0

@Joe Klington: Por curiosidad, ¿cuál de las dos cosas que probé solía funcionar? Me pregunto, porque el primero, axes.set_visible(), tiene la siguiente descripción de ayuda: "Establecer la visibilidad del artista". Por lo tanto, parece que siempre se suponía que establecía la visibilidad del gráfico, no de los ejes. En cuanto al segundo, ¿cómo funcionó, cuando nunca hubo un método get_zaxis()? – SuperElectric

+0

Era 'my_3d_axes.set_visible (False)' que solía funcionar, si no recuerdo mal. (Lo cual es bastante contrario a la intuición, en realidad. Oculta la trama completa de las tramas 2D, por lo que la cambiaron para que sea la misma para las tramas 3D.) –

Respuesta

21

Ben Raíz proporciona un parche que soluciona este de 1.0.1. Se puede encontrar como un archivo adjunto al último correo electrónico de this thread. Para citar a Ben:

Ok, parece que el ocultamiento de los ejes 3d fue una característica añadida después de la versión v1.0 (pero antes de que comenzara a trabajar en mplot3d). Este parche debería habilitar la función básica sin interferir con las funciones existentes. Para ocultar los ejes, que tendría que establecer el miembro "_axis3don" privado a Falso, así:

ax = plt.gca (proyección = '3d') ax._axis3don = False

Si hágalo de esta manera, obtendrá lo que quiere ahora, y su código seguirá siendo compatible con mplot3d cuando actualice (aunque el método preferido sería llamar a set_axis_on() o set_axis_off()).

Espero que ayude!

Ben Raíz

+20

'ax.set_axis_off()' y 'set_axis_on()' ahora es compatible (1.4.1) – user989762

Cuestiones relacionadas