Developing

C# – ZedGraph Control

Introduction

In this post I will show how to create simple chart using C# and ZedGraph.

Esse post mostra como criar gráficos simples utilizando o ZedGraph.

Class

public class CreateGraph
{
Random random = new Random();
int Vermelho;
int Azul;
int Verde;

public void SetSize(ZedGraphControl zgc, int width, int height)
{
zgc.Location = new Point(10, 10);

// Leave a small margin around the outside of the control

zgc.Size = new Size(width, height);
}

public void Create(ZedGraphControl zgc, string titulo, string nomeX, string nomeY,
PointPairList list, string label, SymbolType simbolo)
{
// get a reference to the GraphPane

GraphPane myPane = zgc.GraphPane;

// Seta os títulos

myPane.Title.Text = titulo;
myPane.XAxis.Title.Text = nomeX;
myPane.YAxis.Title.Text = nomeY;

// Seleciona uma cor aleatóriamente

Vermelho = random.Next(0, 255);
Azul = random.Next(0, 255);
Verde = random.Next(0, 255);

// Gera a curva

LineItem myCurve = myPane.AddCurve(label, list,
Color.FromArgb(Vermelho, Verde, Azul), simbolo);

// Tell ZedGraph to refigure the axes since the data have changed

zgc.AxisChange();
}

public void CreateBarGraph(ZedGraphControl zgc, string titulo, string nomeX, string nomeY,
string[] labels, double[] y)
{
// get a reference to the GraphPane

GraphPane myPane = zgc.GraphPane;

// Set the Titles

myPane.Title.Text = titulo;
myPane.XAxis.Title.Text = nomeX;
myPane.YAxis.Title.Text = nomeY;

// Make up some random data points

//string[] labels = { "Panther", "Lion", "Cheetah",
//          "Cougar", "Tiger", "Leopard" };
//double[] y = { 100, 115, 75, 22, 98, 40 };
//double[] y2 = { 90, 100, 95, 35, 80, 35 };
//double[] y3 = { 80, 110, 65, 15, 54, 67 };
//double[] y4 = { 120, 125, 100, 40, 105, 75 };

Vermelho = random.Next(0, 255);
Azul = random.Next(0, 255);
Verde = random.Next(0, 255);

// Generate a red bar with "Curve 1" in the legend

BarItem myBar = myPane.AddBar("Curve 1", null, y,
Color.FromArgb(Vermelho, Verde, Azul));
//myBar.Bar.Fill = new Fill(Color.FromArgb(Vermelho), Color.FromArgb(Azul), Color.FromArgb(Vermelho));

Color colorFill = new Color();
colorFill = Color.FromArgb(Vermelho, Verde, Azul);

myBar.Bar.Fill = new Fill(colorFill, Color.White, colorFill);

/*// Generate a blue bar with "Curve 2" in the legend

myBar = myPane.AddBar("Curve 2", null, y2, Color.Blue);
myBar.Bar.Fill = new Fill(Color.Blue, Color.White,
Color.Blue);

// Generate a green bar with "Curve 3" in the legend

myBar = myPane.AddBar("Curve 3", null, y3, Color.Green);
myBar.Bar.Fill = new Fill(Color.Green, Color.White,
Color.Green);*/

// Generate a black line with "Curve 4" in the legend

LineItem myCurve = myPane.AddCurve("Curve 4",
null, y, Color.Black, SymbolType.Circle);
myCurve.Line.Fill = new Fill(Color.White,
Color.LightSkyBlue, -45F);

// Fix up the curve attributes a little

myCurve.Symbol.Size = 8.0F;
myCurve.Symbol.Fill = new Fill(Color.White);
myCurve.Line.Width = 2.0F;

// Draw the X tics between the labels instead of

// at the labels

myPane.XAxis.MajorTic.IsBetweenLabels = true;

// Set the XAxis labels

myPane.XAxis.Scale.TextLabels = labels;

// Set the XAxis to Text type

myPane.XAxis.Type = AxisType.Text;

// Fill the Axis and Pane backgrounds

myPane.Chart.Fill = new Fill(Color.White,
Color.FromArgb(255, 255, 166), 90F);
myPane.Fill = new Fill(Color.FromArgb(250, 250, 255));

// Tell ZedGraph to refigure the axes since the data have changed

zgc.AxisChange();
}
}

Dual Chart Line

public partial class DualY : Form
{
CreateGraph createGraph = new CreateGraph();
int count = 0;

public DualY()
{
InitializeComponent();
}

private void DualY_Load(object sender, EventArgs e)
{
// Cria o gráfico

createGraph.Create(zgcDualY, "Teste", "Teste X", "Teste Y",
Valores(), "Teste", SymbolType.Circle);

createGraph.Create(zgcDualY, "Teste", "Teste X", "Teste Y",
Valores(), "Teste", SymbolType.Square);

// Seta o tamanho do controle para preencher o form, mas, deixando 20px de margen

createGraph.SetSize(zgcDualY, ClientRectangle.Width - 20, ClientRectangle.Height - 20);
}

private PointPairList Valores()
{
double x, y;
PointPairList list = new PointPairList();
if (count == 0)
{
for (int i = 0; i < 36; i++)
{
x = (double)i + 5;
y = 1.5 + Math.Sin((double)i * 0.2);
list.Add(x, y);
}
}
else
{
for (int i = 0; i < 36; i++)
{
x = (double)i + 5;
y = 3.0 * (1.5 + Math.Sin((double)i * 0.2));
list.Add(x, y);
}
}
count++;
return list;
}

private void DualY_Resize(object sender, EventArgs e)
{
createGraph.SetSize(zgcDualY, ClientRectangle.Width - 20, ClientRectangle.Height - 20);
}
 }

See

A flexible charting library for .NET

Also View

C# – Change ProgressBar Color

C# – Screenshot

C# – ReadOnly CheckBox

_____

Não se esqueça de deixar seu comentário, critica, elogio, dúvida e etc. Ele é muito importante para a melhoria do blog.
Do not forget to leave your comments, criticism, praise, questions, etc.. It is very important for improving the blog.

Advertisements

Comments on: "C# – ZedGraph Control" (9)

  1. Como fazer para quando ao chamar a aplicação o gráfico já estar funcionando?

    Tipo onLoad no Javascript.

  2. Eu tenho 18 variáveis em meu projeto.

    Mas, vamos pegar apenas uma de nome id0102mm_int que é int32.
    Como passar os valores que esta variável recebe para o ZedGraph como eixo Y e o horario do System.DateTime.Now como eixo X?

    Abraços,
    silvio pontes

  3. i love your blog, i have it in my rss reader and always like new things coming up from it.

  4. Ola Guilherme.
    Como podemos setar um tempo para a plotagem do gráfico de linhas.
    Tipo 10 minutos e ao termino pare.
    Com o Timer podemos fazer isso. Mas como fazer que estes 10 minutos estejam já colocados como eixo X desde o inicio da plotagem.

    silvio

  5. […] C# – ZedGraph Control […]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: