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

  1. #1
    Membre du Club
    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
    Points : 51
    Points
    51
    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 : 610
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 émérite 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
    Points : 2 865
    Points
    2 865
    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 averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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
    Points : 372
    Points
    372
    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 du Club
    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
    Points : 51
    Points
    51
    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 émérite 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
    Points : 2 865
    Points
    2 865
    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 du Club
    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
    Points : 51
    Points
    51
    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 averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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
    Points : 372
    Points
    372
    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 du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Bonjour, merci de m'aider !

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

  9. #9
    Membre éclairé Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 667
    Points
    667
    Merci de ainsi que d'utiliser les boutons et

  10. #10
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Merci je regarde ça tt de suite !

  11. #11
    Membre émérite 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
    Points : 2 865
    Points
    2 865
    Par défaut
    @ism10
    @Elthorn

    Bonjour,

    A toutes fins utiles, je vous transmets le fichier Collections.pdf qui est un extrait de cours dans lequel vous trouverez les principaux moyens des principales collections, dont la HashTable de l'espace de noms Collections et la Dictionary de l'espace de nom Collections.Generic.

    Bon travail,

    Collections.pdf

  12. #12
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    @Phil Rob Excellent !

    Je suis actuellement en train de lire ce cours que tu viens de partager et c'est très très intéressant !

    Merci énormément

  13. #13
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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
    Points : 372
    Points
    372
    Par défaut
    Citation Envoyé par ism10 Voir le message
    Bonjour, merci de m'aider !

    @Elthorn Aurais-tu un exemple d'utilisation de Dictionary et Hashtable s'il te plait ?
    voilà,
    dans mon cas je stocke plusieurs courbes dans un fichier
    cela commence par le nombre de courbe puis le nom de la courbe puis par les points séparés par des virgules (j'utilise le point comme symbole de décimale)
    la fin de la courbe est traité par une ligne de ******

    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
     
    Nb_Courbe = sr.ReadLine()
          If Nb_Courbe = 0 Then
             ' sort du test
          Else 'récupère les données des courbes et enregistre les 
             For i = 1 To Nb_Courbe
                Dim Courbe As New Dictionary(Of Single, Single) ' crée une courbe
                Dim Fin_Courbe As Boolean = False
                Dim ligne As String
                Dim Nom_courbe As String
                Dim point() As String
                Nom_courbe = sr.ReadLine()
     
                While Fin_Courbe = False
                   ligne = sr.ReadLine()
                   If ligne = "******" Then
                      Fin_Courbe = True
                   Else
                      point = ligne.Split(",")
                      Courbe.Add(CSng(point(0)), CSng(point(1)))
                   End If
                End While
                'met dans la collection courbe
                Me.Courbes_Mecaniques.Add(Nom_courbe, Courbe)
             Next
    end if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.Courbes_Mecaniques est une propriété de mon objet :
    Property Courbes_Mecaniques As New Hashtable

    c'est peut être pas le plus optimisé mais c'est simple et cela fonctionne


    pour la fonction d'affichage de courbe :

    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
    'fonction affichage de courbe générique
       Public Sub Affichage_Courbe_new(ByVal Nom_Courbe As String, ByVal Courbe_a_afficher As Dictionary(Of Single, Single), ByVal nom_graph As Chart, ByVal efface As Boolean, ByVal serie As String)
     
          If efface = True Then
             'réinitialise le graphique
             nom_graph.Series(serie).Points.Clear()
             nom_graph.ChartAreas(0).AxisX.RoundAxisValues()
             nom_graph.ChartAreas(0).AxisX.LabelStyle.Format = "0.0 E00"
          End If
     
     
          'crée la courbe
          nom_graph.Titles(serie).Text = Nom_Courbe
          Dim PointX As Object
          Dim Liste_PointX As ICollection
     
          Liste_PointX = Courbe_a_afficher.Keys()
     
          For Each PointX In Liste_PointX
             nom_graph.Series(serie).Points.AddXY(PointX, Courbe_a_afficher.Item(PointX))
          Next
       End Sub
    tu superposes en appelant plusieurs fois la fonction et en affectant des noms de série différents

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     Call Affichage_Courbe_new(choix, Matiere.Courbes_Mecaniques.Item(choix), Fenetre_principale.Chart_calcul, True, "Courbe1")
          Call Affichage_Courbe_new(choix2, Matiere.Courbes_Mecaniques.Item(choix2), Fenetre_principale.Chart_calcul, True, "Courbe2")

  14. #14
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Merci Pour l'aide @Elthorn

    Voici ce que j'ai fait mais rien ne s'affiche, j'ai juste un rectangle blanc sans abscisse et ordonnée...

    Mes Imports :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Imports OxyPlot
    Imports OxyPlot.Wpf
    Imports OxyPlot.Series
    Imports OxyPlot.Axes.Axis
    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
    Public Sub Chart()
    		Dim Model As New PlotModel()
    		Model.Axes.Add(New OxyPlot.Axes.LinearAxis() With {
    			.Position = OxyPlot.Axes.AxisPosition.Bottom,
    			.Title = "Test",
    			.Maximum = 1280,
    			.Minimum = 0})
    		Model.Axes.Add(New OxyPlot.Axes.LinearAxis() With {
    			.Position = OxyPlot.Axes.AxisPosition.Left })
    		Dim Points As List(Of DataPoint) = New List(Of DataPoint)()
    					Dim Series As OxyPlot.Series.LineSeries = New OxyPlot.Series.LineSeries()
    					Series.Title = "Series 1"
    					Series.Points.Add(New DataPoint(0, 0))
    					Series.Points.Add(New DataPoint(1, 2))
    					Series.Points.Add(New DataPoint(2, 3))
    					Series.Points.Add(New DataPoint(3, 5))
     
    					Dim MySeries2 As OxyPlot.Series.LineSeries = New OxyPlot.Series.LineSeries()
    					Series2.Title = "Series 2"
    					Series2.Points.Add(New DataPoint(0, 0))
    					Series2.Points.Add(New DataPoint(1, 20))
    					Series2.Points.Add(New DataPoint(2, 23))
    					Series2.Points.Add(New DataPoint(3, 35))
     
    					Model.Series.Add(Series)
    					Model.Series.Add(Series2)
    Mon Xaml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <oxy:PlotView x:Name="Plot" Model="{Binding Model}" Height="350" Width="500" />
    Lorsque je regarde "pas à pas" et que j'inspecte mes variables, je retrouve bien mes points dans Series1 et Series2 et dans Model je trouve bien 2 séries...
    Cependant j'obtiens un rectangle blanc sans rien dedans, même pas d'abscisse ni d'ordonnée...

    Quelqu'un peut-il m'aider svp ??

  15. #15
    Modérateur
    Avatar de Sankasssss
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2006
    Messages
    1 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 842
    Points : 4 232
    Points
    4 232
    Par défaut
    Bonjour,

    Model ne doit pas être une variable de la méthode Chart mais une propriété avec un NotifyPropertyChanged dedans.

  16. #16
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Bonjour merci pour ta réponse !

    J'ai fait ç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
    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
     
        Private mmodel As New PlotModel
        Property Model() As PlotModel
            Get
                Return mmodel
            End Get
            Set(value As PlotModel)
                mmodel = value
            End Set
        End Property
     
    Public Sub Chart()
    		'Dim Model As New PlotModel()
    		'Model.Axes.Add(New OxyPlot.Axes.LinearAxis() With {
    			'.Position = OxyPlot.Axes.AxisPosition.Bottom,
    			'.Title = "Test",
    			'.Maximum = 1280,
    			'.Minimum = 0})
    		'Model.Axes.Add(New OxyPlot.Axes.LinearAxis() With {
    			'.Position = OxyPlot.Axes.AxisPosition.Left })
    		Dim Points As List(Of DataPoint) = New List(Of DataPoint)()
    					Dim Series As OxyPlot.Series.LineSeries = New OxyPlot.Series.LineSeries()
    					Series.Title = "Series 1"
    					Series.Points.Add(New DataPoint(0, 0))
    					Series.Points.Add(New DataPoint(1, 2))
    					Series.Points.Add(New DataPoint(2, 3))
    					Series.Points.Add(New DataPoint(3, 5))
     
    					Dim MySeries2 As OxyPlot.Series.LineSeries = New OxyPlot.Series.LineSeries()
    					Series2.Title = "Series 2"
    					Series2.Points.Add(New DataPoint(0, 0))
    					Series2.Points.Add(New DataPoint(1, 20))
    					Series2.Points.Add(New DataPoint(2, 23))
    					Series2.Points.Add(New DataPoint(3, 35))
     
    					'Model.Series.Add(Series)
    					'Model.Series.Add(Series2)
    					mmodel.Series.Add(Series)
    					mmodel.Series.Add(Series2)
    End sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <oxy:PlotView x:Name="Plot" Model="{Binding Model}" Height="350" Width="500" />
    Malheureusement je ne visualise toujours rien et je ne comprends rien... Rectangle blanc sans rien dedans, pourtant dans "mmodel" je retrouve les 2 séries dedans...

  17. #17
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Avec cette méthode :

    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
    <oxy:Plot x:Name="CDC" Height="350" Width="525">
    	<oxy:Plot.Axes>
    		<oxy:LinearAxis  Key="y"
    		</oxy:LinearAxis>
    		<oxy:LinearAxis Key="x"
                        Position="Bottom"
    		</oxy:LinearAxis>
    	</oxy:Plot.Axes>
    	<oxy:Plot.Series>
    		<oxy:LineSeries  Name="test" 
    	          ItemsSource="{Binding}"                
    		  DataFieldX="Key"
                      DataFieldY="Value"           
    	          Color="Red"/>
    	</oxy:Plot.Series>		
    </oxy: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
    22
    23
    24
    25
    26
    27
    28
    29
    30
     Private mmodel As New PlotModel
        Property Model() As PlotModel
            Get
                Return mmodel
            End Get
            Set(value As PlotModel)
                mmodel = value
            End Set
        End Property
     
    Public Sub Chart()
    		Dim Points As List(Of DataPoint) = New List(Of DataPoint)()
    					Dim Series As OxyPlot.Series.LineSeries = New OxyPlot.Series.LineSeries()
    					Series.Title = "Series 1"
    					Series.Points.Add(New DataPoint(0, 0))
    					Series.Points.Add(New DataPoint(1, 2))
    					Series.Points.Add(New DataPoint(2, 3))
    					Series.Points.Add(New DataPoint(3, 5))
     
    					Dim MySeries2 As OxyPlot.Series.LineSeries = New OxyPlot.Series.LineSeries()
    					Series2.Title = "Series 2"
    					Series2.Points.Add(New DataPoint(0, 0))
    					Series2.Points.Add(New DataPoint(1, 20))
    					Series2.Points.Add(New DataPoint(2, 23))
    					Series2.Points.Add(New DataPoint(3, 35))
     
    					test.DataContext = Series
    					test.DataContext = Series2
     
    End sub
    J'obtiens bien une courbe, mais qu'une seule, je ne trace que Series2.
    Si quelqu'un pourrait m'expliquer svp ? (je suis débutant)

  18. #18
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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
    Points : 372
    Points
    372
    Par défaut
    bonsoir,

    je ne connais pas bien cette syntaxe et cette façon de faire mais à mon avis quand tu écris :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test.DataContext = Series
    test.DataContext = Series2
    tu remplaces Series par Series2, tu peux vérifier ça en mettant en commentaire la deuxième ligne pour voir si Series s'affiche.

    d'autant que dans cette partie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <oxy:Plot.Series>
    		<oxy:LineSeries  Name="test" 
    	          ItemsSource="{Binding}"                
    		  DataFieldX="Key"
                      DataFieldY="Value"           
    	          Color="Red"/>
    	</oxy:Plot.Series>
    tu n'as créé qu'une seule série dans ton graphique.

    si tu ajoutes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <oxy:Plot.Series>
    		<oxy:LineSeries  Name="test2" 
    	          ItemsSource="{Binding}"                
    		  DataFieldX="Key"
                      DataFieldY="Value"           
    	          Color="Red"/>
    	</oxy:Plot.Series>
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    test.DataContext = Series
    test2.DataContext = Series2
    Cela devrait fonctionner

    sinon regarde par là j'ai trouvé un exemple (qui demande un peu de connaissance en anglais...) https://stackoverflow.com/questions/...hing-in-vb-net

  19. #19
    Membre du Club
    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
    Points : 51
    Points
    51
    Par défaut
    Bonjour et merci pour la réponse

    sinon regarde par là j'ai trouvé un exemple (qui demande un peu de connaissance en anglais...) https://stackoverflow.com/questions/...hing-in-vb-net
    C'est à partir de cet exemple que j'ai fait ceci, sauf que lorsque j'utilise PlotModel j'ai un rectangle blanc au moment de l'affichage or lorsque j'inspecte mes variables ainsi que mon PlotModel je retrouve bien 2 Series dans PlotModel et je retrouve bien mes points dans Series et Series2. Donc tt est bon mais pas d'affichage.

    tu remplaces Series par Series2, tu peux vérifier ça en mettant en commentaire la deuxième ligne pour voir si Series s'affiche.
    Oui c'est exactement l'erreur merci.

    Alors oui ça fonctionne lorsque je rajoute une série cependant j'aimerai rendre mon système dynamique dans le sens où c'est l'utilisateur qui choisit le nombre de série. C'est à dire je peux en avoir 1 comme 1000... Et donc cette méthode n'est pas approprié, c'est pourquoi j'ai essayé de passer par
    ...Series.Add(Series1)
    mais sans succès...

    Si quelqu'un n'a pas compris ce que je cherche qu'il me demande je reformulerai.

    Merci à tous sincèrement pour l'aide !

  20. #20
    Membre averti Avatar de Delaney
    Homme Profil pro
    Developpeur VB amateur
    Inscrit en
    Mars 2014
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    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
    Points : 372
    Points
    372
    Par défaut
    dans l’exemple que tu as donné ou tu utilises
    tu as mis en commentaires

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    'Dim Model As New PlotModel()
    cela peut venir de là

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

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