A linguagem PHP nos oferece uma infinidade de recursos para criar e manipular imagens. Este artigo é o segundo da série que nos mostra como criar sofisticadas estruturas de gráficos com a classe jpgraph.
No primeiro artigo, meus gráficos mostraram quantos gols meu
time de futebol de mesa marcou no decorrer de uma semana. Nesta
ocasião quero usar um gráfico de pizza para destacar meus
principais artilheiros.
No código abaixo vamos criar um gráfico de pizza 3D com legendas,
valores das fatias, título e um pedaço de pizza destacado.
O código está comentado da melhor forma possível, em caso
de dúvidas, enviem comentários.
<?
// incluir as classes jpgraph usadas para criação do
// gráfico
include ("jpgraph.php");
include ("jpgraph_pie.php");
include ("jpgraph_pie3d.php");
// definir um array com os valores de cada fatia (jogador)
$numero_gols = array(8, 26, 5, 13);
// definir um array que será usado como legenda para cada
// valor correspondente na lista acima (legenda = nomes)
$nome_jogadores = array ("Fumaçinha", "Totti", "Uruguai", "Gaiteiro");
// criar novo gráfico de 350x200 pixels com tipo de
// imagem automático
$grafico = new PieGraph(350,200,"auto");
// adicionar sombra
$grafico->SetShadow();
// título do gráfico
$grafico->title->Set("Artilheiros do Viva o Linux");
$grafico->title->SetFont(FF_FONT1,FS_BOLD);
// definir valores ao gráfico
$p1 = new PiePlot3D($numero_gols);
// destacar o valor correspondente ao elemento (1), sendo
// que o primeiro elemento do array corresponde a (0),
// então esse é o cara cujo valor equivale a 26
$p1->ExplodeSlice(1);
// centralizar a 45% da largura
$p1->SetCenter(0.45);
[1] Comentário enviado por xunda em 30/05/2003 - 23:18h
Eu tenho uma dúvida. Fiz uma busca normal e quero dessa busca armazena os valores e desses valores derivar para o gráfico, mas não estou conseguindo, poderia me ajudar?
Eu peguei o teu exemplo para assim quem sabe esclarecer melhor a minha dúvida. Obrigada Ana.
$grafico = new graph(450,200,"png");
$grafico->img->SetMargin(40,40,40,40);
$grafico->SetScale("textlin");
// definir a imagem de fundo a ser usada pelo grafico
//$grafico->SetBackgroundImage('faixasuperior.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);
[3] Comentário enviado por buzz_sbo em 04/05/2005 - 10:09h
Bom dia, gostaria de saber como fazer uma interação do JPGRAPH com meu banco de dados em MYSQL, por exemplo da coluna vertical ficariam os valores e na horizontal a data, mas eles só vão poder atribuir valores nos eixos apos uma consulta. A consulta já está pronta.
[7] Comentário enviado por farleypiva em 05/05/2009 - 15:41h
Oi Fabio! Seu artigo está muito bom! Parabéns!
Só tive uma dificuldade... o eixo y do meu grafico possui valores grandes, e eles estão ficando em cima da descrição do eixo. Mesmo aumentando a margem, o grafico e a descrição do eixo y são deslocados. Existe alguma forma de movimentar somente a descrição do eixo y ou somente o grafico?