Boa tarde pessoal. Estou tentando gerar um gráfico de pizza com um código mas a imagem não me é retornada. Já verifiquei duas vezes o código .inc e o .php e não achei nenhum erro de sintaxe. Eu tenho a biblioteca gd ativada e consigo gerar imagens de outros tipos (como a de uma estrela, por exemplo). Seguem abaixo os códigos e mais uma vez, obrigado.
O arquivo .inc
<?php
// configurações do gráfico
$largura = 600;
$altura = 400;
// configurações do círculo
$centrox = 200;
$centroy = 200;
$diametro = 280;
$angulo = 0;
// configurações da legenda
$exibir_legenda = "sim";
$fonte = 3;
$largura_fonte = 8;
$altura_fonte = 10;
$espaco_entre_linhas = 10;
$margem_vertical = 5;
// canto superior direito da legenda
$lx = 540;
$ly = 30;
?>
Pergunta
Edu Valente
Boa tarde pessoal. Estou tentando gerar um gráfico de pizza com um código mas a imagem não me é retornada. Já verifiquei duas vezes o código .inc e o .php e não achei nenhum erro de sintaxe. Eu tenho a biblioteca gd ativada e consigo gerar imagens de outros tipos (como a de uma estrela, por exemplo). Seguem abaixo os códigos e mais uma vez, obrigado.
O arquivo .inc
O arquivo .php de geração do gráfico<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Gráfico de Pizza</title> </head> <body> <?php header("Content-type: image/png"); // inclui o arquivo com as configurações include 'config_grafico.inc'; // cria a imagem e define as cores $imagem = imagecreate($largura, $altura); $fundo = imagecolorallocate($imagem, 236, 226, 226); $preto = imagecolorallocate($imagem, 0, 0, 0); $azul = imagecolorallocate($imagem, 0, 0, 255); $verde = imagecolorallocate($imagem, 0, 255, 0); $vermelho = imagecolorallocate($imagem, 255, 0, 0); $amarelo = imagecolorallocate($imagem, 255, 255, 0); // definição dos dados $dados = array("Leoes", "Antilopes", "Elefantes", "Girafas"); $valores = array(180, 540, 330, 110); $cores = array($azul, $verde, $vermelho, $amarelo); // cálculo do total $total = 0; $num_linhas = sizeof($dados); for($i = 0; $i < $num_linhas; $i++) $total += $valores[$i]; // desenha o gráfico imageellipse($imagem, $centrox, $centroy, $diametro, $diametro, $preto); imagestring($imagem, 3, 3, 3, "Total: $total animais", $preto); $raio = $diametro / 2; for($i = 0; $i < $num_linhas; $i++) { $percentual = ($valores[$i]/$total) * 100; $percentual = number_format($percentual, 2); $percentual .= "%"; $val = 360 * ($valores[$i]/$total); $angulo += $val; $angulo_meio = $angulo - ($val / 2); $x_final = $centrox + $raio * cos(deg2rad($angulo)); $y_final = $centroy + (- $raio * sin(deg2rad($angulo))); $x_meio = $centrox + ($raio / 2 * cos(deg2rad($angulo_meio))); $y_meio = $centroy + (- $raio / 2 * sin(deg2rad($angulo_meio))); $x_texto = $centrox + ($raio * cos(deg2rad($angulo_meio))) * 1.2; $y_texto = $centroy + (- $raio * sin(deg2rad($angulo_meio))) * 1.2; imageline($imagem, $centrox, $centroy, $x_final, $y_final, $preto); imagefilltoborder($imagem, $x_meio, $y_meio, $preto, $cores[$i]); imagestring($imagem, 2, $x_texto, $y_texto, $percentual, $preto); } // ------ CRIAÇÃO DA LEGENDA ------ if($exibir_legenda == "sim") { // acha a maior string $maior_tamanho = 0; for($i = 0; $i < $num_linhas; $i++) if(strlen($dados[$i]) > $maior_tamanho) $maior_tamanho = strlen($dados[$i]); // calcula os pontos de início e fim do quadrado $x_inicio_legenda = $lx - $largura_fonte * ($maior_tamanho + 4); $y_inicio_legenda = $ly; $x_fim_legenda = $lx; $y_fim_legenda = $ly + $num_linhas * ($altura_fonte + $espaco_entre_linhas) + 2 * $margem_vertical; imagerectangle($imagem, $x_inicio_legenda, $y_inicio_legenda, $x_fim_legenda, $y_fim_legenda, $preto); // começa a desenhar os dados for($i = 0; $i < $num_linhas; $i++) { $x_pos = $x_inicio_legenda + $largura_fonte * 3; $y_pos = $y_inicio_legenda + $i * ($altura_fonte + $espaco_entre_linhas) + $margem_vertical; imagestring($imagem, $fonte, $x_pos, $y_pos, $dados[$i], $preto); imagefilledrectangle($imagem, $x_pos - 2 * $largura_fonte, $y_pos, $x_pos - $largura_fonte, $y_pos + $altura_fonte, $cores[$i]); imagerectangle($imagem, $x_pos - 2 * $largura_fonte, $y_pos, $x_pos - $largura_fonte, $y_pos + $altura_fonte, $preto); } } imagepng($imagem); imagedestroy($imagem); ?> </body> </html>Link para o comentário
Compartilhar em outros sites
19 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.