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 valeur en fonction d'une date


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut Zedgraph valeur en fonction d'une date
    Bonjour

    J'ai un fichier CSV avec des lignes très simples avec une date et une valeur (0 ou 1 ou un décimal suivant les cas).
    Je souhaite tracer une courbe avec les valeurs en ordonnées et la date en abscisse.

    Le fichier toto.csv contient par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    04/06/10 19:01:27;1; 
    04/06/10 19:01:35;2;
    04/06/10 19:01:43;14;
    04/06/10 19:01:50;16;
    04/06/10 19:02:52;12;
    04/06/10 19:03:00;1;
    On voit que ma date contient le jour, le mois, l'année mais aussi heure,minutes et secondes

    J'arrive à lire mon fichier et a extraire dans un tableau de string le contenu de chaque ligne avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    StreamReader MonFichier = new streamReader(@"C:\toto.csv");
    while (!MonFichier.EndOfStream) 
                {
                    LigneEnCours = MonFichier.ReadLine(); 
                    string[] Array = LigneEnCours.Split(';');
    mais je n'arrive pas à remplir une "liste" pour créer une courbe zedgraph.

    Dans tous les exemples de zedgraph je vois la déclaration d'une liste de doubles qui sert à saisir les données pour le graph
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PointPairList list = new PointPairList();
    Mon problème et que je n'arrive pas voir comment faire rentrer ma date dans un double pour pouvoir afficher dans zedgraph la date complète, de l'année jusqu'aux secondes.

    J'ai entre autre essayé de convertir la date en double ainsi
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    date2 = double.Parse(Array[0]);
    c'est ce qui me parait le moins stupide mais ca ne passe pas.

    Merci par avance pour votre aide

  2. #2
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Dans un application j'affiche aussi des données en fonction d'une date. La date est sur l'axe des X. Je note mes données sur l'axe des X de 1 à .... Mais j'utilise un List<string> comme étiquette sur mon axe. Donc visuellement c'est les dates que j'affiche.

    Extrait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    List<string> xLabel = new List<string>();
    PointPairList pplDwl = new PointPairList();
    int i;
    [..]
    for (i = 0; i < data.Count; i++)
    {
    	xLabel.Add(data[i].Day.ToString("dd MMMM"));
    	pplDwl.Add(new PointPair((double)i, data[i].Download, String.Empty));
    }
    [..]
    myPane.XAxis.Scale.TextLabels = xLabel.ToArray();
    En espérant que ça t'aide.

  3. #3
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    bonjour et merci pour la réponse

    j'ai trouvé dans les exemples de zedgraph que l'on peut mettre un axe en échelle date.

    si je trace mon graph en mettant dans la list(double,double), les dates au format décimal du Datetime j'obtiens exactement la courbe que je veux.

    Mon problème devient donc de convertir la date au format texte (ex : 04/06/2010 19:01:27) en sa valeur décimale (ex :40333,792673611100)

    Merci

  4. #4
    Membre chevronné
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2008
    Messages
    381
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2008
    Messages : 381
    Par défaut
    Utilise la fonction "DateTime.ParseExact".

  5. #5
    Membre extrêmement actif Avatar de petitours
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Février 2003
    Messages
    2 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2003
    Messages : 2 037
    Par défaut
    Je butte toujours sur un problème de format

    je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    double date;
    date = (double)(DateTime.ParseExact(Array[0],"dd/MM/yyyy HH:mm:ss",null));
    ca me dit que je ne peux pas convertir un system.datetime en double

    exactement ce que j'ai comme message apres avoir faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    double date;
    DateTime date2;
    date2 = DateTime.Parse(Array[0]);
    date = (double)(date2);


    Rappel : je veux convertir un string qui contient "04/06/2010 19:01:27" en sa valeur décimale 40333,792673611100 dans un double

  6. #6
    Membre expérimenté
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Par défaut
    Je dirais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    double value = DateTime.ParseExact(Array[0], "dd/MM/yyyy HH:mm:ss", null).ToOADate();
    C'est la seule méthode renvoyant un double. Après si cela ne correspond pas il faudra le faire toi même.

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

Discussions similaires

  1. url en fonction d'une date
    Par silwebdesign dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 18/09/2006, 19h41
  2. Déterminer le jour en fonction d'une date
    Par Flagny dans le forum Access
    Réponses: 3
    Dernier message: 19/07/2006, 10h36
  3. afficher le jour en fonction d'une date
    Par oceane751 dans le forum Général JavaScript
    Réponses: 13
    Dernier message: 05/03/2006, 22h20
  4. [Dates] message en fonction d'une date
    Par chouchouboy dans le forum Langage
    Réponses: 14
    Dernier message: 24/02/2006, 17h31
  5. Réponses: 2
    Dernier message: 03/10/2005, 12h00

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