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

VB.NET Discussion :

Problème qui parait simple, superposer plusieurs courbes ! [Débutant]


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Par défaut Problème qui parait simple, superposer plusieurs courbes !
    Bonjour à tous !

    Voici mon problème : je cherche en fait à superposer 2 courbes. Je récupère les valeurs de mon 1er Csv (qui est dans File_p) et je les enregistre dans ma variable (de type KeyValuePair) Value, ensuite je fais de même avec mon 2eme Csv. J'ai 25 valeurs dans mon 1er Csv et 25 dans mon second Csv. Donc au 1er tour de boucle Value possède les 25 points de mon 1er Csv (ma 1er courbe) puis au second tour de boucle j'ai les 25 points de mon second Csv (2eme courbe), sauf que je les ai à la suite dans ma variable Value (ce qui est normal). Value possède donc 50 points, 25 du 1er Csv et 25 du second à la suite. Donc lorsque je compile j'observe bien mes 2 courbes superposées sauf qu'elles sont reliées entre elles aux extrémités vu que je n'ai pas de séparation dans ma variable Value...

    J'ai besoin de votre aide svp !
    Avez vous une idée de comment faire pour avoir à chaque item choisi, donc à chaque Csv, à chaque tour de boucle ma variable Value sépare les données, afin d'avoir 2 courbes distinctes ! Ou alors une autre méthode qui me permetrait d'afficher 2 courbes, ou plus, superposées :

    Comme ceci par exemple :

    Nom : normal-distributions.png
Affichages : 708
Taille : 39,3 Ko


    Voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
                    For Each item As String In File_P
    			For Each Line As String In System.IO.File.ReadAllLines(item)
    			    Value.Add(New KeyValuePair(Of Double, Double)(CDbl(Line.Split(Separator)(0)), CDbl(Line.Split(Separator)(1))))
    			Next
    			test.DataContext = Value
    		Next
    File_P : dossier qui contient mes Csv (donc mes futurs courbes)
    item : Csv sélectionné dans le dossier File_p
    Value : variable contenant les points de mes Csv
    test.DataContext : je lui donne les points contenus dans Value afin d'afficher mes courbes

    Merci !

  2. #2
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Bonjour,

    J'ai pas de solution car je ne connais pas les composants utilisés ... (le PLOT ?). Les seules courbes que j'ai tracées l'ont été en conduisant une ligne (LINE) point par point.

    Alors de quoi je me mêle ici ... ? Simplement pour une réflexion (sans doute stérile, mais on sait jamais ...) :
    Est-il possible "d'imprimer" plusieurs fois de suite dans ce composant sans effacer ce qui s'y trouve déjà ? Si oui, alors il est facile d'imprimer indépendamment chacune des courbes de sorte qu'elles se superposent.
    Au lieu de faire un ensemble de données traitées dans une seule boucle pour toutes les courbes, il suffirait de répéter une boucle pour chaque courbe ...

    J'espère ne pas faire perdre trop de temps ...

  3. #3
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    A mon avis, le problème vient du fait que tu ne traces pas deux courbes superposées mais une seule: la courbe value ayant plusieurs y pour un même x. Tu as l'impression que c'est superposé mais cela ne l'est pas. Pour régler ça , passe par des variables séparées pour chaque courbe (des collections ou des listes) comme cela tu les traces de manière indépendante dans des séries différentes.

    Regarde le cours de Philippe Lasserre, il y a plein d'idée https://plasserre.developpez.com/cours/chart/

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Par défaut
    Merci pour vos réponses !

    J'ai pas de solution car je ne connais pas les composants utilisés
    Voici mon plot:
    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
     
    <oxy:Plot x:Name="CDC" Grid.Row="1" Grid.Column="1" Grid.ColumnSpan="2">
    	<oxy:Plot.Axes>
    		<oxy:LinearAxis  Key="y"
                         Minimum="{Binding Y_Min}"
                         Maximum="{Binding Y_Max}"
    		</oxy:LinearAxis>
    		<oxy:LinearAxis Key="x"
                        Position="Bottom"
                        Minimum="{Binding XAxisNumericMin}"
                        Maximum="{Binding XAxisNumericMax}"           
    		</oxy:LinearAxis>
    	</oxy:Plot.Axes>
    	<oxy:Plot.Series>
    		<oxy:LineSeries  Name="A" 
    	          ItemsSource="{Binding}"                
    		  DataFieldX="Key"
                      DataFieldY="Value"           
    	          Color="Red"/>
    	</oxy:Plot.Series>		
    </oxy:Plot>
    Alors de quoi je me mêle ici ... ? Simplement pour une réflexion
    Ne dis jamais ça ! Merci beaucoup, au contraire ta réflexion peut m'aider !

    Est-il possible "d'imprimer" plusieurs fois de suite dans ce composant sans effacer ce qui s'y trouve déjà ?
    Oui.

    Au lieu de faire un ensemble de données traitées dans une seule boucle pour toutes les courbes, il suffirait de répéter une boucle pour chaque courbe ...
    Oui mais le problème c'est que je ne sais pas à l'avance combien de courbe je vais superposer, dans le sens où c'est l'utilisateur dans l'interface qui sélectionne lui même (Cases à cocher, l'utilisateur sélectionne les courbes qu'il veut) les courbes qu'il souhaite étudier en les superposant, il peut en sélectionner une, comme mille !

    J'espère ne pas faire perdre trop de temps ...
    Absolument pas ! Merci beaucoup de m'avoir aidé !

    --------------------------------------------------------------------------------------------------------------------------

    A mon avis, le problème vient du fait que tu ne traces pas deux courbes superposées mais une seule: la courbe value ayant plusieurs y pour un même x
    C'est exactement ça, d'où le fait que les extrémités des "2 courbes" soient reliées (Donc une seule courbe comme tu dis).

    Regarde le cours de Philippe Lasserre, il y a plein d'idée https://plasserre.developpez.com/cours/chart/
    Je regarde ça tt de suite et je reviens poster !

    Merci énormément encore une fois !!

  5. #5
    Membre Expert Avatar de Phil Rob
    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2013
    Messages
    1 613
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 613
    Par défaut
    Donc, si ma réflexion n'est peut-être pas si stérile, et que :
    Oui mais le problème c'est que je ne sais pas à l'avance combien de courbe je vais superposer, dans le sens où c'est l'utilisateur dans l'interface qui sélectionne lui même (Cases à cocher, l'utilisateur sélectionne les courbes qu'il veut) les courbes qu'il souhaite étudier en les superposant, il peut en sélectionner une, comme mille !
    Ne peux-tu pas organiser l'algorithme ± comme ceci :
    Au début, PLOT vierge.
    Événement : Case à cocher checked
    Selon le nom du CheckBox (ou selon son indice) : tracer a courbe appropriée.
    ... si l'événement se produit à nouveau, on trace la courbe appropriée, et ainsi de suite.

    Ou encore, à peu près ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    For Each ChkB As Object In Me.Controls	
        If ChkB.GetType.Name = "CheckBox" Then	
           If ChkB.Checked then
                         ' je rempli le tabeau de valeurs et j'appelle l'impression de la courbe
           end if
        End If						
    Next
    Bon travail ...

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Par défaut
    Je ne sais pas si j'ai bien compris mais ça me parait un peu compliqué, dans le sens où le code qui me permet de sélectionner les Csv n'est pas sur la "mm page" où je code pour tracer mes courbes (c'est un très gros programme, énormément de .vb et Xaml) ... Ce weekend je vais essayer d'y réfléchir un peu plus !

    Merci beaucoup encore une fois du temps consacré à mon problème !

  7. #7
    Membre expérimenté Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Developpeur VB amateur
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2014
    Messages : 148
    Par défaut
    Citation Envoyé par ism10 Voir le message
    Oui mais le problème c'est que je ne sais pas à l'avance combien de courbe je vais superposer, dans le sens où c'est l'utilisateur dans l'interface qui sélectionne lui même
    Aucun problème, j'ai eu ce cas à traiter aussi et il suffit de stocker tes courbes dans une collection : par exemple j'utilise un Dictionary(Of Single, Single) pour la courbe en elle même et une Hashtable pour la liste des courbes, la clé étant le nom de la courbe

  8. #8
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2017
    Messages
    150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2017
    Messages : 150
    Par défaut
    Bonjour, merci de m'aider !

    @Elthorn Aurais-tu un exemple d'utilisation de Dictionary et Hashtable s'il te plait ?

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 17/08/2018, 08h37
  2. Superposer plusieurs courbes dans un même rapport
    Par troubleshooting dans le forum iReport
    Réponses: 0
    Dernier message: 22/02/2010, 14h53
  3. Réponses: 8
    Dernier message: 26/11/2007, 17h02
  4. [SQL] Problème de requete qui parait pourtant simple
    Par sephirothmana dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/06/2006, 11h02

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