Mcc

26
Microsoft Chart Controls

description

Mcc

Transcript of Mcc

  • Microsoft Chart

    Controls

  • Microsoft Chart Controls este un set de controale grafice care permit vizualizarea graficelor n aplicaii statistico-financiare complexe, att n ASP.NET ct i n Windows Forms

    Avantaje/Faciliti:

    Dezvoltare integrat n Visual Studio

    Scalabilitate numr teoretic nelimitate de grafice-chart, titluri asociate, legende, adnotri, serii de date prelucrare, cazuri luate n considerare

    Asigur suport pentru un numr mare de tipuri de grafice (35)

    Permite legarea facil la diverse surse de date (masive, baze de date, fisiere XML)

    Asigura suport pentru analiz statistico-financiar peste 50 de formule utilizate n analiza de date, transformarea datelor sau

    analiz financiar

  • Faciliti specifice aplicaiilor Windows Form (zooming, scooling, printing)

    Asigur extensie 3D pentru anumite tipuri de grafice

    Tipuri de grafice. Sunt identificate prin:

    System.Windows.Forms.DataVisualization.Charting.SeriesChartType

    - Tipul implicit este Column

  • Chart

    public class Chart : DataBoundControl, IPostBackEventHandler

  • Chart Areas Graficul Chart conine mai multe regiuni rectangulare n care se deseneaz cte un grafic elementar, ChartArea. Acestea sunt accesate prin proprietatea ChartAreas a clasei Chart

    public ChartAreaCollection ChartAreas { get; }

    public class ChartArea : ChartNamedElement

    Chart Series reprezint seriile de date asociate unui grup de indivizi (cazuri, entiti). Fiecare serie este asociat unui tip de grafic.

    public SeriesCollection Series { get; }

    public class Series : DataPointCustomProperties

    O serie contine obiecte DataPoint memorate ntr-o colecie DataPointCollection

    Legend Graficul Chart poate contine un numr nelimitat de legende. Aceastea sunt memorate in colecia Legends

    public LegendCollection Legends { get; }

    public class Legend : ChartNamedElement

  • Titles - Controlul Chart conine o colecie de titluri, definite prin proprietatea Titles:

    public TitleCollection Titles { get; }

    public class Title : ChartNamedElement, IDisposable,

    IChartMapArea

    Clasa Title are proprieti care permit poziionarea titlului n raport cu graficul, coninutul text al titlului i modul de afiare (font, mrime etc.)

    Annotations Adnotrile sunt introduse prin proprietatea de tip colecie Annotations:

    public AnnotationCollection Annotations { get; }

    Exist mai multe tipuri de adnotri: LineAnnotation, HorizontalLineAnnotation , VerticalLineAnnotation,

    PolylineAnnotation, TextAnnotation etc.

    Adnotarea se poate face in pozitii absolute, relativ la anumite puncte,

    sau anumite arii prin proprietile Anchor

  • Sistemul de coordonate

    Sistemul de coordonate este relativ la o

    fereastra 100x100, avnd originea

    stnga-sus

    Coordonatele reale sunt aduse mai nti

    n acest spaiu, dup care are loc transformarea de vizualizare

  • Elemente de design

    Alegerea paletei de culori se

    realizeaz prin intermediul proprietii Palette:

    public ChartColorPalette Palette { get;

    set; }

    BrightPastel este paleta de culori implicit

  • Stabilirea culorii de fond se realizeaz cu ajutorul proprietilor:

    BackColor stabilete culoarea de fond

    BackGradientStyle sensul aplicrii gradientului de culoare (stnga-

    dreapta, sus-jos etc.) Cele dou culori gradient sunt stabilite prin proprietile BackColor i BackSecondaryColor. Tipurile de gradient sunt:

    BackImage stabilete imaginea de font. Proprietatea

    BackgroundImageLayout stabilete modul de dispunere al imaginii (None,

    Tile, Center, Stretch, Zoom), iar

    BackImageAlignment, poziia (Top, Bottom, Center etc.)

  • Stabilirea bordurilor. Proprieti:

    BorderlineColor : culoarea

    BorderlineDashStyle : stilul. Valoarea implicit: NotSet (graficul nu are bordur). Valori posibile: NotSet, Dash, DashDot, DashDotDot, Dot, Solid

    BorderlineWidth: grosimea bordurii

    Exemplu:

    chart.BorderlineColor = Color.Blue;

    chart.BorderlineDashStyle = ChartDashStyle.DashDot;

    chart.BorderlineWidth = 3;

  • Conectarea la sursele de date Data Binding

    Microsoft Chart Controls asigur urmtoarele faciliti in lucrul cu date:

    Adugare dinamic in mod run-time sau utilizarea modului design-time sub Visual Studio

    Tratarea automat a datelor lips Empty point support

    Manipulare de formule statistico-financiare

    Faciliti de tip copiere, tergere, concatenare, filtrare etc.

    Datele sunt organizate sub form de serii statistice, fiecare serie fiind o colecie de puncte reprezentnd cazuri (indivizi)

    Fiecare punct conine:

    Una sau mai multe valori Y care sunt de fapt valorile asociate cazului

    O valoare opional X care poate determina poziionarea pe axa X

  • Conectarea se poate face att run-time ct i design-time

    Sunt permise surse de date standard sau custom prin

    implementarea interfeei IEnumerable

    Surse standard: DataView, DataReader, DataSet, DataRow,

    DataColumn, Array, List, SqlCommand, OleDbCommand,

    SqlDataAdapter, OleDbDataAdapter

    Valorile lips sunt tratate prin utilizarea punctelor vide (empty point) utiliznd valoarea medie sau utiliznd valoarea 0:

  • 1. Adugarea datelor prin metodele Add

    public int AddXY ( double xValue, double yValue )

    public int AddXY ( Object xValue, params Object[] yValue )

    public int AddY ( double yValue )

    public int AddY ( params Object[] yValue )

    Metodele intorc indexul elementului adugat.

    (Exemplu: Column)

    2. Conectarea la masive

    public void DataBindXY ( IEnumerable xValue, params IEnumerable[]

    yValues )

    public void DataBindXY ( IEnumerable xValue, string xField,

    IEnumerable yValue, string yFields )

    public void DataBindY ( params IEnumerable[] yValue )

    public void DataBindY ( IEnumerable yValue, string yFields )

    (Exemplu: Bar)

  • Conectarea la date memorate n fiiere CSV, Excel, Access

    public void DataBindXY ( IEnumerable xValue, string xField,

    IEnumerable yValue, string yFields )

    Folosete mecanismul OleDb.

    Exemplu: Pie

  • Construirea programatica a graficelor

    1. Instantierea unui obiect Chart

    chart = new Chart();

    2. Stabilirea proprietatilor de design

    chart.BackImage = "img1.jpg";

    chart.BorderlineColor = Color.Blue;

    chart.BorderlineDashStyle = ChartDashStyle.DashDot;

    chart.BorderlineWidth = 3;

    chart.BorderSkin.SkinStyle = BorderSkinStyle.Sunken;

    chart.Dock = System.Windows.Forms.DockStyle.Fill;

    ...

    3. Creare si parametrizare titluri

    chart.Titles.Add("Ttitlul general");

    chart.Titles[0].Font = new System.Drawing.Font

    ("Times New Roman",20, FontStyle.Bold);

    ...

  • 4. Crearea si parametrizarea regiunilor - axe si proprietati

    ChartArea chartArea = new ChartArea();

    chartArea.AxisX.Title = "Titlu axa X";

    chartArea.AxisX.TitleFont = new System.Drawing.Font("Times New Roman",

    14, FontStyle.Italic); // stabilire font pentru titlu axa

    chartArea.AxisY.Title = "Titlu axa Y";

    chartArea.AxisY.TitleFont = new System.Drawing.Font("Times New Roman",

    14, FontStyle.Italic);

    chartArea.AxisX.Interval = 1.0; // Stabilire interval de afisare a etichetelor

    chartArea.AxisX.LabelStyle.Angle = 90; // Stabilire unghi de afisare pentru

    etichete

    chartArea1.AxisY.IsStartedFromZero = false; // Valorile de pe axa X nu pleaca

    de la 0

    5. Adaugare regiune la chart

    chart.ChartAreas.Add(chartArea);

    6. Creare si adaugare legenda

    Legend legenda = new Legend();

    chart.Legends.Add(legenda);

  • 7. Crearea seriilor de date si stabilirea tipului de grafic

    Series series1 = new Series();

    series1.Name = "Nume serie 1";

    series1.ChartType = SeriesChartType.Bar;

    series1.IsValueShownAsLabel = true; // daca valorile sunt afisate in grafic

    Series series2 = new Series();

    series2.Name = "Nume serie 2";

    series2.ChartType = SeriesChartType.Bar;

    ...

    Diverse parametrizari:

    seriesN.MarkerStyle = MarkerStyle.Circle ; // Stabilire stiluri pentru puncte in

    graficele de tip Point

    seriesN.MarkerBorderColor = Color.Black;

    seriesN.MarkerSize = value; // Stabilire marime marker punct

    seriesN.Tooltip = "#VALX"; // stabilire tooltip la nivel de serie prin afisarea valorilor

    X

    seriesN.Points[i].Tooltip = "Mesaj punct"; // stabilire tooltip la nivel de punct

    seriesN.BorderWidth = 3; //Stabilire latime pentru linii

  • 8. Legarea datelor (data binding) - exprima modul in care serile de date

    sunt construite din punct de vedere al valorilor

    Construire punct cu punct:

    for (int i = 0; i < labels.Length; i++)

    {

    series1.Points.AddXY(labels[i], xValues[i]);

    series2.Points.AddXY(labels[i], yValues[i]);

    }

    Construire serie in integralitate:

    series1.Points.DataBindXY(labels, xValues);

    series2.Points.DataBindXY(labels, yValues);

  • Legarea la fisiere Excel

    String fisier = "Fisier.xls"; // Nume fisier

    Creare conexiune OLEDB:

    String stringCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +

    fisier + ";Extended Properties=\"Excel 8.0\"";

    OleDbConnection con = new OleDbConnection(stringCon);

    con.Open();

    Creare comanda OleDb pentru interogare:

    OleDbCommand myCommand = new OleDbCommand("Select * From

    [Sheet2$A1:V43]", con);

    Creare obiect reader:

    OleDbDataReader reader = myCommand.ExecuteReader();

  • Binding:

    series1.Points.DataBindXY(reader, "Camp1", reader, "Camp2");

    reader.Close();

    reader = myCommand.ExecuteReader();

    series2.Points.DataBindXY(reader, "Camp1", reader, "Camp3");

    ...

    Inchidere reader si connection:

    reader.Close();

    con.Close();

  • Legarea la baze de date Access

    String path= "Fisier.mdb"; // Nume fisier

    Creare conexiune OLEDB:

    String stringCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" +

    path;

    OleDbConnection con = new OleDbConnection(stringCon);

    con.Open();

    Creare comanda OleDb pentru interogare:

    OleDbCommand myCommand = new OleDbCommand("Select * From

    Tabela", con);

    sau

    OleDbCommand myCommand = new OleDbCommand("Select Camp1,

    Camp2, ... From Tabela", con);

  • Creare obiect reader:

    OleDbDataReader reader = myCommand.ExecuteReader();

    Legarea datelor se face prin reader (vezi Excel). Pot fi legate datele si

    direct prin chart:

    chart.DataBindTable(reader, "CampEticheta"); // Graficul va fi de tip

    implicit si va avea un numar de serii egal cu numarul de coloane

    investigate prin select mai putin campul de etichete

    Inchidere reader si connection (idem Excel)

  • 9. Adaugarea seriilor de date

    chart.Series.Add(series1);

    chart.Series.Add(series2);

    ...

    10. Adaugare chart la container

    containerCurent.Controls.Add(chart);

    containerCurent.Controls.AddRange(new System.Windows.Forms.Control[] {

    this.chart });

  • Grafice statistice

    MCC ofera facilitati pentru reprezentarea unor indicatori statistici si

    analiza statistica la nivel grafic precum:

    Statistica descriptiva

    double mean = chart.DataManipulator.Statistics.Mean(series.Name);

    double median = chart.DataManipulator.Statistics.Median(series.Name);

    double variance = chart.DataManipulator.Statistics.Variance(series.Name, true);

    StripLine stripLine1 = new StripLine();

    stripLine1.BackColor = Color.FromArgb(255, 200, 200);

    stripLine1.IntervalOffset = mean - Math.Sqrt(variance);

    double interval = 2 * Math.Sqrt(variance);

    double latime = interval / 20;

  • StripLine stripLine2 = new StripLine();

    stripLine2.IntervalOffset = mean-latime;

    stripLine2.BackColor = Color.Blue;

    stripLine2.Text = "Media";

    stripLine2.StripWidth = 2*latime;

    chartArea.AxisY.StripLines.Add(stripLine2);

    StripLine stripLine3 = new StripLine();

    stripLine3.IntervalOffset = median-latime;

    stripLine3.BackColor = Color.Orange;

    stripLine3.StripWidth = 2*latime;

    stripLine3.Text = "Mediana";