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?
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