2010-09-17 22 views
7

estoy usando mplot3d así:¿Cómo puedo eliminar los ejes en una clase Axes3D?

fig = plt.figure(figsize=(14,10)) 

ax = Axes3D(fig,azim=azimuth,elev=elevation) 

ax.grid(on=False) 

# Additional axes 

xspan = np.linspace(0,80+20) 
yspan = np.linspace(0,60+20) 
zspan = np.linspace(0,60+20) 

ax.plot3D(xspan,np.zeros(xspan.shape[0]),np.zeros(xspan.shape[0]),'k--') 
ax.plot3D(np.zeros(yspan.shape[0]),yspan,np.zeros(yspan.shape[0]),'k--') 
ax.plot3D(np.zeros(zspan.shape[0]),np.zeros(zspan.shape[0]),zspan,'k--') 

ax.text(xspan[-1]+10, .5, .5, "x", color='red') 
ax.text(.5, yspan[-1]+10, .5, "y", color='red') 
ax.text(.5, .5, zspan[-1]+10, "z", color='red') 

NZindices = np.nonzero(t2)[0] 
#print "Nonzero values of T^2", len(NZindices), "out of", X.shape[0] 

ONZ_X, ONZ_Y, ONZ_Z, ONZ_p = [],[],[],[] 
INZ_X, INZ_Y, INZ_Z, INZ_p = [],[],[],[] 

# Separate indices I/O 
for ind in NZindices: 
    if ind <= HALF_INDICES: 
     INZ_X.append(X[ind]) 
     INZ_Y.append(Y[ind]) 
     INZ_Z.append(Z[ind]) 
     INZ_p.append(t2[ind]) 
    else: 
     ONZ_X.append(X[ind]) 
     ONZ_Y.append(Y[ind]) 
     ONZ_Z.append(Z[ind]) 
     ONZ_p.append(t2[ind]) 

cax = ax.scatter(ONZ_X, ONZ_Y, ONZ_Z, c=ONZ_p, marker='o', s=20) 
cax = ax.scatter(INZ_X, INZ_Y, INZ_Z, c=INZ_p, marker='<', s=20) 

fig.colorbar(cax, shrink=0.7) 

success = float(len(NZindices))/X.shape[0]*100 

fig.savefig(fname) 
#plt.show() 

plt.clf() 
plt.close() 

Quiero quitar el original (x, y, z) de los ejes que vienen por defecto en Axes3D. ¿Algunas ideas? ¡Gracias!

+0

En una nota lateral, por favor, publique código de ejemplo independiente, en el futuro ... ¡Hace su pregunta _mucho_, _mucho_ más fácil de entender! –

Respuesta

9

Si entiendo su pregunta correctamente, todo lo que necesita hacer es llamar al ax.axis("off") o equivalente, ax.set_axis_off().

Sólo para asegurarse de que estamos en la misma página, el código de ejemplo podría producir algo como esto (si pudiera ser ejecutado como informados que ...):

alt text

Mientras querer algo como esto: alt text

Aquí está el código para generar el siguiente ejemplo, para futuras referencias:

import matplotlib.pyplot as plt 
from mpl_toolkits.mplot3d import Axes3D 
import numpy as np 

fig = plt.figure() 
ax = Axes3D(fig) 

# Draw x, y, and z axis markers in the same way you were in 
# the code snippet in your question... 
xspan, yspan, zspan = 3 * [np.linspace(0,60,20)] 
zero = np.zeros_like(xspan) 

ax.plot3D(xspan, zero, zero,'k--') 
ax.plot3D(zero, yspan, zero,'k--') 
ax.plot3D(zero, zero, zspan,'k--') 

ax.text(xspan.max() + 10, .5, .5, "x", color='red') 
ax.text(.5, yspan.max() + 10, .5, "y", color='red') 
ax.text(.5, .5, zspan.max() + 10, "z", color='red') 

# Generate and plot some random data... 
ndata = 10 
x = np.random.uniform(xspan.min(), xspan.max(), ndata) 
y = np.random.uniform(yspan.min(), yspan.max(), ndata) 
z = np.random.uniform(zspan.min(), zspan.max(), ndata) 
c = np.random.random(ndata) 

ax.scatter(x, y, z, c=c, marker='o', s=20) 

# This line is the only difference between the two plots above! 
ax.axis("off") 

plt.show() 
+0

Esto no funciona para mí en matplotlib 1.0.1. ¿Hay ahora una manera diferente de hacer esto o es un error? – ptomato

+0

@ptomato - Huh ... Probablemente un error, pero no estoy seguro. Sin embargo, no conozco otra forma de hacerlo. –

Cuestiones relacionadas