Tracer un graphe en 3D en python

abouMPSI

Re: Tracer un graphe en 3D en python

Message par abouMPSI » 07 juil. 2016 19:41

je n'ai pas lu en détail, mais je pense que c'est un maillage
https://fr.wikipedia.org/wiki/Maillage
et que les coordonnées (xi, yi) sont donc conservées dans un tableau (une matrice).

Messages : 1

Inscription : 09 déc. 2013 17:48

Profil de l'utilisateur : Élève de lycée

Re: Tracer un graphe en 3D en python

Message par Leo11 » 07 juil. 2016 23:50

Ben c'est ce que je pense aussi, mais dans ce cas, on a juste une matrice contenant les (xi, yi) et pas deux matrices X et Y non ?

Messages : 1

Inscription : 09 déc. 2013 17:48

Profil de l'utilisateur : Élève de lycée

Re: Tracer un graphe en 3D en python

Message par Leo11 » 07 juil. 2016 23:53

En fait np*, je pense que tu as raison, je ne saisis pas bien ce qui se passe dans Z =X**2 + Y**2... Je veux bien que tu m'expliques si tu as le temps :).

Messages : 9686

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Tracer un graphe en 3D en python

Message par fakbill » 08 juil. 2016 00:19

Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 3823

Inscription : 17 avr. 2012 21:19

Profil de l'utilisateur : Élève de lycée

Re: Tracer un graphe en 3D en python

Message par bullquies » 08 juil. 2016 00:49

A mon avis tu devrais bien faire une heatmap pour présenter tes résultats.
Avec comme abscisse les valeurs de p que tu as testé, comme ordonnées les valeurs de d que tu as testé par exemple, et la couleur représentant la proportion.

Après ce que tu cherches peut-être à faire, si j'ai bien compris, c'est choisir un modèle et faire une régression (bref fitter un modèle).
Mais pour ça il faut que tu aies déjà tes résultats de simulation, ça ne devrait pas prendre longtemps. C'est là que tu décides d'une (ou des) types de fonctions que tu veux essayer de coller :) Je suis intéressé par ce que tu trouves si jamais t'as le coeur à poster tes résultats !

Après si tu n'y arrives pas, ça part dans le learning :mrgreen:


EDIT: maintenant que j'y pense, quand tu parles de faire 10 fois l'expérience pour un p et d donné et de faire la moyenne, tu peux aussi stocker la variance du résultat. Cette grandeur peut contenir des infos importantes... si le taux de mortalité vaut parfois 0.1 et 0.9 pour le même couple de valeurs p et d, c'est pas pareil que s'il vaut toujours 0.5 pour le même couple de valeurs.
The Axiom of Choice is obviously true, the Well-Ordering Principle is obviously false, and nobody knows about Zorn's Lemma. - Jerry Bona

Messages : 9686

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Tracer un graphe en 3D en python

Message par fakbill » 08 juil. 2016 10:14

Mouais...c'est ultra long d'écrire un livre et ca ne rapporte rien ou presque ;)

Bon sinon, X et Y dans l'exemple ici ce sont des matrices. À partir de x et y qui sont des range, on crée X et Y qui sont des matrices.
Tu as disons x et y qui vont de 0 à 9 par pas de 1.
Tu veux calculer Z sur [0,9]^2 avec Z = X**2 - Y**2. Il te faut donc que X contienne 100 élements et Y aussi.
Moralement, X contient la première coordonnée des 100 couples de valeurs (x,y) et Y la seconde.

>>> nx, ny = (3, 2)
>>> x = np.linspace(0, 1, nx)
>>> y = np.linspace(0, 1, ny)
>>> xv, yv = meshgrid(x, y)
>>> xv
array([[ 0. , 0.5, 1. ],
[ 0. , 0.5, 1. ]])
>>> yv
array([[ 0., 0., 0.],
[ 1., 1., 1.]])

je ne fais que citer la bonne doc : http://docs.scipy.org/doc/numpy/referen ... hgrid.html
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Avatar de l’utilisateur
np*

Messages : 1

Inscription : 28 nov. 2015 14:49

Profil de l'utilisateur : Enseignant (CPGE)

Re: Tracer un graphe en 3D en python

Message par np* » 08 juil. 2016 10:33

Bonjour,
fakbill a écrit :Le pb n'es pas d'être nul en numpy. le pb est de ne pas savoir utiliser UN outil, n'importe lequel, pour ploter ses data.
C'est un truc que tout cadre avec un background scientifique devrait savoir faire.
lire un doc ou un tuto aussi ;)
Je ne comprends pas l'intérêt, ni le sens, de ce commentaire. Leo11 est peut-être un cadre-ingénieur honteux qui se cache derrière un pseudonyme pour masquer son incompétence sur un forum pour élèves. Mais Leo11 est peut-être aussi un apprenant qui pose ses questions pour un jour savoir utiliser cet outil. Il me semble qu'il fait preuve dans ses réponses de volontarisme, remerciant ses interlocuteurs, indiquant chercher par lui même avant de venir reposer de nouvelles questions. À ce titre, il mérite peut-être mieux qu'un simple lien* vers une page de documentation, assez technique, qui moi-même m'a longtemps posé des problèmes de compréhension (mais je fais sans doute partie "du problème").

Nous n'avons pas la même conception de l'apprentissage de l'informatique pour débutants, surtout quand eux-même disent ne pas bien comprendre et je comprends que votre position, que je ne partage pas, soit que l'on apprenne bien l'informatique (uniquement ?) en codant des projets conséquents et en lisant directement la documentation.
Leo11 a écrit :Ben c'est ce que je pense aussi, mais dans ce cas, on a juste une matrice contenant les (xi, yi) et pas deux matrices X et Y non ?
La question est légitime et c'est un point de Numpy/Matlab qui pose de nombreux problèmes au début. Il me semble que le lien suivant l'explique bien (plutôt que de simplement "documenter") :

http://fr.mathworks.com/company/newslet ... tions.html

Pour résumer, il est mieux qu'une grille soit explicitement représentée par deux matrices X et Y telles que les coordonnées du point d'indices (i, j) soient (X[i, j], Y[i, j]), et non deux vecteurs x et y dont les coordonnées du point d'indices (i, j) seraient (x, y[j]). Premièrement cela est explicite et évite de nombreux cas de confusion. Ensuite, cela permet de travailler directement sur les matrices (par exemple ajouter X et Y, ce qui serait impossible sinon). Enfin, cela permet des grilles non-régulières.

Comme en général on a plutôt en tête les vecteurs x et y, la fonction meshgrid permet de transformer cette représentation en les matrices complète X et Y. Attention au fait qu'il y a deux manières de lire une grille : la manière matricielle (0, 0) et en haut à gauche et les lignes sont en premier et la manière cartésienne, avec (0, 0) en bas à gauche et les abscisses (donc les colonnes) en premier.

Leo11 a écrit :En fait np*, je pense que tu as raison, je ne saisis pas bien ce qui se passe dans Z =X**2 + Y**2... Je veux bien que tu m'expliques si tu as le temps :).


Je pense que tu peux chercher la réponse tout seul, avec un petit exemple, et un papier et un crayon (je vais en faire hurler plus d'un) : X ** 2 est l'opération matricielle point à point, de même '+' va additionner les matrices point à point. Si pout tout (i, j), X[i, j] = i et Y[i, j] = j, que va donc valoir Z ?

* EDIT: je viens de prendre connaissance de la réponse précédente.
Dernière modification par np* le 08 juil. 2016 10:41, modifié 1 fois.
$ P = N\!P^* ? $

Avatar de l’utilisateur
np*

Messages : 1

Inscription : 28 nov. 2015 14:49

Profil de l'utilisateur : Enseignant (CPGE)

Re: Tracer un graphe en 3D en python

Message par np* » 08 juil. 2016 10:40

bullquies a écrit :A mon avis tu devrais bien faire une heatmap pour présenter tes résultats.
Je partage ce point de vue. Un graphe 3D semble inutilement compliqué pour visualiser l'information que tu cherches à montrer. Une carte thermique est probablement plus pertinente.
$ P = N\!P^* ? $

Messages : 9686

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Tracer un graphe en 3D en python

Message par fakbill » 08 juil. 2016 13:17

np* : Je n'ai rien contre Leo11 par contre je ne comprends pas comment on peut dire que http://docs.scipy.org/doc/numpy/referen ... hgrid.html "assez technique". De plus, j'ai expliqué le fait que ca faisait une grille...ce que la page de doc donne en exemple.

"un apprenant" : épargne moi ce jargon IUFM à la noix par pitié.

"Nous n'avons pas la même conception de l'apprentissage" (je coupe le reste de ta phrase car c'est vrai en général) : je pense qu'il est bcp plus important de faire comprendre aux étudiants comment trouver l'info plutôt que de la leur donner toute cuite. Je rêve d'un jour où la majorité des questions sur ce forum en info sera du type "j'ai tel problème (exprimé clairement), j'ai lu telles docs et je ne comprends toujours pas ce point".
Si on ne forme pas les gens à cet état d'esprit alors on attend d'eux seulement qu'ils retiennent des formules magique.

Sur le coté un peu rude. Le commentaire n'étonne à chaque fois car non, je ne suis pas rude du tout. Sortez un peu dans la vraie vie pour voir les loups et les hyènes qui traînent partout. La prépa est un environnement ultra protégé. Autant leur donner un tout tout tout peu avant gout de la suite...et puis bon....no fight no fun.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Messages : 9686

Inscription : 30 juil. 2008 16:59

Profil de l'utilisateur : Élève de lycée

Re: Tracer un graphe en 3D en python

Message par fakbill » 08 juil. 2016 13:18

et sinon oui, un graphe 2D avec des couleur est souvent mieux qu'un graphe 3D...par contre, faire gaffe au choix des couleurs car l'oeil humain a tendance à mal évaluer les gradients entres couleurs.
Pas prof.
Prépa, école, M2, thèse (optique/images) ->ingé dans le privé.

Répondre