Criação de gráficos em PHP com JpGraph

Apresentação da biblioteca JpGraph, que serve para gerar imagens com todo tipo de gráficos de dados em PHP.

Por Pablo González


Publicado em: 13/2/08
Valorize este artigo:
Uma tarefa que mais cedo ou mais tarde vamos ter que enfrentar ao longo de nossa andança como profissionais do web, é a criação de gráficos a partir de dados. Quando falo de gráficos me refiro a todo tipo de imagens que sirvam para representar dados, como gráficos de barras, de linhas, de progresso, de pizza, etc.

Obviamente, a criação de gráficas não é um tema trivial, e sim que requer uma grande dose de dedicação e esforço. Os gráficos, que geralmente se mostram em imagens, podem ser de muitos tipos diferentes e só o fato de tratar de desenhar em uma imagem linhas, barras ou inclusive pizzas em três dimensões, pode ser bastante complicado.

Entretanto, existem sistemas como JpGraph, que podem nos facilitar a tarefa de uma maneira muito interessante, pois oferecem uma série de mecanismos para a geração das imagens com os gráficos, de modo que nós só temos que nos centrar em carregar os dados a representar e escolher o tipo de gráfico que desejamos visualizar.

O que é JpGraph

É uma biblioteca que inclui uma série de classes -código orientado a objetos- que servem para criar imagens com todo tipo de gráficos, dinamicamente através páginas PHP.

O sistema está muito depurado e suporta uma infinidade de funcionalidades, por isso certamente encontraremos solução a praticamente qualquer necessidade no âmbito de criação de gráficos. Além disse, a maioria das configurações dos gráficos vêem com opções padrão, portanto resulta bastante simples obter resultados rapidamente.

Algumas das características do sistema são:

  • Reduzido peso em bytes das imagens resultado. Habitualmente poucas KB.
  • Suporte às bibliotecas GD1 ou GD2.
  • Uso da Interpolação matemática para obter curvas a partir de poucos valores.
  • Diversos tipos de gráficos 2D ou 3D, como de pontos, linhas, pizzas, barras, caixas...
  • Escalas flexíveis tanto no eixo X como no Y, que se ajustam ao jogo de dados que tiver que representar.
  • Suporte para gerar gráficos com vários jogos de valores de uma só vez.
  • Configurável com distintos tipos de cores, legendas, tipografias, imagens de fundo, etc.
Como usar JpGraph

Este jogo de bibliotecas dispõe de uma extensa documentação e tutoriais para aprender a manejá-lo. Na documentação se encontram ainda numerosos exemplos de seu uso, desde os quais podemos partir para solucionar nossas necessidades.

O modo de trabalho para usar esta biblioteca é muito simples, trata-se de criar uma imagem com a etiqueta <img> de HTML, em cujo atributo src colocaremos a rota para o script PHP que se encarregará de gerar o gráfico.

No arquivo PHP que gerará o gráfico teremos que incluir as bibliotecas apropriadas para o tipo de gráfico que desejarmos realizar, também haverá que instanciar o objeto JpGraph correspondente, carregar os dados a visualizar e chamar aos métodos adequados para mostrar a imagem. Um mecanismo bastante simples que veremos em um par de exemplos a seguir.

Exemplo 1: um gráfico de linha


Neste exemplo vamos criar um gráfico linear no qual mostraremos as horas de trabalho de uma pessoa ao longo de 10 dias.

A geração do gráfico deste exemplo a fazemos em um arquivo que chamamos grafico_linha.php, portanto, a chamada a este arquivo dentro de uma imagem será a seguinte:

<img src="grafico_linha.php" alt="" border="0"> O código PHP do arquivo grafico_linha.php é o seguinte:

<?php
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_line.php");

// Some data
$ydata = array(11.5,3,8,12,5,1,9,13,5,7);

// Create the graph. These two calls are always required
$graph = new Graph(450,250,"auto");
$graph->SetScale("textlin");
$graph->img->SetAntiAliasing();
$graph->xgrid->Show();

// Create the linear plot
$lineplot=new LinePlot($ydata);
$lineplot->SetColor("black");
$lineplot->SetWeight(2);
$lineplot->SetLegend("Horas");

// Setup margin and titles
$graph->img->SetMargin(40,20,20,40);
$graph->title->Set("Exemplo: Horas de Trabalho");
$graph->xaxis->title->Set("Dias");
$graph->yaxis->title->Set("Horas de Trabalho");
$graph->ygrid->SetFill(true,'#EFEFEF@0.5','#F9BB64@0.5');
//$graph->SetShadow();

// Add the plot to the graph
$graph->Add($lineplot);

// Display the graph
$graph->Stroke();
?>


Exemplo 2: um gráfico de pizza em 3D


Por outro lado, vamos realizar um exemplo de um gráfico de pizza, no qual aparecem as horas realizadas por cada um dos empregados e a porcentagem com respeito aos totais. Neste caso, a pizza vai se apresentar em um desenho em 3 dimensões.

O arquivo onde se gera o gráfico se chama grafico_pizza.php. Ele será chamado dentro de uma imagem com este código HTML.

<img src="grafico_pizza.php" alt="" border="0">

O código PHP do arquivo grafico_pizza.php será o seguinte:

<?php
include ("jpgraph/jpgraph.php");
include ("jpgraph/jpgraph_pie.php");
include ("jpgraph/jpgraph_pie3d.php");

$data = array(40,60,21,33);

$graph = new PieGraph(450,200,"auto");
$graph->img->SetAntiAliasing();
$graph->SetMarginColor('gray');
//$graph->SetShadow();

// Setup margin and titles
$graph->title->Set("Exemplo: Horas de Trabalho");

$p1 = new PiePlot3D($data);
$p1->SetSize(0.35);
$p1->SetCenter(0.5);

// Setup slice labels and move them into the plot
$p1->value->SetFont(FF_FONT1,FS_BOLD);
$p1->value->SetColor("black");
$p1->SetLabelPos(0.2);

$nomes=array("pepe","luis","miguel","alberto");
$p1->SetLegends($nomes);

// Explode all slices
$p1->ExplodeAll();

$graph->Add($p1);
$graph->Stroke();
?>


Conclusão

JpGraph é uma ferramenta muito potente para a geração de gráficos em nossa página web e graças ao seu uso nos damos conta de suas muitas bondades:

  • É uma biblioteca gratuita (para uso não comercial), fácil de instalar e de fácil manejo.
  • Inclui uma completa documentação com uma infinidade de exemplos dos distintos gráficos que se podem gerar.
  • Além de gerar muitos tipos de gráficos, permite 'customizar' quase tudo o que se vê, resultando isto muito útil para integrar perfeitamente o gráfico no design de nossa web.
  • A forma de integrar o gráfico é muito simples: unicamente é necessário incluir uma imagem (etiqueta <IMG>) cujo src seja o script PHP que gerará nosso gráfico (ver exemplos).

Encontramos poucos defeitos na biblioteca, somente se poderia mais o seguinte:

  • As mensagens de erro são meio e escassas, e a maioria das vezes quando algo falha, não obtemos nenhuma explicação.
  • Faz falta algo de definição nos gráficos, sobretudo nos gráficos de setores.





Comentários do artigo
Foi enviado 1 comentário ao artigo
1 comentário não revisado
0 comentários revisados

Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato