2012-03-28 15 views
13

devo tradurre un'immagine tramando script da MATLAB per matplotlib/pylab, e sto cercando di ottenere lo stesso effetto, come l'immagine qui sotto MATLAB:Come faccio a lasciare che la trama matplotlib vada oltre gli assi?

image generated using matlab

Come si può vedere, l'ordine z delle trame sembra essere superiore all'ordine z della griglia, quindi i marcatori non sono nascosti dagli assi. Tuttavia, non riesco a trovare un modo per fare la stessa mia immagine matplotlib con:

eimage generated with matplotlib

Mi chiedo se è possibile ottenere lo stesso display senza dover aumentare i limiti del y asse.

+0

Sono sicuro di avere buoni motivi per preferire il comportamento MATLAB, ma secondo me il disegno di fuori degli assi è più di un bug di una caratteristica. – joaquin

risposta

30

Per fare in modo che il marcatore mostri oltre gli assi, è possibile disattivare il ritaglio. Questo può essere fatto usando l'argomento parola chiave nel comando plotclip_on=False.

Ad esempio:

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ì! Sono abbastanza certo che questo è ciò che OP stava cercando, ma non era così chiaro - almeno per me - fino al suo commento sulla mia risposta (scadente). Speriamo che OP accetterà questo. Grazie per la pubblicazione. – bernie

+0

GRAZIE SOOOOO MOLTO !!!!! Questo è esattamente ciò di cui avevo bisogno! – nay

+0

Ottimo! Proprio quello di cui avevo bisogno. – bretcj7

1

Questo è un esempio completo di come utilizzare il zorder kwarg: http://matplotlib.sourceforge.net/examples/pylab_examples/zorder_demo.html
noti che un ordine Z superiore equivale a un grafico elemento essendo più in primo piano.

Per la seconda domanda, uno sguardo al figsize kwarg alle istanze della classe Figure: http://matplotlib.sourceforge.net/api/figure_api.html?highlight=figsize#matplotlib.figure.Figure

Se si esegue in problemi, si prega di inviare alcuni di codice e saremo in grado di dare più- raccomandazioni dettagliate. Buona fortuna.

+0

Grazie, darò un'occhiata ai 2 link che hai annotato. Per il codice, penso che sia un comportamento predefinito di matplotlib considerare che se il punto stesso (qui ad esempio 0.2; 0) è visibile, allora non è un problema se il marcatore attorno ad esso non è completamente visibile. Questo è il comportamento che sto cercando di cambiare – nay

+0

@nay: sembra che tom10 abbia la risposta alla tua domanda. Buona programmazione! – bernie

+0

si !!! Grazie mille per l'aiuto =) – nay

0

Se si tracciano le linee una dopo l'altra, è sufficiente modificare l'ordine delle chiamate di tracciamento e ciò corregge l'ordine z.

+0

Grazie per la tua risposta, in realtà quello che sto cercando di fare è di rendere l'ordine x dei grafici superiore all'ordine z della griglia stessa, in modo che i marcatori (ad esempio a (0,2; 0)) diventano completamente visibili come l'immagine MATLAB. – nay

Problemi correlati