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

C# Discussion :

ZedGraph : comment changer les valeurs ?


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Points : 58
    Points
    58
    Par défaut ZedGraph : comment changer les valeurs ?
    Salut à tous,

    Voilà j'utilise zedGraph (sur un projet WinForm) avec un diagramme à barres et je n'arrive pas à changer les valeurs et à réactualiser le graph.

    Ci-dessous le code présenté dans le tuto sur codeproject.com :

    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
     
    private void CreateGraph( ZedGraphControl zgc )
    {
       // get a reference to the GraphPane
       GraphPane myPane = zgc.GraphPane;
     
       // Set the Titles
       myPane.Title.Text = "My Test Graph\n(For CodeProject Sample)";
       myPane.XAxis.Title.Text = "My X Axis";
       myPane.YAxis.Title.Text = "My Y Axis";
     
       // Make up some data arrays based on the Sine function
       double x, y1, y2;
       PointPairList list1 = new PointPairList();
       PointPairList list2 = new PointPairList();
       for ( int i = 0; i < 36; i++ )
       {
          x = (double)i + 5;
          y1 = 1.5 + Math.Sin( (double)i * 0.2 );
          y2 = 3.0 * ( 1.5 + Math.Sin( (double)i * 0.2 ) );
          list1.Add( x, y1 );
          list2.Add( x, y2 );
       }
     
       // Generate a red curve with diamond symbols, and "Porsche" in the legend
       LineItem myCurve = myPane.AddCurve( "Porsche", list1, Color.Red, SymbolType.Diamond );
     
       // Generate a blue curve with circle symbols, and "Piper" in the legend
       LineItem myCurve2 = myPane.AddCurve( "Piper", list2, Color.Blue, SymbolType.Circle );
     
       // Tell ZedGraph to refigure the axes since the data have changed
       zgc.AxisChange();
    }
    Bon, j'ai modifié le code à ma sauce en me servant des différents exemples que j'ai pu trouver, mais globalement c'est la même chose.

    Actuellement j'affiche des données récoltées sur toute une année, sous forme de graphique à barres. En abscisse j'ai la liste des mois (Janvier, Février..) et en ordonnées j'ai les montants (Janvier, 20 ; Février : 15, etc..).

    Les données sont récupérées dès le Load() du formulaire et le graphique est créé dans la foulée. Une combox est également chargé avec la liste des années présentes dans la Bdd (2007, 2008..).

    Sur l'événement SelectedIndexChanged de la combo, je veux pouvoir afficher les données de l'année sélectionnée, un truc simple quoi... Sauf que j'ai essayé plusieurs méthodes mais rien ne marche !! Au mieux, j'affiche à la fois les données de 2007 et de 2008 sur le même graph alors que je voudrais effacer les données précédament affichées et les remplacer par les nouvelles.

    J'ai tenté bcp de choses mais sans succès... HELP !!!

    Merci d'avance !
    Lionel.

  2. #2
    Membre du Club
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Dans l'exemple de code ci-dessus, c'est cette ligne qui me pose problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    LineItem myCurve = myPane.AddCurve( "Porsche", list1, Color.Red, SymbolType.Diamond );
    Le paramètre list1 représente la liste des données (X et Y) à afficher sur le graph. Et c'est donc ce paramètre que j'aimerais modifier une fois le graphique généré une première fois... mais je ne sais pas comment.

    J'ai trouvé un petit exemple ici mais c'est uniquement l'apparence du graphique qui est modifiée, pas les données

    Please, help !!

  3. #3
    Membre du Club
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Bon, j'ai trouvé cet aricle qui explique justement comment mettre à jour dynamiquement les données d'un graph :

    http://zedgraph.org/wiki/index.php?t...Real-Time_Data

    Le seul problème c'est qu'initialiement ça fonctionne avec des courbes... et dans mon cas j'utilise des barres

    Bref, je suis toujours coincé...

  4. #4
    Membre du Club
    Profil pro
    Développeur
    Inscrit en
    Avril 2007
    Messages
    52
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur

    Informations forums :
    Inscription : Avril 2007
    Messages : 52
    Points : 58
    Points
    58
    Par défaut
    Bien, je pensais structurer mon code de cette façon :

    - Au chargement du form : création du graphique
    - Sur l'événement SelectIndexChanged d'une liste déroulante, je pensais alors faire juste une mise à jour des données et réactualiser le graph.

    Au final, n'ayant pas trouvé d'autres solutions plus élégantes :

    - Au chargement du form : création du graphique
    - Sur l'événement SelectIndexChanged d'une liste déroulante : je vide toutes les courbes pouvaient être affichées, puis création de graphique.

    Voilà, au moins ça a le mérite de fonctionner.

  5. #5
    Membre régulier
    Homme Profil pro
    retraité ing. de recherche
    Inscrit en
    Janvier 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : retraité ing. de recherche
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2008
    Messages : 34
    Points : 104
    Points
    104
    Par défaut
    J'ai eu un problème similaire, avec non-refresh de mon "Form" même en détruisant puis re-créant toutes mes courbes.
    La seule solution que j'aie trouvé (qui marche est est bien peu élégante), c'est de faire un "Hide()" du "Form" avant de le redessiner, (suivit évidemment d'un "Show()" ) sans ça c'est comme si je re-dessinais 'dans le vide'.
    Je n'ai pas compris en quoi ce "Hide" peu bien résoudre le problème, mais le seul "Show()" après dessin ne suffit apparemment pas.

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2009
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2009
    Messages : 28
    Points : 20
    Points
    20
    Par défaut
    Bonjours, j'ai trouvé par hasard qu'en faisant un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    z1.GraphPane.CurveList.Clear()
    avant le codage (sauf la premiere fois)
    la mise a jour dinamique marchais correctement

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 09/06/2011, 21h32
  2. Réponses: 1
    Dernier message: 30/06/2006, 10h26
  3. Comment gérer les valeur Nulles dans une requête ?
    Par sondo dans le forum Bases de données
    Réponses: 3
    Dernier message: 16/03/2005, 11h02
  4. Réponses: 2
    Dernier message: 04/02/2005, 13h23
  5. [Forms] Comment restreindre les valeurs d'une LOV
    Par popressay dans le forum Forms
    Réponses: 9
    Dernier message: 25/08/2004, 10h59

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