Graphiques dans WPF C#-OxyPlot

Graphiques dans WPF C#-OxyPlot

Partie intégrante de l’ouvrage sur les chiffres est leur analyse. Et quelle forme de données pourrait ?tre plus agréable ? le ?il que le graphique ? C’est pourquoi l’entrée allait ?tre un outil pour dessiner des graphiques dans WPF C#-OxyPlot afin de faciliter cette tâche.

Dans les projets qui exigent l’apposition de quelques points d’une mani?re simple, ceci peut ?tre réalisé ? l’aide de vos propres classes. Parfois, cependant, la quantité de données augmente et devient plus compliquée ? afficher par exemple. par une échelle logarithmique, la possibilité de zoomer dans la partie du graphique. Dans ces situations, les outils de programmation peuvent prendre une part importante du temps passé sur le projet d’origine. Vaut alors tirer parti des outils puissants qui sauront répondre ? nos exigences.

Sur le marché, il y a un certain nombre d’outils supportant l’affichage des graphiques, par exemple. XPlot, graphique, ZedGraph. La plupart des outils est écrit en WinForms et l? avec brio. Que puis-je faire lorsqu’un projet est conçu d?s le début ? la fin dans WPF ? Vous pouvez bien s?r combiner le projet WPF avec WinForms, mais il existe un outil qui résout ce probl?me.

OxyPlot est une biblioth?que qui permet la mise en ?uvre immédiate dans WPF, Windows 8, Windows Phone, Windows Phone, Silverlight, Windows Forms, Silverlight, GTK #, Xwt, Novell. iOS, Novell. Android, Novell. formes et Mac. Novell. Est disponible sur la licence du MIT, qui vous permet d’utiliser librement, tant que les programmes dérivés soumis ? licence de contenu.

Par o? commencer

Travailler avec le OxyPlot commencent ? ajouter des biblioth?ques ? votre projet WPF. Il y a trois façons d’ajouter une référence appropriée :

  1. La meilleure façon de procéder est d’utiliser le nuget. Lorsque vous exécutez la Console du gestionnaire de Package de type :

    • Installer le paquet Oxyplot. Core
    • Installer le paquet Oxyplot. Wpf
  2. La deuxi?me méthode consiste ? rechercher des biblioth?ques Oxyplot. Core et Wpf Oxyplot. nuget interface-Manage Nuget Packages d’une mani?re qui est présenté ci-dessous :NuGet-graphiques dans WPF C#-OxyPlot

  3. La troisi?me voie est pour ceux qui ne travaillent pas de mani?res précédentes.

Avec cette méthode, que vous pouvez utiliser si un probl?me est survenu lors de l’installation, certaines fonctionnalités ne fonctionnent pas OxyPlot ou pour une raison quelconque ne veulent pas utiliser nuget.

REMARQUE

Tant la description et les exemples donnés par le fabricant, se référer ? la version 2013.1.38.1, malheureusement la version actuellement dans le nuget est un 2014.1.546 et peut entraîner des erreurs. L’un d’eux est :

Le ? complot ? de nom n’existe pas dans l’espace de noms ? http://oxyplot.codeplex.com ?

La solution ? ce probl?me consiste ? ajouter une référence ? une version antérieure des fichiers que vous pouvez télécharger ici : OxyPlot

Le fichier téléchargé doit ?tre déballé et puis ajoutez une référence ? eux comme indiqué ci-dessous.

  1. Dans l’Explorateur de solutions, vous devriez trouver une référence, faites un clic droit et sélectionnez Ajouter une référence.ref1-graphiques dans WPF C#-OxyPlot
  2. Dans la nouvelle fen?tre qui s’ouvre, cliquez sur Parcourir et trouver les fichiers téléchargés, puis cliquez sur Ajouter.
    ref2-graphiques dans WPF C#-OxyPlot
  3. Enfin, vous devriez vérifier s’ils sont sélectionnés dans la liste et cliquez sur OK.
    Ref3-graphiques dans WPF C#-OxyPlot

REMARQUE

Ajouter que n’importe quel fichier de nuget mettra ? jour des fichiers d’une version plus récente. Dans le cas de la survenance de ladite précédemment il sera erreur encore une fois.

Déclaration des contrôles chart

Contrôle doit ?tre déclarée dans le code XAML dans votre projet. Dans l’en-t?te de la fen?tre, vous devez ajouter la ligne suivante :

xmlns : oxy = ? http://oxyplot.codeplex.com ?

Puis, ? l’endroit o? vous souhaitez que le tableau apparaisse, tapez le code :

<oxy:Plot x:name="Plot1" title="A Graph" model="{Binding PlotModel}" margin="10" grid.row="1"></oxy:Plot>

La valeur d’explication ici est le mod?le qui a été mis dans la liaison. Il s’agit d’un param?tre qui permet de définir l’apparence, couleur, gamme, séries de données, etc..

OxyPlot en dépit de WPF et bindowanego Model’u ne supporte pas enti?rement mod?le MVVM (Model View ViewModel). Cela signifie que l’affichage passe sur le graphique doit mettre ? jour les données dans l’objet PlotModel dans le fichier code-behind.

La mise en ?uvre du graphique d’objet PlotModel

Maintenant que le projet est déj? clair, qui permet d’afficher un graphique, vous devez prendre soin de son apparence.

Le mod?le a été défini par la liaison, et donc c’est la déclaration de la classe sur le terrain, le changement est une réaction induite via des accesseurs. Cette classe doit hériter de la INotifyPropertyChanged et substituez la méthode OnPropertyChanged :

public class OxyPlotModel : INotifyPropertyChanged
{

    privé PlotModel OxyPlot. plotModel ;
    public PlotModel PlotModel OxyPlot.
    {
        Télécharger
        {
            Return plotModel ;
        }
        ensemble
        {
            plotModel = valeur ; OnPropertyChanged ("PlotModel") ;
        }
    }

    public event PropertyChangedEventHandler PropertyChanged ;
    protected void OnPropertyChanged (string nom)
    {
        PropertyChangedEventHandler gestionnaire = PropertyChanged ;
        Si (gestionnaire! = null)
        {
            gestionnaire (cette, nouvelle PropertyChangedEventArgs (nom)) ;
        }
    }
}

Objet tel qu’une classe définie par l’utilisateur devrait accrocher dans l’interface de la carte de contrôle.

La déclaration de l'objet
Private OxyPlotModel oxyPlotModel ;

Dans le constructeur
oxyPlotModel = new OxyPlotModel () ;
cela. DataContext = oxyPlotModel ;  Il vous permet de combiner les indicateurs de champs de la classe OxyPlotModel

Réglage des param?tres du graphique

Quand tout est connecté ? l’autre, il reste maintenant la PlotModel des param?tres pertinents. ? cette fin, la classe OxyPlotModel sera étendue. Comment remplir ces param?tres est arbitraire, mais dans l’exemple suivant, cela a été scindée en deux étapes. Les param?tres qui ne changent pas complimente au début, et ceux qui dépendent de la liste sont ajoutés avant l’affichage. Des param?tres fixes ici sont uniquement ceux sur la légende du graphique :

Private Sub SetUpLegend ()
{
    plotModel. LegendTitle = ? L?gende ? ;
    plotModel. LegendOrientation = OxyPlot.LegendOrientation.Horizontal ; Orientation horizontale
    plotModel. LegendPlacement = OxyPlot.LegendPlacement.Outside ; En plus de jouer graphique
    plotModel. LegendPosition = OxyPlot.LegendPosition.TopRight ; Position : en haut ? droite
    plotModel. LegendBackground = OxyPlot.OxyColor.FromAColor (200, fond OxyPlot.OxyColors.White)//white
    plotModel. LegendBorder = OxyPlot.OxyColors.Black ; Châssis de fen?tre noir
}

Je ne recommande pas une déclaration initiale d’un axe, car il peut ?tre une valeur numérique de la déclaration et avec la m?me entrer des données sur le chevauchement et causer un visuel mess.

La deuxi?me méthode d’une classe qui est appelée chaque fois que vous modifiez le contenu du tableau. Le plus simple exemple dessiner méthode kosinusoidę est appelée :

public void PodajDaneDoWykresu ()
{
        cela. MyModel = new PlotModel {titre = "exemple 1"} ;
        cela. MyModel.Series.Add (new FunctionSeries (Math Cos., 0, 10, 0, 1, ? cos (x) ")) ;
}

Dans le cas du graphique basé sur vos points X et Y, la m?me classe ressemblerait ? ceci :

public IList<OxyPlot.DataPoint> Points {get ; set privé;}</OxyPlot.DataPoint>
public void PodajDaneDoWykresu ()
{
    this.plotModel.Title = "exemple 2" ;
    cela. Points = new List<OxyPlot.DataPoint></OxyPlot.DataPoint>
    {
            nouvelle OxyPlot. DataPoint (5, 3)
            nouvelle OxyPlot. DataPoint (15, 17)
            nouvelle OxyPlot. DataPoint (25, 12),
            nouvelle OxyPlot. DataPoint (35),
            nouvelle OxyPlot. DataPoint (45, 15),
            nouvelle OxyPlot. DataPoint (55)
    };
}

ou :

OxyPlot.Series.LineSeries punktySerii ;
public void PodajDaneDoWykresu ()
{
    this.plotModel.Title = "exemple 3" ;

    punktySerii.Points.Add (new OxyPlot. DataPoint (5, 3)) ;
    punktySerii.Points.Add (new OxyPlot. DataPoint (15, 17)) ;
    punktySerii.Points.Add (new OxyPlot. DataPoint (25, 12)) ;
    punktySerii.Points.Add (new OxyPlot. DataPoint (35, 4)) ;
    punktySerii.Points.Add (new OxyPlot. DataPoint (45, 15)) ;
    punktySerii.Points.Add (new OxyPlot. DataPoint (55, 10)) ;

    plotModel.Series.Add (punktySerii) ;
}

En outre, cette méthode peut ?tre complétée par des informations sur les param?tres d’axe de graphique tels que linéaire/logarithmique, la plage des données, la valeur du Min/Max :

xAxis var = new OxyPlot.Axes.LinearAxis (OxyPlot. Axes. AxisPosition. en bas, ? a offert le trafi[Erl]c ?) {MajorGridlineStyle = OxyPlot.LineStyle.Solid, MinorGridlineStyle = OxyPlot.LineStyle.Dot} ;
plotModel.Axes.Add (xAxis) ;
yAxis var = new OxyPlot.Axes.LogarithmicAxis (OxyPlot. Axes. AxisPosition. ? gauche, ? Ei ?) {MajorGridlineStyle = OxyPlot.LineStyle.Solid, MinorGridlineStyle = OxyPlot.LineStyle.Dot} ;
plotModel.Axes.Add (abscisses) ;

Si la série de données n’est plus alors il serait clairement diff?rent entre eux, donc vous devez définir une série de param?tres :

en dehors de la déclaration de la méthode
OxyPlot.Series.LineSeries punktySerii ;

mise en ?uvre dans le
punktySerii = nouveau OxyPlot.Series.LineSeries
{
    MarkerType = OxyPlot.MarkerType.Plus,//oznaczenie points
    MarkerSize = 4, / / taille des points
    MarkerStroke = OxyPlot.OxyColors.Tomato,//Kolor lignes du graphique
    Titre = "" //series titre            
};

Collecte toutes les informations ci-dessous a été présentée le code pour une série de données, comme indiqué dans la liste :

public void PodajDaneDoWykresu (List<double> X, List<double> Y) //Lista X et Y spécifiées en tant que param?tre ? une méthode</double> </double>
{
    this.PlotModel = new OxyPlot.PlotModel();
    //Suppression des param?tres de la méthode run précédente
    plotModel.Series = new System.Collections.ObjectModel.Collection<OxyPlot.Series.Series> { };
    plotModel.Axes = new System.Collections.ObjectModel.Collection<OxyPlot.Axes.Axis> { };


    //Param?tres de la Charte graphique
    punktySerii = new OxyPlot.Series.LineSeries
    {
        MarkerType = ksztaltPunktowWykresu[0], //oznaczenie punktów - definicja poniżej
        MarkerSize = 4, //wielkość punktów
        MarkerStroke = koloryWykresow[0], //Kolor linii wykresu - definicja poniżej
        Title = "Seria nr: " + (1).ToString() //tytuł serii
    };

    //Supplémentation en données
    for (int n = 0; n < X.Count; n++)
        punktySerii.Points.Add(new OxyPlot.DataPoint(X[n], Y[n]));//dodanie wszystkich serii do wykresu
    
    plotModel.Series.Add(punktySerii);
    

    //Param?tres d'axe de description et graphique
    var xAxis = new OxyPlot.Axes.LinearAxis(OxyPlot.Axes.AxisPosition.Bottom, "a - offered traffic [Erl]") { MajorGridlineStyle = OxyPlot.LineStyle.Solid, MinorGridlineStyle = OxyPlot.LineStyle.Dot};
    plotModel.Axes.Add(xAxis);
    var yAxis = new OxyPlot.Axes.LogarithmicAxis(OxyPlot.Axes.AxisPosition.Left, "Ei") { MajorGridlineStyle = OxyPlot.LineStyle.Solid, MinorGridlineStyle = OxyPlot.LineStyle.Dot};
    plotModel.Axes.Add(yAxis);     
}

Dans le code ci-dessus, ajouté une série de valeurs consécutives tableaux ksztaltPunktowWykresu et koloryWykresow. Il s’agit d’une liste de ces param?tres, les valeurs de l’étude afin de pouvoir les utiliser dans une boucle. Exemple d’implémentation de ces tableaux est le suivant :

Mentionnés afin de changer la couleur et la forme de la classe de nombre.
Private readonly liste<OxyPlot.OxyColor> koloryWykresow As new List<OxyPlot.OxyColor> </OxyPlot.OxyColor> </OxyPlot.OxyColor>
                                    {
                                        OxyPlot.OxyColors.Green,
                                        OxyPlot.OxyColors.IndianRed,
                                        OxyPlot.OxyColors.Coral,
                                        OxyPlot.OxyColors.Chartreuse,
                                        OxyPlot.OxyColors.Peru
                                    };
Private readonly liste<OxyPlot.MarkerType> ksztaltPunktowWykresu As new List<OxyPlot.MarkerType> </OxyPlot.MarkerType> </OxyPlot.MarkerType>
                                            {
                                                OxyPlot.MarkerType.Plus,
                                                OxyPlot.MarkerType.Star,
                                                OxyPlot.MarkerType.Cross,
                                                OxyPlot.MarkerType.Custom,
                                                OxyPlot.MarkerType.Square
                                            };

L’entrée du graphique dans un fichier

Vous avez donc napracowaliśmy pour afficher un graphique, ce serait bien de le garder sous la forme d’un fichier, pour une lecture ultérieure. OxyPlot vous permet d’utiliser le raccourci de clavier ctrl + c, pour sauver son image dans la mémoire temporaire, puis il suffit de coller dans n’importe quel éditeur d’images.

Une option plus pratique, cependant, est l’utilisation d’une méthode qui vous permet d’écrire dans un fichier :

OxyPlot. Wpf. PngExporter. Export (PlotModel, filename, 1600, 1600, OxyPlot.OxyColors.White, 96) ;

Les param?tres de cette méthode :

  • Le mod?le d’objet du graphique ;
  • Le nom du fichier, ainsi que l’emplacement et l’extension ;
  • Largeur en pixels ;
  • La hauteur en pixels ;
  • La couleur d’arri?re-plan du graphique ;
  • Le nombre de pixels par pouce ;
Loading Facebook Comments ...

Laisser un commentaire

Or