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 :

faire un graphique en utilisant les valeurs d'un datagridview


Sujet :

C#

  1. #81
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    j'ai regardé la doc des requetes linq (https://docs.microsoft.com/fr-fr/dot...e-linq-queries) mais je ne comprend pas comment je fais pour avoir les données du jour j sachant que ces données change chaque jour

  2. #82
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Pour la troisième fois, chaque appel à DataLoader.Load fait une lecture du fichier. Si les données de ton fichier ont changé, elles seront à jour dans la liste renvoyée.

    En triant cette liste sur la date de la plus récente à la plus ancienne, tu auras les entrées du dernier jour en premier.

  3. #83
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    oui mais du coup j'aurais une liste avec les jours les plus en anciens au plus récent ?

  4. #84
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    Le temp de comprendre pour la date j'essaye de récupérer les dernières données que je reçois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                List<Donnees> TempInt = new List<Donnees>();
                TxtBoxTempInt.Text = TempInt.Last().ToString();
    j'ai une erreur et l'espion me met que TempInt est égale a 0

    j'ai utilisé cette exemple pour faire ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //On a une classe Joueur.cs avec une propriété Nom.
     
    List<Joueur> mesjoueurs = new List<Joueur>();
     
    Joueur JoueurA = new Joueur("Arnaud");
    mesjoueurs.add(JoueurA);
     
    Joueur JoueurB = new Joueur("Leelou");
    mesjoueurs.add(JoueurB);
     
    Console.WriteLine("Le dernier joueur est {0}.",  mesjoueurs.Last().Nom);
     //=> " Le dernier joueur est Leelou"
    Console.WriteLine("Le joueur max est {0}.",  mesjoueurs.Max());
    //=> At least one object must implement IComparable.
    mais je pense que je dois prendre la liste DataLoader et non données mais lorsque je remplace donnees par dataloader j'ai aussi une erreur
    "impossible d'utiliser les types static en tant que qu'arguments de type"

  5. #85
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    j'ai changé par ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    List<Donnees> TempInt = new List<Donnees>();
                TempInt.Add(new Donnees());
                TxtBoxTempInt.Text = TempInt.Count.ToString();
    c'est beaucoup mieux qu'avant ça ne plante plus mais par contre ça ne m'affiche pas la dernière valeur mais tout le temps "1"

  6. #86
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Pour trier par date dans l'ordre croissant OrderBy.
    Pour trier par date dans l'ordre décroissant OrderByDescending.

    Pour le reste je ne comprends pas ce que tu cherches à faire.

  7. #87
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    je voudrais récupérer les dernières données reçu j'ai vu que je pouvais utiliser .Last ou .count mais cela m'affiche 1 quand j'utilise count et avec .Last j'ai le nom de mon document visual studio


    Ensuite pour trier la date dans l'ordre décroissant j'ai fais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     List<Donnees> listdecroissantjour = new List<Donnees>();
                var listedecroissantjour = DataLoader.Load(path).OrderByDescending(it => it.Date);
    quand je met dans mon graphique "Date" pour la valeur des abscisse j'ai le jour 1

  8. #88
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Forcément si tu crée une liste vide pour y insérer un seul enregistrement... alors Count va toujours renvoyer 1 et Last va te renvoyer l'unique enregistrement. Et tu as n'a pas le nom de ta solution Visual Studio, tu as le nom complet de classe Donnees renvoyé par ToString().

    Je t'ai pourtant fourni les méthodes Linq à appeler, et dans l'ordre en plus...
    Citation Envoyé par popo Voir le message
    Tu devrais pouvoir t'en sortir avec quelques requêtes Linq.

    Méthode Sort pour trier la liste sur la propriété Date.
    Méthode Last pour récupérer le dernier enregistrement sur lequel tu récupère la date.
    Méthode Where pour effectuer un filtre sur la propriété Date.
    Et enfin méthode ToList pour affecter au DataSource du graphique.

  9. #89
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    j'arrive pas savoir comment utiliser les méthodes..
    Vous pouvez me montrer comment je dois faire

  10. #90
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Ce ne serait pas te rendre service de te donner le code tout prêt. Il faut que tu apprennes à réfléchir par toi même.

    Procède par étape.
    Place ce que tu reçois de DataLoader.Load() dans une variable data et commence par trier sur la date avec data.OrderBy().

    Une fois le tri effectué la donnée avec le jour le plus récent se trouvera en dernière position.
    Récupère cet enregistrement avec data.Last() et lis sa propriété Date pour extraire cette date.

    Une fois en possession de la date, utilise data.Where() pour filtrer les éléments dont la date correspond.

    Ce sont ces données filtrées qui serviront de DataSource au graphique.

    J'estime avoir suffisamment donné de détails sur la procédure à suivre (même trop). Le rôle des membres du forum est de te mettre sur la voie, pas de faire le travail à ta place.

  11. #91
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    j'essaye de suivre vos conseils mais bon sans succès ...

    je suis aller jusqu'à l'étape de récupération de la dernière date :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    var data = DataLoader.Load(path);
                var jours_decroissant = data.OrderByDescending(it => it.Date);
                jours_decroissant.Last();
                TxtBoxTempExt.Text = jours_decroissant.ToString();
    j'ai utilisé un textbox pour vérifié si j'avais bien la dernière date mais le txtbox m'affiche : "System.Linq.OrderedEnumerable`2"

  12. #92
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2022
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2022
    Messages : 48
    Points : 1
    Points
    1
    Par défaut
    je suis toujours bloqué dans tous les sens ..

    j'ai remarqué un nouveau problème aussi sur le graph qu'on avait réalisé la date n'est pas la bonne Nom : date.png
Affichages : 67
Taille : 22,6 Ko


    le code :
    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
                string path = "C:/Users/Lucas/Documents/test.csv";
                chart1.DataSource = DataLoader.Load(path);
     
     
     
     
     
                chart1.Series.Clear();
                chart1.Series.Add(
                    new Series()
                    {
                        XValueMember = "Heure",
                        YValueMembers = "HumiditeInterieure",
                        ChartType = SeriesChartType.Line,
                        IsVisibleInLegend = true,
                        IsValueShownAsLabel = false,
                        LegendText = "Humidité intérieure en %",
                        BorderWidth = 3,
     
                    });
     
                chart1.Series.Add(
                    new Series()
                    {
                        XValueMember = "Heure",
                        YValueMembers = "HumiditeExterieure",
                        ChartType = SeriesChartType.Line,
                        IsVisibleInLegend = true,
                        IsValueShownAsLabel = false,
                        LegendText = "Humidité extérieure en %",
                        BorderWidth = 3,
                    });
    et lorsque je met "Date" au lieu de l'heure sur l'axe des abscisse j'ai des dates de 2028 ...

  13. #93
    Expert confirmé
    Avatar de popo
    Homme Profil pro
    Analyste programmeur Delphi / C#
    Inscrit en
    Mars 2005
    Messages
    2 674
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste programmeur Delphi / C#
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 2 674
    Points : 5 259
    Points
    5 259
    Par défaut
    Tu tries par ordre décroissant donc Last() va renvoyer le premier jour et non le dernier.
    Je ne pouvais pas être plus clair :
    Citation Envoyé par popo Voir le message
    Place ce que tu reçois de DataLoader.Load() dans une variable data et commence par trier sur la date avec data.OrderBy().
    Tu as utilisé OrderByDescending et pas OrderBy.

    jours_decroissant.Last(); va chercher le dernier enregistrement mais tu ne fait rien de son retour...
    Là encore, je t'ai dit de lire sa propriété "Date.
    Citation Envoyé par popo Voir le message
    Une fois le tri effectué la donnée avec le jour le plus récent se trouvera en dernière position.
    Récupère cet enregistrement avec data.Last() et lis sa propriété Date pour extraire cette date.
    TxtBoxTempExt.Text = jours_decroissant.ToString(); affiche "System.Linq.OrderedEnumerable`2", parce que "jours_decroissant" est ta liste triée. Ce n'est pas une date.

    Pour l'affichage de l'heure sur le graphique, c'est comme pour la grille, il faut mettre un format sur ton axe.
    chart1.ChartAreas[0].AxisX.LabelStyle.Format = "HH:mm:ss";.

Discussions similaires

  1. Utiliser les valeurs d'une requete dans une autre requete ?!
    Par nekro65 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 16/03/2009, 11h16
  2. Graphique utilisant les valeurs d'une Listbox
    Par fermat dans le forum Débuter
    Réponses: 2
    Dernier message: 19/09/2008, 12h21
  3. Faire une moyenne en ignorant les valeurs nulles
    Par Giansolo dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/06/2007, 14h38
  4. Réponses: 1
    Dernier message: 21/12/2006, 11h17
  5. Réponses: 5
    Dernier message: 05/10/2006, 10h18

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