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

Windows Forms Discussion :

ZedGraph : selection d'un point du graphique


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Par défaut ZedGraph : selection d'un point du graphique
    Bonjour,

    Je cherche à pouvoir sélectionner dans le code un point dans un graphique zedGraph.

    Mon graphique est un nuage de point, je souhaite donc à partir d'une listbox sélectionner un point sur ce même graphique. J'arrive à récupérer l'indice du point dans la pointpairlist mais je ne trouve toujours pas comment le sélectionner à l'affichage.

    Merci pour votre aide

    Language utilisé : C# dans Visual studio 2005

  2. #2
    Membre confirmé
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Par défaut
    La seul solution que j'ai trouvé pour l'instant, est de ne plus essayé de sélectionner le point mais de rajouter deux courbes au graphique.
    Malheureusement pour une raison que j'ignore (peut être le gradient) ces deux droites se trace en dessous du nuage du point, du coup si le point est dans une zone à forte concentration de point on ne voit rien ....

    Voici les différents bout de code

    Création du graphique :
    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    private void CreateGraph(ZedGraphControl zgc, DataTable dt,string AxeX, String AxeY,
                String Ptf)
            {
     
                GraphPane myPane  = zgc.GraphPane;
                myPane.CurveList.Clear();
     
                // Set the Titles
                myPane.Title.Text = AxeX + " / " + AxeY;
                myPane.XAxis.Title.Text = AxeX;
                myPane.YAxis.Title.Text = AxeY;
     
                // Populate a PointPairList 
                PointPairList list = new PointPairList();
     
                double x;
                double y;
                double z;
                for (int i = 0; i < dt.Rows.Count ; i++)
                {
                    x = Convert.ToDouble(dt.Rows[i][xind]);
                    y = Convert.ToDouble(dt.Rows[i][yind]);
                    z = Convert.ToDouble(dt.Rows[i]["PtfWeight"]);  
                    list.Add(x, y, z > 0 ? 2.0 : 1.0);     
                }
     
                // Add the curve
                LineItem myCurve = myPane.AddCurve("Performance", list, Color.Black, SymbolType.Diamond);
     
                // Don't display the line (This makes a scatter plot)
     
                myCurve.Label.IsVisible = false;
                myCurve.Line.IsVisible = false;
     
                // use a gradient fill to color the each line segment according to its Z value
                // Color will be blue for Z = 2, and red for Z = 1
                myCurve.Symbol.Fill = new Fill(Color.FromArgb(99, 144, 171), Color.FromArgb(240, 0, 86));
                myCurve.Symbol.Border.IsVisible = false;
                myCurve.Symbol.Fill.Type = FillType.GradientByZ;          
                myCurve.Symbol.Fill.RangeMin = 1;
                myCurve.Symbol.Fill.RangeMax = 2;
                //myCurve.Symbol.Fill.SecondaryValueGradientColor = Color.FromArgb(99, 144, 171);
     
                // Fill the background of the chart rect and pane
                myPane.Chart.Fill = new Fill(Color.White, Color.White, 45.0f);
                myPane.Fill = new Fill(Color.White, Color.White, 45.0f);
     
                myPane.XAxis.MajorGrid.IsVisible = true;
                myPane.XAxis.MajorGrid.Color = Color.FromArgb(135, 136, 126);
     
                myPane.YAxis.MajorGrid.IsVisible = true;
                myPane.YAxis.MajorGrid.Color = Color.FromArgb(135, 136, 126);
     
                myPane.YAxis.Scale.FontSpec.Size = 10;
                myPane.XAxis.Scale.FontSpec.Size = 10;
     
                myPane.YAxis.Title.FontSpec.Size = 14;
                myPane.XAxis.Title.FontSpec.Size = 14;
     
                //myPane.;
     
                // Tell ZedGraph to refigure the
     
                // axes since the data have changed
     
                zgc.AxisChange();
            }
    Ce qui ce passe quand on cherche un point

    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
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     private void SearchStock(string stock)
            {
     
                int i = 0;
                for (int j = 0; j < dt_.Rows.Count; j++)
                    if ((string)dt_.Rows[j][0] == stock)
                    {
                        i = j;
                        break;
                    }
     
                point1_.Clear();
                point2_.Clear();
     
                double X = zedGraphControl1.GraphPane.CurveList["Performance"].Points[i].X;
                double Y = zedGraphControl1.GraphPane.CurveList["Performance"].Points[i].Y;
                point1_.Add(X, Y);
                point2_.Add(X, Y);
     
                double z = 1;
                double x = 0;
                double y = Y;
                point1_.Add(x, y, z );
     
                double x1 = X;
                double y1 = 0;
                point2_.Add(x1, y1, z);
     
                //double x = zedGraphControl1.GraphPane.CurveList["Performance"].Points[i].X;
                //double y = zedGraphControl1.GraphPane.CurveList["Performance"].Points[i].Y;
     
                //point_.Add(zedGraphControl1.GraphPane.CurveList[0].Points[i].X);
     
                GraphPane myPane = zedGraphControl1.GraphPane;
     
                LineItem myCurve1 = myPane.AddCurve("point1", point1_, Color.Black, SymbolType.None);
                myCurve1.Label.IsVisible = false;
     
                LineItem myCurve2 = myPane.AddCurve("point2", point2_, Color.Black, SymbolType.None);
                myCurve2.Label.IsVisible = false;
     
                //myCurve.Line.IsVisible = false;
     
                //myCurve1.Line.Fill.Type = FillType.GradientByZ;
                //myCurve2.Line.Fill.Type = FillType.GradientByZ;
     
                //myCurve.Symbol.Border.IsVisible = false;
                //myCurve.Symbol.Size = 12;
                //myCurve.IsSelected = true;
               // myCurve.Line.
                ////myPane.CurveList[0].Points[i+1].select
                //IPointListEdit list = myPane.Points as IPointListEdit;
                //list[0].
     
     
                //int toto = zedGraphControl1.GraphPane.CurveList.IndexOf("Performance");
                //zedGraphControl1.GraphPane.CurveList[0].Points[i+1].ColorValue = 2;
     
                StockInfo(i);
     
                //Comment retrouver Le point dans zedgraph
                //zedGraphControl1.
     
            }
    Le graphe en image
    Images attachées Images attachées  

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste Quantitatif / Ingénieur Financier
    Inscrit en
    Janvier 2008
    Messages
    163
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Analyste Quantitatif / Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2008
    Messages : 163
    Par défaut
    Si quelqu'un a une idée pour amélioré ce truc je suis preneur, sinon je passerais en résolu !

    Merci

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

Discussions similaires

  1. Excel 2007 - Déplacer un point dans graphique
    Par mirmande dans le forum Excel
    Réponses: 2
    Dernier message: 06/07/2009, 10h25
  2. Identifier un point sur graphique
    Par KaguraSohma dans le forum R
    Réponses: 1
    Dernier message: 13/05/2009, 20h19
  3. manipulation des points du graphique
    Par naim2009 dans le forum Interfaces Graphiques
    Réponses: 0
    Dernier message: 21/03/2009, 12h45
  4. Réponses: 5
    Dernier message: 16/06/2008, 14h34
  5. Réponses: 10
    Dernier message: 21/01/2007, 01h04

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