IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Programmation multimédia/Jeux Python Discussion :

Tracer un graphe en "3D"


Sujet :

Programmation multimédia/Jeux Python

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Tracer un graphe en "3D"
    Bonjour, je suis novice en Python, voici mon probleme.
    Dans le cadre de mes cours, j'ai programmé un automate cellulaire modélisant la propagation d'une maladie en fonction de 2 paramètres: la probabilité de propagation p, et la probabilité de décès d.

    Donc je pars d'une grille de taille nxn que je modélise par une liste de liste. J'insère alors une souche, donc une case infecté. Puis, pour passer de l'étape t à l'étape t+1, on applique l'algorithme suivant:

    s'il n'y a plus de cases infectées, l'algorithme s'arrête.

    si une case est saine qui possède une case voisine infectée au moins, elle s'infecte avec la probabilité p.

    si une case est infectée, elle meurt avec la probabilité d, et reste infectée avec la probabilité 1-d du coup.

    Ce que j'aimerais faire est de tracer en faisant varier p et d entre 0 et 1, la proportion de cases décédées à la fin de l'algorithme. Pour ce faire, je réalise à p et d fixés mettons 20 simulations, je fais la moyenne arithmétique de mes résultats, et j'obtiens une valeur. Je le fais donc pour tous les couples (p,d) que je considère (je fais varier chacun des deux avec un pas de 0,01, donc ca ferait 10000 couples a considérer). J'obtiens ainsi plein de points.

    Mon problème : afficher la surface "formée" par ces points.

    J'éspère ne pas trop vous en demander mais ce serait vraiment super si vous pouviez mettre en commentaire un "code-modèle" dans lequel je n'aurais qu'à remplacer certains passages. J'ai déjà fait des recherches mais je n'ai pas trouvé de code de la sorte.

    Merci beaucoup !

  2. #2
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Sur le site de matplotlib il y a pas mal d'exemples qui vaillent le coup d'oeil : http://matplotlib.org/gallery.html#mplot3d

    Julien

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour et merci pour votre réponse.

    Je me rends compte que je n'ai pas explicité le coeur du problème: le truc, c'est que je ne possède pas d'équation de courbe, mais rien qu'un tableau de points. Du coup, il faut un algorithme d'interpolation pour les relier entre eux. Je n'ai pas trop le temps de me plonger là dedans en ce moment, d'où mon post .

    Toutefois, encore merci pour votre lien, car même si ce n'était pas exactement ce que je voulais, ça m'a donné l'idée de présenter ceci sous la forme d'une "matrice de couleurs" si je n'avais pas d'autres suggestions.

    Bon après-midi

  4. #4
    Membre éprouvé

    Homme Profil pro
    Ingénieur
    Inscrit en
    Août 2010
    Messages
    654
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Août 2010
    Messages : 654
    Points : 1 150
    Points
    1 150
    Par défaut
    Salut,

    Citation Envoyé par Dranooel Voir le message
    le truc, c'est que je ne possède pas d'équation de courbe, mais rien qu'un tableau de points
    Je ne vois pas bien ce qui vous pose problème. Pour tracer une courbe il faut une série de valeurs pour l'abscisse et une autre série de valeurs pour l'ordonnée. Un tableau de points en somme... C'est la même chose pour un graph 3D.

    Si on prend pour exemple ce graph:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import matplotlib as mpl
    from mpl_toolkits.mplot3d import Axes3D
    import numpy as np
    import matplotlib.pyplot as plt
     
    mpl.rcParams['legend.fontsize'] = 10
     
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    theta = np.linspace(-4 * np.pi, 4 * np.pi, 100)
    z = np.linspace(-2, 2, 100)
    r = z**2 + 1
    x = r * np.sin(theta)
    y = r * np.cos(theta)
    ax.plot(x, y, z, label='parametric curve')
    ax.legend()
     
    plt.show()
    On voit que le graph est réalisé à partir de x, y et z. Ce ne sont que des listes valeurs. On peut donc faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    import matplotlib as mpl
    from mpl_toolkits.mplot3d import Axes3D
    import numpy as np
    import matplotlib.pyplot as plt
     
    mpl.rcParams['legend.fontsize'] = 10
     
    # My data
    x = [0, 1, 2, 3, 4, 5, 6]
    y = [8, 7, 5, 4, 3, 6, 1]
    z = [0, 1, 2, 3, 4, 5, 6]
     
    fig = plt.figure()
    ax = fig.gca(projection='3d')
    ax.plot(x, y, z, label='Dummy plot')
    ax.legend()
     
    plt.show()
    Donnant le graph ci-dessous. Je pense qu'il vous faut reformuler votre problème. Ce n'est pas une chose facile que d'expliquer simplement et clairement ce qui bloque. Ici je ne pense pas que vous soyez réellement gêné par le fait de ne pas avoir d'équations, mais peut-être à cause de l'ordre des points ou de la non homogénéité de ceux-ci... Mais pas facile de deviner pour être honnête.

    Nom : developpez.png
Affichages : 9885
Taille : 55,8 Ko

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/04/2004, 08h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo