+5

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

criado por Fábio Berbert de Paula em 24/01/2003 8:23pm
Neste último exemplo vou mostrar como adicionar uma imagem de fundo ao gráfico. O gráfico abaixo foi retirado do primeiro artigo da série e simula um gráfico de barras agrupado.

<?php
include ("jpgraph.php");
include ("jpgraph_bar.php");

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

$diasSemana = array("Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab");

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

// definir a imagem de fundo a ser usada pelo grafico
$grafico->SetBackgroundImage( '/home/fpaula/vol3/imagens/fundo_penguim.jpg', BGIMG_FILLFRAME);

$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 funcao SetLegend estamos automaticamente criando uma legenda
// para o grafico
$gBarras->SetLegend("Gols marcados");

// criar mais um grafico de barras para o numero de gols sofridos
$gBarras2 = new BarPlot($numGolsSofridos);
$gBarras2->SetFillColor("red");
$gBarras2->SetShadow("darkblue");
$gBarras2->SetLegend("Gols sofridos");

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

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

$grafico->Stroke();
?>


Figura 03 - Gráfico de barras agrupado


Bom pessoal, espero começar a ver páginas PHP com gráficos bonitinhos pela web, o tempo está me deixando meio exigente :)

Atenciosamente,
Fábio Berbert de Paula
http://www.vivaolinux.com.br

Comentários:

Mostrando 1 - 10 de 10 comentários
Amigo, eu tenho como setar um valoz fixo para o eixo x? O valor que ele atribui para o eixo x é o maior valor que uma das barras vai ter, eu não tenho como deixar esse falor fixo? Eu não quero que necessariamente uma das barras "toque" no topo do gráfico. Tem como? Espero resposta urgente...!!!
Grato.
Abraço.
Que Deus abençoe,
Agostinho Jr.
19/09/2006 5:07pm (~17 anos atrás)

Amigo, quando eu coloco uma imagem de fundo ele dá essa mensagem:
"Can't read background image: "/imagens/bgGrafico.jpg"
E o caminho esta certo. O que eu faço?
Abraço.
Que Deus abençoe,
Agostinho Jr.
19/09/2006 7:45am (~17 anos atrás)

Amigo, esta dando esse erro. O que eu faço?
Internal error: Chosen locale file for error messages does not exist.
Abraço
Que Deus abençoe,
Agostinho Jr
15/09/2006 1:51pm (~17 anos atrás)

José Walter disse:
Parabéns pelo artigo!!! Nas buscas do Google é o link q é + apontado e, está em diversos sites.
Utilizo o Jpgraph e estou c 2 problemas, e espero q me ajude...
1º) Como faço para sobrepor duas barras e a q está acima ir progredindo a medida q as alimentamos c dados e, todas as duas mostrando o valor de cada... ex.: preciso atingir uma meta de 13 unidades de alguma coisa (esta é a primeira barra de cor azul)... já consegui realizar 2 unidades (esta é a segunda barra (cor amarela) sobreposta a azul)...
2º) Como posicionar corretamente a legenda? Tenho dificuldades entre Legend Pos e AbsPos.
Grato :O)
05/02/2005 11:07pm (~19 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? Como salva-la em memória?
Alguém tem idéia?

Obrigado
04/01/2005 10:50am (~19 anos atrás)

estou com problemas para implementar o codigo...
dentro de um arquivo php puro ele roda tranquilo
mas dentro de uma td ele da pau
alguem sabe se isso é uma restrição ?
21/07/2004 4:14pm (~20 anos atrás)

Em um projeto que venho desenvolvendo, obtenho os dados a partir do banco de dados (mysql), crio as arrays necessárias e por fim, monto os gráficos com a classe jpgraph.
//CODIGO
$sql = 'SELECT DATE_FORMAT(data_aval, "%m/%y") as data, com, cpt, cbr, cat, cct, cab, cqd, ccx, cpn FROM antropometria WHERE aval_id = '.(int)$_GET['id'].' ORDER BY data_aval DESC LIMIT 0,4';
$pesq = @mysql_query($sql);
$num_linha = mysql_num_rows($pesq);
$i = 0;
while($linha = mysql_fetch_assoc($pesq)){
$medida = array(
$linha['dcse'],
$linha['dctr'],
$linha['dcpt'],
$linha['dcam'],
$linha['dcsi'],
$linha['dcab'],
$linha['dccx'],
$linha['dcpm']
);
$barra[$i] = new BarPlot($medida);
$barra[$i]->SetWidth(0.6);
$barra[$i]->SetLegend($linha['data']);
$barra[$i]->SetFillColor($cor[$i]);
$i++;
}
$grafico_grupo = new GroupBarPlot(array($barra[3], $barra[2], $barra[1], $barra[0]));
$grafico->Add($grafico_grupo);
$grafico->Stroke();
//FIM DO CODIGO
08/03/2003 10:48pm (~21 anos atrás)

Sim, a biblioteca GD é pré-requisito para o uso da classe jpgraph.
28/01/2003 12:45pm (~21 anos atrás)

Sempre desejei exibir enquetes no formato Pizza! Mas desisti pelo tempo que isso ia consumir através do GD puro.

A classe realmente é espetacular!!!

Valeu!!!!!
28/01/2003 6:33am (~21 anos atrás)

Olá gangster,

A classe jpgraph está disponível sobre a licença QPL, que é uma variação da GPL, mas continua livre.

Veja mais em:

http://www.trolltech.com/developer/licensing/qpl.html
28/01/2003 6:24am (~21 anos atrás)

Novo Comentário:

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