Heatmap 3D sur python, problème pour la variable Z
Résolu/Ferméyg_be Messages postés 23405 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 20 décembre 2024 - 20 déc. 2022 à 16:50
- Heatmap python
- Citizen code python avis - Accueil - Outils
- Python est introuvable. exúcutez sans argument pour procúder ó l ✓ - Forum Python
- Trouver la position d'un élément dans une liste python ✓ - Forum Python
- Python pix ✓ - Forum Python
5 réponses
19 déc. 2022 à 20:06
bonjour,
quand tu partages du code, peux-tu préciser le langage (python)? il s'affichera alors mieux.
Il me semble que ton heatmap affiche bien la valeur du Z. Que veux-tu changer exactement?
Bonsoir,
D'accord j'y veillerai la prochaine fois.
En fait, je veux utiliser plot_surface(X,Y,Z) pour le tracé mais je ne sais pas quoi renseigné pour Z, je n'ai pas l'expression exacte (et Z doit être de dimension 2).
Merci
20 déc. 2022 à 09:48
Tu veux utiliser comme Z la valeur de l'intensité de ton heatmap?
As-tu écrit le code que tu nous montres? Le comprends-tu? Comment peux-tu faire cet exercice sans comprendre le code de départ?
20 déc. 2022 à 10:55
Oui je veux utiliser Z comme la valeur de l'intensité de ma heatmap. Le code n'est pas le miens mais on me l'a expliqué et je pense l'avoir compris. Cependant le détail que je ne comprend pas est au sujet de la sortie im qui va avoir une dimension qui depend de la résolution et c'est cela que je n'arrive pas à exploiter .
20 déc. 2022 à 13:38
Quel est ton souci avec les dimensions de im?
20 déc. 2022 à 13:45
quand j'essaye d'utiliser plot_surface(X,Y,Z) , on me dit qu'il y a :
"Mismatch is between arg 0 with shape (1000,) and arg 2 with shape (250, 250)."
Je comprend bien pourquoi il y a ce message d'erreur mais je vois pas comment résoudre ce problème.
20 déc. 2022 à 14:11
Ce message d'erreur ne nous permet pas de t'aider si tu ne nous montres pas le code complet.
Est-ce la première fois que tu utilises plot_surface? As-tu lu la documentation et analysé des exemples?
Voila le code que j'ai utilisé. Oui j'ai verifié la documentation, j'ai un problème au niveau de ma variable d'intensité seulement.
ax = plt.axes(projection='3d') z = nearest_neighbours(xs, ys, 250, 64)[0] ax.plot_surface(xs, ys, z , cmap='YlGnBu_r',vmin=0,vmax=1)
20 déc. 2022 à 14:26
Je pense que tu ne veux pas faire un heatmap 3d, mais plutôt une représentation 3d d'un heatmap 2d. Je me trompe?
Dans la documentation de plot_surface(), que dit-on de la dimension des paramètres X et Y?
Oui exactement, je veux une representation 3D d'un heatmap 2D, je me suis mal exprimé.
X,Y et Z sont censés être des 2D arrays
20 déc. 2022 à 15:25
xs et ys doivent donc être en 2D, ce qui n'est pas le cas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionEffectivement, j'étais concentré sur le Z mais c'était X et Y que je devais changer. J'ai pu obtenir ma heat map avec le code ci dessous. Merci pour votre aide
pas = (extent[1]-extent[0])/250 XE = [extent[0] + n*pas for n in range(0,250) ] pas2 = (extent[3]-extent[2])/250 YE = [extent[2] + n*pas2 for n in range(0,250) ] X,Y = np.meshgrid(XE,YE) fig = plt.figure(figsize =(14, 9)) ax = plt.axes(projection='3d') z = nearest_neighbours(X1, Y1, 250, 64)[0] ax.plot_surface(X, Y, z , cmap=cm.jet) ax.view_init(35,20)
20 déc. 2022 à 16:50
Je trouve que ceci donne mieux:
ax.plot_surface(X, Y, z , cmap=cm.jet, c=z)