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

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.

[ Hits: 117.053 ]

Por: Fábio Berbert de Paula em 10/01/2003 | Blog: https://fabio.automatizando.dev


Gráfico de Linhas



Como pudemos notar no gráfico anterior, meu artilheiro Fumacinha, vulgo Orlando Fumaça marcou 26 gols durante a semana, então nos surgiu a curiosidade de saber como foi seu desempenho em cada dia, para acompanharmos a evolução do artilheiro.

Para tal situação, optei pelo gráfico de linhas.
<?
include ("jpgraph.php");
include ("jpgraph_line.php");

// lista do número de gols marcados por fumacinha na semana
$gols_fumacinha = array (4, 5, 7, 0, 2, 4, 3);

// lista dos nomes dos dias da semana para nomear o gráfico
$dias_semana = array ("Dom", "Seg", "Ter", "Qua", "Qui", "Sex", "Sab");

$grafico = new Graph(300,200,"auto");
$grafico->SetScale("textlin");

// Definir a quantidade de pixels em cada margem do gráfico,
// esquerda, superior, direita, inferior
// esquerda e inferior são maiores para comportar o título
// dos gráficos
$grafico->img->SetMargin(40,20,20,40);
$grafico->SetShadow();

// definir o gráfico de linhas
$lineplot = new LinePlot($gols_fumacinha);
$lineplot->mark->SetType(MARK_UTRIANGLE);
$lineplot->value->show();

$grafico->Add($lineplot);

$grafico->title->Set("Score artilheiro Fumacinha");
$grafico->xaxis->title->Set("Dias");
$grafico->yaxis->title->Set("Gols");

$grafico->xaxis->SetTickLabels($dias_semana);

$lineplot->SetColor("blue");
$lineplot->SetWeight(2);

$grafico->Stroke();
?>

Figura 02 - Gráfico de pizza

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Gráfico de Pizza
   3. Gráfico de Linhas
   4. Gráfico de Barras com Imagem de Fundo
Outros artigos deste autor

Implementando um tradutor de línguas no seu web site

Utilizando o Buffer de Gravação no Editor Vim

Personalizando seu lilo no Debian

Como isolar seus projetos Python com virtualenv (ambiente virtual)

Como jogar poker no Full Tilt Poker pelo Linux

Leitura recomendada

Formantando nomes com caracteres especiais em PHP

Acessando o Twitter de 5 formas: protocolo HTTP, cURL, classe HttpRequest (PHP), função http_post_fields() do PHP ou PHP+libcurl

PHP >= 5.1 x horário de verão brasileiro

Utilizando PHP e Apache para desligar um Ubuntu

Tags automáticas em URLs com a classe urlmatch da PHP

  
Comentários
[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.


$busca_idpes_adv = "select idpes_adv from advogado_dj";
$busca = pg_exec($conn, $busca_idpes_adv);
for($i=0;$i<pg_numrows($busca);$i++)
{
$arr = pg_fetch_array($busca, $i, PGSQL_NUM);
$arr[0];
}
for($j = 0; $j < pg_numrows($busca); $j++){
$arr_outro = pg_fetch_row($busca, $j);
$idpes_adv = $arr_outro[0];
$busca_nome = "select nome from pessoa where idpes = ".$idpes_adv." ";
$busca1 = pg_exec($conn, $busca_nome);
$arr_nomeadv = pg_fetch_row($busca1,0);
echo $arr_nomeadv[0];
$diasSemana = $arr_nomeadv[0];
$busca_numproc = "select count(idproc) from processo_dj where idpes_adv = ".$idpes_adv." ";
$busca_num = pg_exec($conn, $busca_numproc);
$arr_numproc = pg_fetch_row($busca_num, 0);
echo $arr_numproc[0]."<br>";
$numGols = $arr_numproc[0];
}


include ("../../jpgraph/src/jpgraph.php");
include ("../../jpgraph/src/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", "10", "9");

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

$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);

$grafico->Stroke();
?>

[2] Comentário enviado por derli.r em 16/06/2003 - 10:22h

Eu quero adicionar junto a porcentagem do grafico pizza o valor de cada Exemplo: 45% - 8 gols....
obrigado.Derli

[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.

[4] Comentário enviado por MauF em 05/01/2006 - 10:53h

Ola, gostaria de saber como jogar para o gráfico o resultado de uma consulta feita no banco de dados Mysql?

Muito obrigado

[5] Comentário enviado por zebacking em 17/09/2006 - 00:28h

ola, como ploto funçoes matematicas com esses graficos, tipo cos(x) e sin(x), dentre outras

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

muito legal !!!

[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?

Obrigado.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts