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

Python Discussion :

débuter en graphique [Python 3.X]


Sujet :

Python

  1. #1
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Points : 122
    Points
    122
    Par défaut débuter en graphique
    Bonjour,

    j'ai plus de 60 ans.... bon Ok ca pique....

    Je cherche à faire des graphiques tout bêtes en python. Je voudrais
    donc faire un programme qui génère une fenêtre et pouvoir y
    dessiner des lignes et des points en donnant leurs coordonnées.

    Lorsque j'étais jeune, je faisais du BASIC sur AppleII, et c'était
    facile. Ensuite je suis passé au Pascal3 puis 6 et ça commençait à être
    de plus en plus difficile.
    Et maintenant en python comment faire.

    J'ai lu des exemples mais aucun ne fonctionne.
    Par exemple ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    from pylab import *
     
    x = array([1, 3, 4, 6])
    y = array([2, 3, 5, 1])
    plot(x, y)
     
    show() # affiche la figure a l'ecran
    Cela me donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Python 3.4.1 (v3.4.1:c0e311e010fc, May 18 2014, 10:38:22) [MSC v.1600 32 bit (Intel)] on win32
    Type "copyright", "credits" or "license()" for more information.
    >>> ================================ RESTART ================================
    >>> 
    Traceback (most recent call last):
      File "C:\Users\Jean Louis\python\graphique1.py", line 4, in <module>
        from pylab import *
    ImportError: No module named 'pylab'
    >>>

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    j'ai plus de 60 ans.... bon Ok ca pique....
    Il faut bien commencer un jour.

    Le message d'erreur dit que vous avez oublié d'installer le package (le nom d'un librairie en Python) pylab.
    Je ne sais pas pourquoi vous voulez utilisez Python mais çà vaut peut être le coup d'aller voir des distributions comme Python(x,y) ou EPD ou Anaconda.
    Ce sont des "bundles" qui installent tous les packages dont ont besoin les scientifiques pour faire des calculs et des graphiques.
    Ils ont déjà fait un gros boulot pour s'assurer de la compatibilité entre versions et faire en sorte que le tout s'installe facilement.

    Si vous souhaitez apprendre à programmer en Python, il faudra patienter avant de se lancer dans Pylab et vous exercer avec un tuto comme le Swinnen...

    A vous de voir.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Bienvenu chez Python!

    Citation Envoyé par papilou86 Voir le message
    j'ai plus de 60 ans.... bon Ok ca pique....
    Ça, ce n'est vraiment pas un problème. Moi aussi j'ai fait du basic sur Apple II (entre 78 et 84) et avant, j'ai appris l'informatique dans les années 60 avec des cartes perforées... Comme quoi, on peut être jeune dans sa tête, plus que dans ses artères!

    Python est un chouette langage: facile et puissant, mais il faut tout de même commencer par le début! Pour ça, il y a au moins un livre de référence, celui de Gérard Swinnen qu'on peut trouver ici en pdf: http://python.developpez.com/cours/apprendre-python3/. Ce livre existe aussi dans sa version papier (je l'ai). Il représente une véritable formation et prend aussi en compte la réalisation de programmes graphiques avec la bibliothèque livrée avec Python: tkinter.

    Pylab fait déjà partie de bibliothèques graphiques orientées "scientifique" (numpy, scipy, matplotlib) qu'il faut installer en plus (et c'est facile!).

    Pour des programmes graphiques généraux, il existe d'autres bibliothèques graphiques plus puissantes que tkinter et plus appropriées comme PyQt/PySide ou PyGtk. En ce qui me concerne, mon plus gros programme écrit avec PyQt4 approche les 30.000 lignes de code, et se comporte, vu par un utilisateur normal, comme n'importe quel programme graphique écrit dans n'importe quel autre langage (à noter que j'ai abandonné le Pascal pour Python!).

    Résumé: apprendre Python est un excellent investissement personnel pour faire de beaux programmes, y compris graphiques: il suffit de commencer par le début
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  4. #4
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Points : 122
    Points
    122
    Par défaut
    Merci à vous deux.
    Je suis bien conscient de tout ce que vous dites.
    Mon objectif est de faire ceci :
    Ouvrir un fenêtre vide de dimension x sur y
    tracer un repère orthonormé (abscisses et ordonnées)
    tracer une droite du type y=ax+b

    ou encore faire un nuage de point sur ce repère.

    ou encore tracer une courbe de type sin ou cos.

    Pour l'instant, juste cela.

    Donc première question :
    est ce que la bibliothèque livrée avec Python: tkinter est suffisante.
    Faut-il installer autre chose.

    seconde question :
    y a t'il, a votre connaissance un exemple quelque part ici ?

    Merci à vous tous

  5. #5
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Dans le livre de Gérard Swinnen dont j'ai donné le lien plus haut: voir un exemple d'oscillographe utilisant tkinter page 199. Ainsi que d'autres exemples.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Comme je le disais plus haut, pour faire ce que vous voulez faire vous avez deux chemins complètement différents.
    Tout dépend de l'approche et de l'impatience que vous avez pour arriver rapidement à vos fins.
    Le Swinnen va vous apprendre les bases de Python, il faut le lire et faire un minimum d'exercices pour être sur de se sentir un peu à l'aise avec les concepts de bases.
    note: le Swinnen est quand même orienté pour les débutants en programmation et est assez délayé. Si vous vous sentez plus à l'aise, la documentation Python vient avec son tutorial intégré. Les concepts sont balayés plus rapidement.
    S'il faut quand même passer un peu de temps dans ces tutoriels de base, réaliser:
    Ouvrir un fenêtre vide de dimension x sur y
    tracer un repère orthonormé (abscisses et ordonnées)
    tracer une droite du type y=ax+b

    ou encore faire un nuage de point sur ce repère.

    ou encore tracer une courbe de type sin ou cos.
    avec les composants de base comme tkinter est très instructif, certes, mais il sera plus rapide d'installer les bibliothèques Python qui font cela en quelques lignes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    from pylab import *
     
    n = 256
    X = np.linspace(-np.pi, np.pi, 256,endpoint=True)
    C,S = np.cos(X), np.sin(X)
    plot(X,C),plot(X,S)
     
    #savefig("../figures/exercice_1.png",dpi=72)
    show()
    Et vous avez d'autres tutoriels sur le site pour apprendre à utiliser ces "outils" assez facilement sans avoir à passer par l'apprentissage des bases du langage, de la POO, de la programmation graphique,...
    note: vous pourrez y jeter un oeil plus tard si le besoin s'en fait sentir.

    Problème: comment installer ces packages?
    C'est ici que les distributions comme Python(x,y),... (que j'ai mentionné plus haut) ont un intérêt: plutôt que d'avoir à comprendre comment installer pylab, matplotlib, numpy, scipy,... vous installez un "gros" machin qui contient tout ce dont vous aurez besoin (et plus encore).
    note: Python(x,y) s'installe sur Windows à partir d'un exécutable qui fait plus de 100Mb! Il y a du monde...

    Après tout dépend de votre approche et de votre savoir-faire: il sera plus motivant d'arriver à faire ce que vous souhaitez rapidement même si on vous avez fait l'impasse sur des tas de trucs et que vous ne comprenez pas tout.
    note: comme vous utilisez Python pour vous faire plaisir et non en tant que programmeur professionnel inutile de comprendre les détails pourquoi du comment...

    A vous de voir.

    - W
    PS: lisez aussi le tutoriel d'introduction de Python pour les scientifiques.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Points : 122
    Points
    122
    Par défaut
    Merci encore pour votre aide.
    J'ai réalisé mon projet sans rien ajouter, juste en utilisant tkinter.
    Il n'y a rien a ajouter comme librairie

    Voici mon programme :
    Il aidera peut-être quelqu'un un jour.
    Par contre, si l'on veut bien critiquer ce code et expliquer quelques points obscures, ce sera avec plaisir que je recevrai ces critiques

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    #!/usr/bin/python
    # -*- coding: utf-8 -*-
     
    import tkinter #pour le graphique
    from math import * #pour les fonctions sin,cos,tan, etc
     
    racine=tkinter.Tk()
     
    fond=tkinter.Canvas(racine, width=500, height=500, background='darkgray')#ouvre une fenetre 500 pixels sur 500
    fond.pack()#active la ligne precedente???
     
    ligne=fond.create_line(0,250, 500,250, width=2)#place l'axe horizontal
    ligne=fond.create_line(250,0, 250,500, width=2)#place l'axe vertical
     
    #Attention : il n'y a pas d'instruction de type plot() qui permet de faire un point.
    #On utilise donc le tracé d'une ligne de 1 point.
     
    #fonction y=sin(x)
    for x in range(-250,250) :
        k= (2*pi)/500
        y=(sin(k*x))*100
        point=fond.create_line(250+x,250-y, 251+x,251-y,fill="red", width=2)
     
    #fonction y=cos(x)
    for x in range(-250,250) :
        k= (2*pi)/500
        y=(cos(k*x))*100
        point=fond.create_line(250+x,250-y, 251+x,251-y,fill="green", width=2)
     
    #fonction tan(x)
    for x in range(-250,250) :
        k= (2*pi)/1000
        y=(tan(k*x))*100
        point=fond.create_line(250+x,250-y, 250+x,251-y,fill="purple", width=2)
     
    #fonction y=ax+b   
    for x in range(-250,250) :
        y=x+20
        point=fond.create_line(250+x,250-y, 251+x,251-y, fill="cyan",width=2)
     
    #fonction y=x²    
    for x in range(-250,250) :
        y=x**2/30
        point=fond.create_line(250+x,250-y, 251+x,251-y, fill="yellow",width=2)
     
    racine.mainloop()#je ne sais pas pourquoi mettre ceci, en fait ça marche sans ca

  8. #8
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Salut,

    Les questions sont dans le code?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    fond=tkinter.Canvas(racine, width=500, height=500, background='darkgray')#ouvre une fenetre 500 pixels sur 500
    fond.pack()#active la ligne precedente???
    Techniquement, "fond" est l'instance d'un tkinter.Canvas.
    Dans la pratique, vous avez créé un objet de la bibliothèque graphique de type Canvas.
    Vous auriez pu créer d'autres objets graphiques...
    Et la question qui se pose alors sera de comment les disposer, les afficher sur "l'écran".
    C'est ce que fait ".pack".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    racine.mainloop()#je ne sais pas pourquoi mettre ceci, en fait ça marche sans ca
    L'intérêt d'un GUI est de présenter des objets graphiques à l'écran pour permettre à l'utilisateur d'agir dessus.
    L'action de l'utilisateur crée un événement qui déclenchera une "action".
    La succession des événements provoqués par l'utilisateur s'empile dans une liste d’événements.
    Lancer la mainloop permet à tkinter de les traiter.
    Comme il n'y a rien dans votre code qui écoute ou déclenche des événements, appeler mainloop ou pas ne change rien.

    On pourrait par exemple proposer le tracé d'une courbe en cliquant sur un bouton:
    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    # -*- coding: utf-8 -*-
     
    import tkinter as tk #pour le graphique
    from math import * #pour les fonctions sin,cos,tan, etc
     
    def do_draw_sin():
        #fonction y=sin(x)
        canvas.delete('drawing')
        for x in range(-250,250) :
            k= (2*pi)/500
            y=(sin(k*x))*100
            point=canvas.create_line(250+x,250-y, 251+x,251-y,fill="red", width=2, tag='drawing')
     
    def do_draw_cos():
        #fonction y=cos(x)
        canvas.delete('drawing')
        for x in range(-250,250) :
            k= (2*pi)/500
            y=(cos(k*x))*100
            point=canvas.create_line(250+x,250-y, 251+x,251-y,fill="red", width=2, tag='drawing') 
     
    app = tk.Tk()
     
    tk.Button(text='y=sin(x)', command=do_draw_sin).pack()
    tk.Button(text='y=cos(x)', command=do_draw_cos).pack()
     
    canvas=tk.Canvas(width=500, height=500, background='darkgray') #ouvre une fenetre 500 pixels sur 500
    canvas.create_line(0,250, 500,250, width=2)#place l'axe horizontal
    canvas.create_line(250,0, 250,500, width=2)#place l'axe vertical
    canvas.pack()
     
    tk.mainloop()

    Ce n'est pas pour rien que dans le Swinnen, la programmation graphique n'est abordée qu'au chapitre 13...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  9. #9
    Membre actif Avatar de Kurodiam
    Inscrit en
    Décembre 2013
    Messages
    208
    Détails du profil
    Informations forums :
    Inscription : Décembre 2013
    Messages : 208
    Points : 215
    Points
    215
    Par défaut
    Wiztricks , ton code ne marche pas sous mon linux , j'obtiens l'erreur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ./graphe.py: ligne 3: import : commande introuvable
    from: can't read /var/maim/math
    ./graphe.py: ligne 6: Erreur de syntaxe prés du symbole inattendu « ( »
    ./graphe.py: ligne 6: 'def do_draw_sin() :'
    On dirait qu'il y'a aussi la création de points remarquables sur les axes , mais je n'arrive pas à tester donc je vois pas
    _""""Cats have a big heart ^^ unlike some bad people (whose will never change in their brain) """

  10. #10
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 281
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 281
    Points : 36 768
    Points
    36 768
    Par défaut
    Citation Envoyé par Kurodiam Voir le message
    Wiztricks , ton code ne marche pas sous mon linux , j'obtiens l'erreur :
    Telles que montrées, ces erreurs ne sont pas remontées par l'interpréteur Python.
    Et comme il n'y a pas de shebang...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  11. #11
    Membre régulier
    Homme Profil pro
    Retraité
    Inscrit en
    Mai 2006
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 174
    Points : 122
    Points
    122
    Par défaut
    Merci de tout ces renseignements.
    Je continue mon travail a partir de cela.
    Moi, sur Windows le code avec les boutons fonctionne j'ai un python 3.x

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 10
    Dernier message: 19/02/2014, 14h19

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