comploter avec meshgrid et imshow
Imshow et meshgrid ne fonctionnent pas comme je le pensais. J'ai une fonction définie par un (x,y) le point en 2D qui retourne un scalaire f(x,y). Je veux visualiser la fonction f à l'aide de imshow.
x = np.linspace(0,4)
y = np.linspace(0,1)
X,Y = np.meshgrid(x,y)
Z = np.zeros((50,50))
for i in range(50):
for j in range(50):
Z[i,j] = f(X[i,j],Y[i,j])
fig = plt.figure()
plt.imshow(Z,extent=[0,4,1,0])
plt.show()
Cela fonctionne comme prévu, sauf dans la mesure où je pense qu'il devrait être [0,4,0,1]... Suis-je définir le Z[i,j] pour chaque (x,y) paire de manière incorrecte? Une explication de la façon dont cela fonctionne, ce serait génial! Merci!
OriginalL'auteur Cokes | 2014-05-20
Vous devez vous connecter pour publier un commentaire.
Autant que je suis conscient, le
imshow
est normalement utilisé pour afficher une image. La mesure est ensuite utilisé pour définir quelle taille il faut, dire que vous pourriez vouloir donner une image comme arrière-plan de l'intrigue.Au lieu de cela je pense que vous trouverez qu'il est plus intuitif à utiliser
pcolor
, une démo peut être trouvée ici. Il fonctionne commeimshow
de sorte que vous pouvez simplement approvisionnementZ
. Cependant, vous pouvez aussi lui donner leX
etY
tableaux. De cette manière, vous pouvez vérifier si votre fournissant les valeurs correctement:J'ai ajouté une fonction pour montrer que ça fonctionne. Notez que si votre fonction est capable de gérer des tableaux numpy vous pouvez remplacer l'initialisation de
Z
et les boucles for imbriquées avecC'est plus propre et plus rapide à calculer.
pcolor
est au ralenti pour les grands tableaux... envisagerpcolormesh
si vos tableaux sont grands et réguliers.OriginalL'auteur Greg