2012-06-10 17 views
7

Ho voluto tracciare utilizzando imshow in modo simile al secondo esempio qui http://www.scipy.org/Plotting_Tutorial ma per ridefinire la scala per l'asse. Mi piacerebbe anche che l'immagine rimanga ferma mentre lo faccio!Come posso cambiare la scala di imshow in matplotlib senza allungare l'immagine?

Il codice dell'esempio:

from scipy import * 
from pylab import * 

# Creating the grid of coordinates x,y 
x,y = ogrid[-1.:1.:.01, -1.:1.:.01] 

z = 3*y*(3*x**2-y**2)/4 + .5*cos(6*pi * sqrt(x**2 +y**2) + arctan2(x,y)) 

hold(True) 
# Creating image 
imshow(z, origin='lower', extent=[-1,1,-1,1]) 

xlabel('x') 
ylabel('y') 
title('A spiral !') 

# Adding a line plot slicing the z matrix just for fun. 
plot(x[:], z[50, :]) 

show() 

Se modifico la misura essere più ampio, ad esempio:

imshow(z, origin='lower', extent=[-4,4,-1,1]) 

Poi l'immagine risultante viene allungata. Ma tutto quello che volevo fare era cambiare le zecche in modo che coincidessero con i miei dati. So che posso usare pcolor per conservare i dati X e Y, anche se questo ha altre implicazioni.

ho trovato questa risposta che mi permette di rifare manualmente tutte le zecche:

How do I convert (or scale) axis values and redefine the tick frequency in matplotlib?

Ma che sembra un po 'eccessivo.

C'è un modo per cambiare solo nella misura indicata dalle etichette?

risposta

11

A help(imshow) si trova l'argomento aspect, che dopo un po 'di sperimentazione sembra dare quello che si desidera (un'immagine quadrata della spirale ma con scala x da -4 a 4 e y da -1 a 1) quando viene utilizzato in questo modo:

imshow(z, origin='lower', extent=[-4,4,-1,1], aspect=4) 

Ma adesso la tua plot è ancora da -1 a 1, quindi bisogna modificare anche quello ...

plot(x[:]*4, z[50, :]) 

penso che quando si dispone di diversi elementi che dovrebbe essere modificato, usando solo uno -line tick rilabeling invece non è overkill:

xticks(xticks()[0], [str(t*4) for t in xticks()[0]]) 
+0

Aspect è una buona soluzione per il mio caso di utilizzo in quanto non ho una trama lì. E aggiusti gli xticks in una soluzione più elegante della mia. Grazie! – ubershmekel

Problemi correlati