+1

Criando gráficos com a classe JPGraph

criado por Fábio Berbert de Paula em 09/12/2002 9:09pm
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!

<?php
// 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&#65533;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.

Comentários:

Mostrando 1 - 10 de 19 comentários
Olá pessoal,
Gostaria de saber como faço para inserir uma imagem gerada com a JpGraph num pdf gerado com a pdflib.
<?php

$graph = new Graph(...);

// Code to create the graph
// .........................
// .........................

// Put the image in a PDF page
$im = $graph->Stroke(_IMG_HANDLER);

$pdf = pdf_new();
pdf_open_file($pdf, "");

// Convert the GD image to somehing the
// PDFlibrary knows how to handle
$pimg = pdf_open_memory_image($pdf, $im);

pdf_begin_page($pdf, 595, 842);
pdf_add_outline($pdf, "Page 1");
pdf_place_image($pdf, $pimg, 0, 500, 1);
pdf_close_image($pdf, $pimg);
pdf_end_page($pdf);
pdf_close($pdf);

$buf = pdf_get_buffer($pdf);
$len = strlen($buf);

header("Content-type: application/pdf");
header("Content-Length: $len");
header("Content-Disposition: inline; filename=foo.pdf");

echo $buf;

pdf_delete($pdf);

?>

Está acontecendo o seguinte erro:
Fatal error: Call to undefined function: pdf_open_memory_image()

Estou usando php 4.3.10
JpGraph v1.20.2
PDFlib GmbH 6.0.p1

O está acontecendo?
09/05/2006 11:56am (~15 anos atrás)

O exemplo contido na página 3 deste artigo está com um pequeno erro:

Ele esqueceu de estanciar a classe de gráfico de barras antes de usá-la, ou seja antes de fazer:
$gBarras->SetFillColor("orange");
deve-se incluir a seguinte linha:
$gBarras= new BarPlot($numGols);
Esta linha está comentada e se alguém tentar copiar o exemplo não esqueça de descomenta-la

Estou postando isso pois alguns iniciantes como eu podem tentar usá-la e se bater um pouco até conseguir usar este exemplo....

;)
28/10/2005 6:25am (~16 anos atrás)

Nil Martins disse:
Há muitas dúvidas escritas aqui.
O que houve com a comunidade PHP ??
Não tem ninguém pra responder??!!
20/07/2005 9:10am (~16 anos atrás)

Preciso montar gráficos com o eixo "Y" em horas. Alguém sabe setar o jpgraph para esta função????
07/07/2005 9:11pm (~16 anos atrás)

Olá.
Como faço para setar o charcode (iso/utf8). Os labels dos gráficos com acentos não funcionam.
Existe uma configuração ?

obrigado !
04/05/2005 2:17pm (~16 anos atrás)

Galera,

atravéz desse tutorial consegui gerar os gráficos que necessito. Valeu demais.

Agora uma dúvida. Preciso pegar essas imagens que são geradas e enviar por e-mail. Como pego essa imagem?
Alguém tem idéia?

Obrigado
04/01/2005 10:48am (~17 anos atrás)

Alguem saberia me informar qual é o erro. Estou começando a trabalhar com graficos agora, fiz tudo q esta no tutorial mas esta dando o seguinte erro:


JpGraph Error: No path specified for CACHE_DIR. Please specify a path for that DEFINE in jpgraph.php

obrigado,
CArlos
18/09/2003 8:23pm (~18 anos atrás)

Diga qual sua duvida ??? talvez possa ajuda-lo
se puder anexe seu script , posso ver onde esta o erro !

Ronaldo Menezes
15/09/2003 4:40am (~18 anos atrás)

Bem primeiramente parabens para o autor..
Agora vamos a duvida, gostaria de fazer uma consulta em meu banco de dados e gerar o grafico com o resultado dessa consulta, porem ate a parte da consulta sem problemas so que quando conto as linhas da erro na imagem, alguem teria alguma dica de como posso integrar MySql com esta biblioteca ?

bracus

Mave ... ::20212359
02/09/2003 7:27am (~18 anos atrás)

Gostaria de saber como faço para salvar o grafico como figura na memoria para a geração de relatorio em PDF, porque a função image do fpdf não executa arquivo.php, mas so faz referencia ao arquivo;

Estou tentando as funções fopen, fwrite e fclose, não sei o que est errado

$f = fopen("imagem.png","w");
fwrite($f,$graph->Stroke());
fclose($f);

caso tenha outra ideia para disponibilizar a figura na memoria que não seja a execução do arquivo.php
02/06/2003 10:34am (~18 anos atrás)

Novo Comentário:

(Você pode usar tags como <b>, <i> ou <code>. URLs serão convertidas para links automaticamente.)