none
C# winform controle Chart : problème pour tracer un graphe

    Discussion générale

  • Bonjour, j'essaye de tracer un graphe (chartType= Line) que je récupère d'une BDD,
    Je souhaite tracer un graphe avec en ordonnée  des lieux et en abscisse des heures.

    Je souhaite avoir deux courbes pour comparer entre l'itinéraire théorique et le réel.

    (des lieux) en fonction de l'heure (heure de passage au lieu)

    y[]={paris, lyon, marseille, .....}

    x[]= {17:00:00, 18:00:00, 19:00:00,....}

    z[]= {17:01, 18:05:32,....}

     

    J'ai cru comprendre que je ne pouvais pas mettre des string en abscisse ou ordonnée.

    La solution est que je mette dans l'axe Y: entiers et en axe X: heures dans le format: "hh: mm: ss".

    Mais j'ai deux problèmes à résoudre.

     

    Le premier: je dois afficher deux courbes qui ont les mêmes coordonnées en Y mais pas en X (heures différentes)

    Quand j'affiche mes deux courbes, elles sont superposées.

    je n'obtiens qu'une courbe ie il ne fait pas la différence des Coordonnées abscisses.

     

    Le deuxième problème est comment puis-je

    mettre des étiquettes dans l'axe Y,

    c'est-à-dire au lieu d'afficher int, je afficher des chaînes?

    Voir en image le résultat:  Voici mon code:

         string sqlCmd = "SELECT  `PR4`, `DHT`, `DHR` FROM `table 4` WHERE 1";
                // PR4= place et DHT= time
                MySqlDataAdapter adr = new MySqlDataAdapter(sqlCmd, cn);
                adr.SelectCommand.CommandType = CommandType.Text;
                adr.Fill(dt);
    
    
    
            string[] x = new string[dt.Rows.Count];
            string[] y = new string[dt.Rows.Count];
            string[] z= new string[dt.Rows.Count]
    
    
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                y[i] = dt.Rows[i][0].ToString(); // place
                x[i] = dt.Rows[i][1].ToString(); //  theoretical hour format : "hh:mm:ss"
                z[i] = dt.Rows[i][1].ToString(); //  real hour format : "hh:mm:ss" 
    
            }
    int j= dt.rows.count //j=33
            for (int i = 0; i < dt.Rows.Count; i++)
            {
                grapheSillon.Series["théorique"].Points.AddXY(x[i], j);
                grapheSillon.Series["réel"].Points.AddXY(z[i], j);
                j=j-1
            }



    Merci d'avance
    jeudi 1 décembre 2016 08:02

Toutes les réponses