Sunteți pe pagina 1din 26

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 (stngadreapta, 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:

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)
1.

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)
2.

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";

S-ar putea să vă placă și