Comment puis-je changer l'échelle de imshow dans matplotlib sans étirement de l'image?
Je voulais de la parcelle à l'aide de imshow, de la même manière pour le deuxième exemple ici http://www.scipy.org/Plotting_Tutorial mais de redéfinir l'échelle pour l'axe. J'aimerais aussi l'image de rester immobile pendant que je fais cela!
Le code de l'exemple:
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()
Si je modifie la mesure plus large, par exemple:
imshow(z, origin='lower', extent=[-4,4,-1,1])
Alors la résultante de l'image est étirée. Mais tout ce que je voulais faire était de changer les tiques pour coïncider avec mes données. Je sais que je peux utiliser pcolor de conserver les données X et Y, mais qui a d'autres ramifications.
J'ai trouvé cette réponse qui me permet de répéter manuellement toutes les tiques:
Mais cela semble un peu exagéré.
Est-il un moyen pour changer seulement la mesure indiqué par les étiquettes?
OriginalL'auteur ubershmekel | 2012-06-10
Vous devez vous connecter pour publier un commentaire.
Un
help(imshow)
trouverez laaspect
argument, qui, après un peu d'expérimentation semble donner ce que vous voulez (un carré de l'image de la spirale, mais avec échelle en x de -4 à 4 et y allant de -1 à 1) lorsqu'il est utilisé comme ceci:Mais maintenant, votre
plot
est encore de -1 à 1, de sorte que vous auriez à modifier aussi bien...Je pense que lorsque vous avez plusieurs éléments qui doivent être modifiés, simplement en utilisant une ligne de tique reclassement au lieu de cela n'est pas exagéré:
OriginalL'auteur weronika