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 :

Une bibliotheque de graphique (plotting) maison


Sujet :

Python

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Points : 131
    Points
    131
    Par défaut Une bibliotheque de graphique (plotting) maison
    Salut à tous.
    Voila alors il arrive souvent que dans un script on se retrouve dans la position suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    boucle:
            resultat=Des tas de fonctions compliqué qui font des calculs et tout et tout
    et la on aimerai bien pouvoir affichier en temps réel les résultats qui sortent. Mais on a pas envie de se prendre la tête à gérer des mainloop et autre thread. aprés tout, nous on veut juste des graphiques.

    Personnellement je n'ai jamais compris les exemple donnés par matplolib pour avoir des dessins 'dynamique'. Enfin dans certains cas ca marche sous linux, mais bon rien de trés réjouissant.
    Et puis c'est pénible de devoir installer un tas de truc: Et si on veut faire tourner son script sur un PC autres que le sien, on à pas forcément l'envie/la possibilité/le temps de réinstaller tout un gros bazar

    Pour moi une biblitoheque de graphique devrait s'utiliser ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    toto=MonGraph()
    boucle:
            resultat=Des tas de fonctions compliqué qui font des calculs et tout et tout
            toto.plot(mes resultats)
    Et hop ca s'affiche tout seul sur l'écran. pas de Tk, pas de mainloop, pas de thread

    Je me suis donc retroussé les manches et j'ai pondu un p'tit clone de matplotlib (qui ne fait QUE tracer un graph en 2D) en utilisant uniquement TKinter (ce qui facilite grandement la portabilité du truc)

    j'ai réussi a faire ce que je souhaitait, oui mais voila, ca ne marche que sous Linux. Je suspecte fortement mon thread de réaliser des opérations pas trés catholiques qui font planter notre amis microsoft.

    Alors voila, comme je crois que j'ai atteint mes limites, je me demande si ca interesse quelqu'un de voir avec moi ce qui se passe et comment ca marche.

    Ca devrait se faire sans trop de probleme vu que la partie 'plotting' et la partie 'thread' sont séparée, et que le problème vient de la partie Thread (partie qui ne fait que quelques dizaine de lignes)

    Ah oui, et aussi quelle est le meilleurs moyen de mettre à disposition les sources

    Bref si le sujet vous interesse n'hésitez pas à vous manifester!

    ++
    Julien

  2. #2
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir ju_bicycle,

    Citation Envoyé par ju_bicycle Voir le message
    j'ai réussi a faire ce que je souhaitait, oui mais voila, ca ne marche que sous Linux. Je suspecte fortement mon thread de réaliser des opérations pas trés catholiques qui font planter notre amis microsoft.
    Ça c'est un sujet qui m'intéresse
    Si tu veux un avis je suis dispo.

    @+
    Merci d'utiliser le forum pour les questions techniques.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Points : 131
    Points
    131
    Par défaut
    Hello à tous
    Pour PauseKawa (et ce que ca interesseraient) voici le lien pour télécharger les fichiers
    Comme je le disait précédemment, il y a deux fichiers (pour l'instant):

    -graphplotlib : qui contient l'objet Graph qui est de type Frame . On peut évidemment grandement l'améliorer encore, mais ce n'est pas la priorité

    -dynagraphplot : qui contient l'objet Dynagraph qui permet d'utiliser le graphique trés simplement. C'est ca qui ne fonctionne pas sous windows

    Chaque fichier peut-etre lancer pour voir comment ca marche
    N'hésitez pas à me poser des questions!!

    http://dl.dropbox.com/u/6399286/graphplotlib.tar

  4. #4
    Membre expérimenté
    Profil pro
    Développeur en systèmes embarqués retraité
    Inscrit en
    Mars 2006
    Messages
    946
    Détails du profil
    Informations personnelles :
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2006
    Messages : 946
    Points : 1 351
    Points
    1 351
    Par défaut
    Salut,

    Je trouve matplotlib très utile dans mon job, voire indispensable. Je m'y suis bien cassé les dents au début, car je trouve sa philosophie plus que déroutante, en tout cas pas orienté objet. J'ai encapsulé ce qui m'intéressait, à savoir un graph temps réel dans une classe et idem pour un multiplot à la manière d'excel mais appelé dans les applis, donc, pas trop de lourdeur d'utilisation. C'est vrai que c'est module assez lourd, du coup une version 'allégée' est sûrement intéressante.

    A+

    Pfeuh

  5. #5
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour,
    le code ne fonctionne pas non plus sur Mac.

  6. #6
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Quelques détails a revoir, outre le fonctionnement sous win/mac:
    A la fermeture d'une fenêtre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    fin dessin de la courbe
    Traceback (most recent call last):
      File "dynagraphplot.py", line 79, in <module>
        a.plot([v_x,v_y_2,{'fill':'blue','line':True,'point':True}])
      File "dynagraphplot.py", line 16, in plot
        self.dg.plot (self.g, *args)
      File "dynagraphplot.py", line 51, in plot
        graph.delete_all()
      File "/home/patrice/Bureau/graphplotlib/graphplotlib.py", line 848, in delete_all
        self.can_courbe.delete(element)
      File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 2184, in delete
        self.tk.call((self._w, 'delete') + args)
    RuntimeError: main thread is not in main loop
    Et pour l'autre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Traceback (most recent call last):
      File "dynagraphplot.py", line 80, in <module>
        b.plot([v_x,v_y,{'fill':'green','line':True,'point':True,'point_color':'green'}])
      File "dynagraphplot.py", line 16, in plot
        self.dg.plot (self.g, *args)
      File "dynagraphplot.py", line 51, in plot
        graph.delete_all()
      File "/home/patrice/Bureau/graphplotlib/graphplotlib.py", line 848, in delete_all
        self.can_courbe.delete(element)
      File "/usr/lib/python2.6/lib-tk/Tkinter.py", line 2184, in delete
        self.tk.call((self._w, 'delete') + args)
    _tkinter.TclError: invalid command name ".159633452.159633548.159633900"
    Je regarde cela plus tard.

    @+

    Ps: Merci pour le code.
    Merci d'utiliser le forum pour les questions techniques.

  7. #7
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Points : 290
    Points
    290
    Par défaut
    Très intéressant.
    Je viens de tester avec un ubuntu et une fois sur deux j'ai le message d'erreur suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Traceback (most recent call last):
      File "dynagraphplot.py", line 72, in <module>
        a=toto.NewGraph(grid=True,width=600,height=300)
      File "dynagraphplot.py", line 39, in NewGraph
        graph=Graph(self.boss,**kwargs)
    AttributeError: 'DynaGraph' object has no attribute 'boss'
    ça signifie que la méthode run est appelé après la NewGraph. A première vue ça semble assez facile à resoudre.
    Je regarderai ton programme de plus près demain.
    Pour le message d'erreur à la fermeture, il suffit d'intercepter l'évènement close et de "tuer" les threads proprement avant de détruire les fenêtres.

    Pourrais-tu nous donner le message d'erreur obtenu sur windows?

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Il semble que def run() n'a pas le temps de s'exécuter complétement avant le début du tracé.

    En ajoutant une temporisation, ça résout le problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    ...
        toto=DynaGraph()
        time.sleep(0.1)
        a=toto.NewGraph(grid=True,width=600,height=300)
    ...

  9. #9
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Pour ce qui est des erreurs à la fermeture des fenêtres, et comme le dit VinsS, il est nécessaire de bien terminer le thread pour ne pas avoir de souci avec l'asynchrone du tread et le temps d'update du wrapper. Un bind du protocol "WM_DELETE_WINDOW" avec fermeture propre du thread en fait.

    Je teste sous Windows dans la journée pour voir ce qui bloque.

    C'est quoi le souci sous Mac ?

    @+
    Merci d'utiliser le forum pour les questions techniques.

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Points : 131
    Points
    131
    Par défaut
    nyko77,VinsS et PauseKawa
    L'erreur:
    AttributeError: 'DynaGraph' object has no attribute 'boss'
    est censé avoir été réparé avec l'ajout d'un verrou (verrou_tk) dans Dynagraphplot

    Verifiez que vous ayez bien la version avec le verrou:
    Si ce n'est pas le cas, j'ai du avoir un p'tit probleme avec le lien
    Si c'est le cas, et bien je n'ai pas de probleme sur mon PC. Alalal les threads...

  11. #11
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Points : 290
    Points
    290
    Par défaut
    Il y a bien le verrou_tk dans la version que tu as donnée. Je pas réellement compris comment ça fonctionnait.
    Je suis en train regarder ton code de plus près.
    J'ai essayé en créant une nouvelle instance Tk pour chaque graph, c'est à dire sans utiliser de Toplevel. je trouve ça d'ailleurs plus pratique. J'ai donc remplacé la class DynaGraph directement par NewGraph. J'ai aussi ajouté un attribut self.isStarted pour gérer cette fameuse erreur. Ce n'est pas des plus élégant, mais ça à l'air de fonctionner chez moi. Et j'ai mis le mainloop directement dans le run.
    Pour ce qui est de l'erreur lors de la fermeture, elle est dû au while 1. Cette erreur ne se présente pas dans un cas concret, puisse qu'en général on arrêtera de dessiner des graphs avant d'arrêter notre programme.
    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
    48
    49
    50
     
    #-*- coding:utf-8 -*-
    from graphplotlib import *
    import threading
    import time
     
    class NewGraph(threading.Thread):
     
        def __init__(self, **kwargs):
            threading.Thread.__init__(self)
     
            self.kwargs = kwargs
            self.isStarted = False
            self.start()
     
        def run(self):
            self.boss=Tk()
            self.graph=Graph(self.boss,**self.kwargs)
            self.graph.pack()
            self.isStarted = True
            self.boss.mainloop()
     
     
        def plot(self, *args):
            while not self.isStarted:
                time.sleep(0.01)
            self.graph.delete_all()
            self.graph.plot(*args)
     
     
     
    if __name__ == '__main__':
        import math
        import time
     
        v_x=[0]
        v_y=[0]
        v_y_2=[0]
     
        a=NewGraph(grid=True,width=600,height=300)
        b=NewGraph(grid=True,width=600,height=300)
        i=10000
        while 1:
            v_x.append(i)
            v_y_2.append(math.sin(float(i)))
            v_y.append(math.cos(float(i)))
            a.plot([v_x,v_y_2,{'fill':'blue','line':True,'point':True}])
            b.plot([v_x,v_y,{'fill':'green','line':True,'point':True,'point_color':'green'}])
            i=i+1000
            time.sleep(1)
    Je me répète un peu, mais pourrais-tu nous donner le message d'erreur obtenu sur windows (j'ai pas de windows installé chez moi).

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Points : 131
    Points
    131
    Par défaut
    Hello.

    1°)
    alors le verrou _k est censé empécher le probleme tu run qui n'a pas le temps de se lancer avant l'appel à un NewGraph. Avant j'avait mis un bête sleep, et puis je trouvais ca moche. L'ajout du verrou à permis de régler le probleme chez moi.Pas chez tout le monde apparement Damn it.
    (Pour ce qui est du verrou kesako je recommande cette excellente explication:
    http://www.blognote-info.com/fr/n338...les-semaphores )

    Je propose une petite correction. Je peux pas dire si ca arrange les choses vu qu'ici ca ne plante pas. Essayez et dites moi (déplacement de l'acquisition du verrou) :

    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
     
    class DynaGraph(threading.Thread):
     
        def __init__(self):
            verrou_tk.acquire()           # On le place ICI
            threading.Thread.__init__(self)
     
     
            self.dico_can=[0]
            self.first=True
            self.top_window=[0]
            self.start()
     
        def run(self):
            #verrou_tk.acquire()          Et non plus la
            self.boss=Tk()
            verrou_tk.release()
            self.boss.mainloop()
    2°) Nyko:
    Pour ce qui est d'instancier plusieurs objet TK, il me semblait que c'était à éviter car Tk n'est pas thread safe. J'aimerai avoir dessus l'avis des spécialistes...

    3°)Erreur Windows (je suppose que c'est le même genre sur mac??)
    D:\graphplotlib>c:\Python26\python.exe dynagraphplot.py
    Traceback (most recent call last):
    File "dynagraphplot.py", line 71, in <module>
    a=toto.NewGraph(grid=True,width=600,height=300)
    File "dynagraphplot.py", line 38, in NewGraph
    graph=Graph(self.boss,**kwargs)
    File "D:\graphplotlib\graphplotlib.py", line 150, in __init__
    Frame.__init__(self, parent)
    File "c:\Python26\lib\lib-tk\Tkinter.py", line 2444, in __init__
    Widget.__init__(self, master, 'frame', cnf, {}, extra)
    File "c:\Python26\lib\lib-tk\Tkinter.py", line 1932, in __init__
    (widgetName, self._w) + extra + self._options(cnf))
    _tkinter.TclError: out of stack space (infinite loop?)
    je me demande si c'est pas du au fait que la méthode run ne devrait pas être la SEULE méthode a utiliser TK. Or la méthode NewGraph utilise Tk elle aussi en instanciant les graphiques...

  13. #13
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Bonjour.
    Citation Envoyé par PauseKawa Voir le message
    C'est quoi le souci sous Mac ?
    J'ai le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Tk_MacOSXSetupTkNotifier: first [load] of TkAqua
    has to occur in the main thread!

  14. #14
    Membre actif
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    222
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 222
    Points : 290
    Points
    290
    Par défaut
    ça fonctionne pour le verrou, je n'ai plus d'erreur.
    Pour ce qui est d'avoir plusieurs instance Tk, je crois que c'est à éviter dans la même loop, mais je ne pense pas que ça pose de problème vu qu'ici chaque instance à son mainloop.
    Pour l'erreur de thread, je me rappel avoir eu le même genre de problème (je me rappel aussi avoir bien galéré). C'est peut être causé par les événements de la classe Graph qui ne se synchronise pas avec le mainloop du thread.

  15. #15
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    (Re)bonjour,
    est-il possible d'imposer à graphplotlib la fenêtre de tracé un peu comme sur une calculatrice ?

    Je vais utiliser pour créer une bibliothèque offrant de petits outils utiles à un Lycéen pour apprendre la programmation sous Python.

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Points : 131
    Points
    131
    Par défaut
    Hello a tous,
    Bonne question rambc. Je sais que je doit absolument rédiger un document digne de ce nom pour l'utilisation de la bibliothèque, mais en attendant
    Petit Tuto graphplotplib
    Le but est de faire un clone de Matplolib pour du graph2D.

    Parti Graphique:

    Les 4 boutons en bas, (je n'ai pas mis d'image comme pour matplotlib, j'en mettrai peut etre je ne sais pas encore exactement ce que je vais faire)
    H = Home, ca sert à revenir à la fenetre de départ
    Z = Zoom. Si on clique dessus, on peut dessiner des rectangles sur le graph et zoomer dans cette zone. Pour désactiver le mode zoom, on clique à nouveau dessus. Pour revenir au départ, on clique sur H
    M=Move, pour "faire glisser" la courbe. Ce n'est pas encore codé
    S=Save: Pour sauver le dessin. C'est d'un interet moyen pour l'instant puisqu'on ne sauve que le canvas central et donc pas les graduations...

    Les méthodes disponibles
    Si on regarde l'exemple que je donne à la fin de graphplotlib
    toto=Graph(root,grid=True)
    toto.title("Mon Titre")
    toto.title_x("Titre x")
    toto.title_y('Titre y')
    toto.set_axes(0,1200,False,False)
    toto.annotate(50,1.5,'Annotation')
    toto.plot([v_x,v_y,{'fill':'green','line':True,'point':False}],[v_x,v_y_2,{'line':False,'point':True}])#,[v_x,v_y_3,{'fill':'red'}]

    title: Permet de donner un titre à la courbe
    title_x : Titre sur l'axe des x
    title_y: Titre sur l'axe des Y (c'est trés moche car c'est en écritur vertical, mais TKinter ne sait pas faire de rotation, enfin en tout cas j'ai pas trouvé)

    set_axes
    : Permet de définir un max, min à afficher. admettons que tu veuille afficher un graphique entre -10 et 10 sur l'axe des x et -20 et 20 sur l'axe des y:
    toto.set_axes[-10,10,-20,20]
    Par défaut, on se fixe comme limite le min et max de chaque axe.Pour laisser la valeur par défaut tu met False
    Si tu veux ne fixer que le max sur l'axe des x par exemples :
    toto.set_axes[False,10,False,False]
    Si tu veux tout laisser par défaut tu ne met rien (tu peux aussi mettre [False,False,False,False]

    annotate: te permet d'écrire quelque chose sur la courbe. il faut choisir les coordonées ou tu souhaite l'écrire.
    Par exemple si tu veux écrire 'Python' sur ton graph en position x=10, y=50
    toto.annotate(10,50,'Python')
    Attention il faut utiliser cette méthode soit APRES avoir fixé les axes (set_axes), et/ou APRES avoir dessiné les courbes.Mais pas AVANT: En effet, si tu fais ca, l'échelle n'est pas encore fixé, et x=10 ne veut rien dire!!!

    plot: Sert a dessiner la/les courbe(s). tu peux dessiner plusieurs courbes. Une courbes est définie ainsi:
    [
    vecteur x (liste ou tuple)
    vecteur y (liste ou tuple)
    dictionnaire
    ]
    Le dictionnaire peut contenir toutes les options de la méthode "create_line" de la bibliotèque Tkinter afin de choisir l'aspect de la courbe
    par exemple width(pour l'épaisseur), dash(pour faire des pointillés), fill(pour la couleur)... voir: http://infohost.nmt.edu/tcc/help/pub...ml#create_line
    de plus on peut choisir de dessiner des points. On a donc 4 autres paramètres:
    line (par defaut=True) permet de choisir de tracer ou non une ligne entre les points
    point (par defaut=False) permet d'afficher un petit rond sur chaque point de la courbe
    point_color (par defaut: bleu) permet de choisir la couleur des points
    point_size (par defaut : 4) permet de déterminer la taille des points (en pixel)

    voila on peut faire pas mal d'autre choses, il faut vraiment que je rédige une doc digne de ce nom
    Have fun, n'hésite pas si t'as des questions

  17. #17
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Merci pour ces précisions.

  18. #18
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut, le lien du deuxième post donne toujours la première version, je suppose.

    Il y a eu des changements qu'on puisse télécharger ou on copie les codes qui sont dans les derniers posts ?

  19. #19
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    139
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 139
    Points : 131
    Points
    131
    Par défaut
    la seule modif qu'il y a eu pour l'instant est le déplacement du verrou dans l'init de l'objet dynagraph. (cf post hier 12:08)
    Je viens de faire la modif dans le fichier à télécharger...
    Mais bon c'est pas la révolution. Et ca n'explique pas du tout pourquoi ca plante sous windows...

  20. #20
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Citation Envoyé par ju_bicycle Voir le message
    ...pourquoi ca plante sous windows...
    ... et sous Mac.

Discussions similaires

  1. [JNI]récupérer un code c dans une bibliotheque dll
    Par elalia dans le forum Entrée/Sortie
    Réponses: 1
    Dernier message: 29/10/2005, 13h08
  2. Réponses: 4
    Dernier message: 19/10/2005, 23h30
  3. [VBA] Copie d'une feuille (avec graphique)
    Par ed_dexia dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 06/10/2005, 09h56
  4. où trouver une bibliothèque de son
    Par etarip dans le forum Général Conception Web
    Réponses: 2
    Dernier message: 19/08/2005, 12h12
  5. Spécifier une nouvelle librairie graphique/jeu
    Par Montaigne dans le forum Développement 2D, 3D et Jeux
    Réponses: 1
    Dernier message: 20/06/2005, 18h59

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