2009-05-29 10 views

Respuesta

44

Este es el 2,0 solución Matplotlib sugerido desde la página oficial HERE:

import numpy as np 
import matplotlib.pyplot as plt 

x = np.linspace(0, 2*np.pi, 100) 
y = np.sin(x) 

ax = plt.subplot(111) 
ax.plot(x, y) 

# Hide the right and top spines 
ax.spines['right'].set_visible(False) 
ax.spines['top'].set_visible(False) 

# Only show ticks on the left and bottom spines 
ax.yaxis.set_ticks_position('left') 
ax.xaxis.set_ticks_position('bottom') 

plt.show() 

enter image description here

+2

Esta es la mejor que la respuesta aceptada en las versiones más nuevas de matplotlib. – ffledgling

32

[editar] matplotlib en este momento (2013-10) en la versión 1.3.0, que incluye esta

Esa capacidad fue en realidad sólo añadió, y se necesita la versión de Subversion para ello. Puede ver el código de ejemplo here.

Me acabo de actualizar para decir que hay una mejor example en línea ahora. Aún necesita la versión de Subversion, sin embargo, aún no ha habido una versión con esto.

[edit] Matplotlib 0.99.0 RC1 acaba de ser lanzado, e incluye esta capacidad.

+0

asegúrese de leer la advertencia al http://matplotlib.sourceforge.net/mpl_toolkits/axes_grid/users/overview.html sobre el soporte de tick-mark incompleto antes de intentar y usar lo anterior con, por ejemplo, etiquetas giradas! – timday

+2

Asegúrate de que estés satisfecho con mis ediciones. – tacaswell

+0

Parece que depende de cómo construyas el eje. Los ejes generados por '' mpl.subplots'' no se pueden usar de esta manera? –

7

Si usted no necesita garrapatas y tal (por ejemplo, para el trazado ilustraciones cualitativos) también se podría utilizar esta solución rápida:

Sacar el eje invisible (por ejemplo, con plt.gca().axison = False) y luego dibujar manualmente con plt.arrow.

+1

esto parece eliminar las espinas, pero deja las marcas en su lugar. ¿Alguna idea de cómo quitar las garrapatas también? –

+1

@Rob: Tiene razón, en realidad usé una solución diferente en el guión en el que estaba pensando. Cambié mi respuesta, esto debería funcionar ahora, pero en general la solución aceptada arriba es mejor. – nikow

56

Alternativamente, esta

def simpleaxis(ax): 
    ax.spines['top'].set_visible(False) 
    ax.spines['right'].set_visible(False) 
    ax.get_xaxis().tick_bottom() 
    ax.get_yaxis().tick_left() 

parece conseguir el mismo efecto en un eje sin perder apoyo etiqueta girado.

(Matplotlib 1.0.1; solución inspirada en this).

-4

Esto es mucho más rudimentaria, pero podría hacer el truco:

remove_border()

0

(Esto es más un comentario de extensión, además de la comprensión respuestas nsive aquí)


en cuenta que podemos ocultar cada uno de estos tres elementos de forma independiente el uno del otro:.

  • Para ocultar el borde (también conocido como "columna vertebral"): ax.set_frame_on(False) o ax.spines['top'].set_visible(False)

  • Para ocultar las garrapatas: ax.tick_params(top=False)

  • Para ocultar º e etiquetas: ax.tick_params(labeltop=False)

Cuestiones relacionadas