2012-03-28 20 views
13

tengo que traducir una imagen trazando script desde MATLAB para matplotlib/pylab, y yo estoy tratando de lograr el mismo efecto que la imagen de abajo como Matlab:¿Cómo dejo que mi trama matplotlib vaya más allá de los ejes?

image generated using matlab

Como se puede ver, el orden z de las parcelas parece ser mayor que el orden z de la cuadrícula, por lo que los marcadores no están ocultos por los ejes. Sin embargo, no puedo encontrar una manera de hacer lo mismo con mi imagen matplotlib con:

eimage generated with matplotlib

Me pregunto si es posible obtener la misma pantalla sin tener que aumentar los límites de la Y eje.

+0

Estoy seguro de que tiene buenas razones para preferir el comportamiento Matlab, pero en mi humilde opinión dibujo fuera de los ejes es más de un fallo de una función. – joaquin

Respuesta

30

Para hacer que el marcador se muestre más allá de los ejes, puede desactivar el recorte. Esto se puede hacer utilizando el argumento de palabra clave en el plot comando clip_on=False.

Por ejemplo:

import matplotlib.pyplot as plt 
plt.plot(range(5), range(5), 'ro', markersize=20, clip_on=False, zorder=100) 
plt.show() 

enter image description here

+0

+1 ¡Sí! Estoy bastante seguro de que esto es lo que OP estaba buscando, pero eso no estaba tan claro, al menos para mí, hasta su comentario sobre mi (deficiente) respuesta. Esperemos que OP acepte este. Gracias por publicar. – bernie

+0

GRACIAS SOOOOO MUCH !!!!! Esto es exactamente lo que necesitaba! – nay

+0

¡Genial! Justo lo que necesitaba. – bretcj7

1

Este es un ejemplo completo de cómo utilizar el zorder kwarg: http://matplotlib.sourceforge.net/examples/pylab_examples/zorder_demo.html
Nota que un mayor orden z equivale a un elemento gráfico que se está más en el primer plano.

a su segunda pregunta, echar un vistazo a la figsize kwarg a instancias de la clase Figure: http://matplotlib.sourceforge.net/api/figure_api.html?highlight=figsize#matplotlib.figure.Figure

Si se encuentra con problemas, por favor, puesto algo de su código y vamos a ser capaces de dar más- recomendaciones detalladas La mejor de las suertes.

+0

Gracias, echaré un vistazo a los 2 enlaces que anotó. Para el código, creo que es un comportamiento predeterminado de matplotlib considerar que si el punto en sí (aquí por ejemplo 0.2; 0) es visible, entonces no es un problema si el marcador a su alrededor no es completamente visible. Ese es el comportamiento que estoy tratando de cambiar – nay

+0

@nay: parece que tom10 tiene la respuesta a su pregunta. Feliz codificación! – bernie

+0

si !!! Muchas gracias por la ayuda =) – nay

0

Si está trazando las líneas una tras otra, simplemente cambie el orden de las llamadas de trazado y eso arreglaría el orden z.

+0

Gracias por su respuesta, en realidad lo que trato de hacer es hacer que el orden x de las gráficas sea mayor que el orden z de la cuadrícula, de modo que los marcadores (por ejemplo, en (0.2; 0)) se vuelven completamente visibles como la imagen de matlab. – nay

Cuestiones relacionadas