Criando gráficos com a classe JPGraph (parte 1)

A linguagem PHP nos oferece uma infinidade de recursos para criar e manipular imagens, porém criar uma imagem de estrutura mais complexa pode ser uma tarefa bastante dolorosa. Para nossa sorte existem classes PHP de terceiros que facilitam nossa vida e é sobre isso que vamos falar nesse artigo. Seremos apresentados à classe JPGraph da PHP, usada para criar quaisquer tipo de gráfico imaginável.

[ Hits: 147.003 ]

Por: Fábio Berbert de Paula em 14/11/2002 | Blog: https://fabio.automatizando.dev


Gráfico de barras agrupado



Agora me surgiu a necessidade de definir a quantidade de gols sofridos no mesmo gráfico, será que vai ficar legal ? Claro que vai, meu saldo de gols está positivo. Ou seja, o que seriam dois gráficos separados,o de gols marcados e gols sofridos passará a ser apenas um. Vou criar o gráfico normalmente e adicionar mais um gráfico de barras no mesmo.Vamos reutilizar o código do último exemplo e comentar as novas linhas adicionadas. Let's work!
<?
// exemplo4.php
include ("jpgraph.php");
include ("jpgraph_bar.php");

$numGols = array ("8", "7", "12", "10", "7", "9", "11");
// definir um array com o número de gols sofridos
$numGolsSofridos = array("3", "4", "13", "9", "1", "5");

$diasSemana = array("Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sáb");

$grafico = new graph(350,200,"png");
$grafico->img->SetMargin(40,40,40,40);
$grafico->SetScale("textlin");
$grafico->SetShadow();

$grafico->title->Set('Viva o Linux Futebol Clube');
$grafico->subtitle->Set('www.vivaolinux.com.br');
$grafico->ygrid->Show(true);
$grafico->xgrid->Show(true);

$gBarras = new BarPlot($numGols);
$gBarras->SetFillColor("orange");
$gBarras->SetShadow("darkblue");
// com a função SetLegend estamos automaticamente criando uma legenda
// para o gráfico
$gBarras->SetLegend("Gols marcados");

// criar mais um gráfico de barras para o número de gols sofridos
$gBarras2 = new BarPlot($numGolsSofridos);
$gBarras2->SetFillColor("red");
$gBarras2->SetShadow("darkblue");
$gBarras2->SetLegend("Gols sofridos");

$grupoBarras = new GroupBarPlot(array($gBarras,$gBarras2));
$grafico->Add($grupoBarras);

$grafico->yaxis->title->Set("Gols");
$grafico->xaxis->title->Set("Dia da semana");
$grafico->xaxis->SetTickLabels($diasSemana);


$grafico->Stroke();
?>


Figura 04 - gráfico de barras agrupado


Como vocês podem ver, criar belos gráficos em PHP é moleza, ponto para a comunidade de desenvolvedores que apoiam a iniciativa do software livre. No site oficial do jpgraph o autor cita que aceita donativos caso o software seja útil à sua empresa. Assim que eu angariar recursos em trabalhos baseados nessa classe não terei dúvidas ao depositar uma quantia simbólica como forma de agradecimento.

No próximo artigo veremos como criar gráficos de pizza, linhas e alguns recursos adicionais.

Atenciosamente,
Fábio Berbert de Paula
fabio@vivaolinux.com.br

Página anterior    

Páginas do artigo
   1. Introdução
   2. Obtendo e instalando a classe jpgraph
   3. Criando gráfico de barras
   4. Sofisticando o seu gráfico de barras
   5. Gráfico de barras agrupado
Outros artigos deste autor

Sorteio de camisetas promovido pela GeekWorld

Usando o "at" para agendamento de tarefas

Como criar um keylogger em Python

Expressões Regulares - Entenda o que são Lookahead e Lookbehind

Criando Aplicativos Mobile com React Native

Leitura recomendada

Symfony Framework - Introdução

Utilizando o Smarty template no PHP

Como atribuir notícias RSS ao seu site usando ATOM e PHP

Utilizando PHP e Apache para desligar um Ubuntu

Guia completo do Ocomon no Linux - Módulo cliente, abertura de ocorrência (exclusivo VOL)

  
Comentários
[1] Comentário enviado por segan em 24/10/2003 - 14:15h

Hello!!
Sorry for speak in English but the different meanings between words in Spahis and Portugues its a very long....

My comment is:
I download Jpgraph-1.10.1 and first i try to install in the Path but not work....
Later I try to put the directory /src in my scripts but ever appears that error:

Fatal error: No parent class available in this context in /var/www/html/graficos/src/jpgraph.php on line 1936

Im so very satisfacted an any help!!!


[2] Comentário enviado por atilazip em 05/04/2004 - 15:24h

Parabéns!

Li seu artigo sobre jpgraph e descobri na procura sobre o assunto que cerca de 80% dos site nacionais que tratam do assunto direcionavam seus link para seu artigo. Isso mostra um belo reconhecimento do seu trabalho então da minha parte

Parabéns outra vez.

[3] Comentário enviado por gatecrasher em 28/05/2004 - 12:55h

Fabio,
parabens pelo artigo.

Tentei algo assim:

$consulta_acesso_segunda=@mysql_query("SELECT * FROM tb_acesso WHERE tb_acesso.dia_da_semana LIKE 'seg%' ;");

$numero_acesso_segunda=@mysql_num_rows($consulta_acesso_segunda);


// na construcao eixo x por exemplo

$dados_barra = array($numero_acesso_segunda,etc,etc,etc,etc);

A classe JGraph emite erro e so aceita constantes no array.

Pergunta: eh possivel construir graficos a partir do numero de registros de um banco de dados?

[4] Comentário enviado por drikafernandes em 31/05/2004 - 11:19h

Olá, gostaria de saber se toda essa informação também funciona em ambiente Windows...
Eu utilizo WinME, PWS, PHP4.3.6, GD2...

Obrigada
Drika Fernandes
webmaster@tecsite.com.br

[5] Comentário enviado por slslig em 15/06/2004 - 12:02h

Olá , não consegui fazer funcionar já no primeiro exemplo, sou iniciante em php e uso o Easyphp 1.7 em ambiente windows.
Pode me dar uma dica ???
Fatal error: Call to undefined function: imagecreate() in c:\program files\easyphp1-7\www\graficos\graf1.php on line 10

sergio
slslig@ig.com.br

[6] Comentário enviado por lopan em 26/07/2004 - 13:54h

Olá!

O script que vc colcou na introdução, foi gerado perfeitamente, mas o outro, deu o seguinte erro!

JpGraph Error: Can't create truecolor image. Check that you really have GD2 library installed.

Sendo que o GD2 está instalado, já tentei de todas as formas corrigir, mas não consigo, estou tentando instalar o JpGraph para utilização com o phpPrintAnalyzer (Analisador de Logs do CUPS), mas a documentação é pouca, o phpPrintAnalyzer mesmo não há complicação, já o JpGraph, poxa, não tem ninguém na net tradando sobre este erro.

Eu estou com:
Red Hat 8
PHP 4.2.2
GD2 2.0.28

Se alguém já passou por este problema, por favor... Compartilhe a solução!

[7] Comentário enviado por alexjfalcao em 05/10/2004 - 16:27h

no arquivo jpg-config.inc edite as linhas para:

DEFINE("USE_TRUECOLOR",false);
DEFINE("USE_LIBRARY_GD2",false);

Funciona, mas várias funções não rolam, voce precisa adaptar seus gráficos.

abraço

[8] Comentário enviado por luis_ag em 22/11/2004 - 17:32h

Caro Fábio

Em primeiro lugar, parabéns pelo artigo.

Assim como nosso amigo Sérgio, eu também estou iniciando em PHP e também não consegui passar do seu exemplo mais simples.

utilizei seu código:
<?
header ("Content-type: image/png");
$imagem = imagecreate (150, 100);
$corFundo = imagecolorallocate ($imagem, 255, 255, 200);
$corLinha = imagecolorallocate ($imagem, 0, 0, 0);
imageline ($imagem, 10, 90, 140, 10, $corLinha);
imagepng ($imagem);
?>

e obtive o seguinte erro:
Fatal error: Call to undefined function: imagecreate() in C:\Inetpub\wwwroot\exemplo0_Temp.php on line 3

Sou usuário do Windows, IIS5, PHP4 e possuo as bibliotecas do jpgraph.

O que eu estou fazendo de errado? é alguma configuração?

Desde já agradeço sua ajuda,

Obrigado

Luis
luis_ag10@hotmail.com

[9] Comentário enviado por leonardocdc em 06/12/2004 - 15:42h

Fabio,
muito legal esse artigo.

Mas no caso deu usar o gráfico de barras, no eixo x eu quero colocar as porcentagens de 0% à 100%. Tem algum lugar lá que define isso?
Tipo o tamanho do intervalo, Pq lá está de 2 em 2.

Obrigado

[10] Comentário enviado por ricky578 em 06/03/2005 - 01:39h

Olá Fábio,

Utilizei seu script em um linux Redhat9 e também em um Suse já com a classe JPGRAPH instalada e em ambos só consegui obter uma página em branco como resultado. O que pode estar ocorrendo? Poderia me ajudar?

Ricardo
rruggiero@globo.com

[11] Comentário enviado por darkshakal em 14/06/2006 - 15:33h

muito bom

[12] Comentário enviado por filtis em 31/08/2006 - 15:35h

Ola, fiz a instalação td certo e talz... fiz um exemplo, mais na hora q eu fui testar apareceu esta mensagem:
"Internal error: Chosen locale file for error messages does not exist."
Alguem poderia me ajudar???

[13] Comentário enviado por agostinho_jr em 19/09/2006 - 23:51h

Amigo, como faço pra setar um valor fixo para o eixo y?
Abraço.
Que Deus abençoe,
Agostinho Jr.

[14] Comentário enviado por pedrodee em 13/03/2007 - 14:50h

Ola!
Será que alguem resolveu o problema dos labels dos gráficos não mostrarem os caracteres correctamente?
Por exemplo Português, o 'ê' aparece estranho.
Alguém pode ajudar?

Abraço

[15] Comentário enviado por gzanatta00 em 31/05/2007 - 21:33h

na minha maquina ta dando o seguinte erro

JpGraph Error Your PHP installation does not seem to have the required GD 2.x library enabled. Please see the PHP documentation, "Image" section. Make sure that "php_gd2.dll" statement is uncomment in the [modules] section in the php.ini file.


acho q ta faltando o GD2, como q eu instalo

[16] Comentário enviado por enrikest em 03/09/2007 - 13:03h

Ola, testei o exemplo do grafico de barras agrupados e o mesmo deu o erro JPGRAPH ERROR:

One of Objects submited to GroupBar is not a BarPlot. Make sure that you creat the Group Bar plot from an array of Barplot or AccBarplot objects.

Alguem saberia me dizer o pq disso??? o exemplo esta IDENTICO o meu nao mudei nada no codigo.

Obrigado.

[17] Comentário enviado por marciarf em 05/09/2007 - 10:22h

d

[18] Comentário enviado por marciarf em 05/09/2007 - 10:24h

Olá
Estou tentando usar o pacote de instalação wamp5 com a classe jpgraph, mas sempre da erro relativo a instalação da biblioteca gd2. Ela está no php.ini, portanto acho que deve ter outro lugar para eu saber se realmente está instalada e habilitada. Você poderia me ajudar dizendo onde devo observar pra assegurar que realmente está isntalada?
Obrigada

[19] Comentário enviado por alexvc.com em 18/10/2007 - 22:41h

Estou com o mesmo problema do colega de cima, naum consigo instlar no wamp5, já fui lá no php.ini e descomentei linha referente ao gd2, porem o erro ainda persiste....

[20] Comentário enviado por comfaa em 28/10/2008 - 12:59h

muito legal !!!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts