Re: [Cascavel-pm] Cores no gráfico de Pizza

ana.aranda ana.aranda em bol.com.br
Quinta Dezembro 22 11:44:27 PST 2005


Breno, estou usando GD sim e não utilizo duas variaveis pois na verdade eu tenho uma tela q chama a montagem do relatorio em <img>. O que eu por hora consegui foi retirar os itens zerados q com isso não afeta a ordem das cores só que se deixar o array de valores com zeros, não sei porque existe este problema com a cor. um outro problema que acabei percebendo q 'solucionei' retirando a opção (rsrs) é a exibição de cores erradas quando a opção 3d está selecionada. De qq modo estou mandando o código e uma imagem para ilustração. Obrigada!



        for(my $i = 0; $i<= $#produtos; $i++){
                $query = "select $camp from vendas_ano where id_produto = $produtos[$i] and ($where)";
warn($query);
                $desc = $conn->prepare($query);
                $desc->execute;
                $campos=$desc->fetchrow_array();
                $campos = ($campos*100)/$valor_total;
                $campos = ($campos == "")?0:$campos;

                if($campos != 0){
                        push(@graf, $campos);
                        $query = "select nome from produto where id = $produtos[$i]";
                        $desc = $conn->prepare($query);
                        $desc->execute;
                        my ($nome_prod) = $desc->fetchrow_array();
                        push(@nomes, $nome_prod);
                }
        }


push(@graf_final, \@nomes);
push(@graf_final,\@graf);
$conn->disconnect;

my $grafico = GD::Graph::pie->new(250, 250);
        $grafico->set(
        title => 'Gráfico de Pizza por '.$nome_tipo,
        '3d' => 0,
        dclrs => ["lorange","lred","lgreen","lyellow","lpurple","cyan","lblue"]
        ) or warn $grafico->error;


my $imagen = $grafico->plot(\@graf_final) or die $grafico->error;

---------- Início da mensagem original -----------

      De: cascavel-pm-bounces em pm.org
    Para: "Cascavel Perl Mongers" cascavel-pm em pm.org
      Cc: 
    Data: Thu, 22 Dec 2005 12:50:22 -0200
 Assunto: Re: [Cascavel-pm] Cores no gráfico de Pizza

> Oi Ana Carolina,
> 
> Você pode mandar mais informações, como qual o módulo que está usando
> para fazer as pizzas, e/ou um trecho de código que ilustre o problema?
> Talvez a solução esteja em algum detalhe no código, e não no conceito em
> si. Não precisa incluir os acessos a banco, desde que as variáveis
> estejam populadas com valores coerentes à sua aplicação ou que consigam
> simular o problema. Tentei reproduzir sua situação usando o módulo GD
> (meu palpite é que seja esse que vc está usando, já que fala de 'lblue',
> 'lred', etc) e cheguei ao seguinte código:
> 
> -------8<--------
> use GD::Graph::pie;
> 
> my @dados = (
>             ["item0", "item1", "item2", "item3", "item4", "item5"],
>             [     15,       0,       9,       0,       0,      23]
>            );
> 
> my $pizza = GD::Graph::pie->new(480,320);
> $pizza->set ( dclrs => ['lred', 'lorange', 'lgreen', 'lyellow',
>                         'lpurple', 'cyan', 'lblue' ] );
> $pizza->plot(\@dados);
> grava($pizza, 'grafico1'); # grava() escreve 'grafico1.gif' em disco
> 
> # muda os valores, simulando consulta ao banco
> $dados[1] = [2, 0, 13, 0, 0, 5];
> 
> $pizza2 = GD::Graph::pie->new(480, 320);
> $pizza2->set (  dclrs => ['lred', 'lorange', 'lgreen', 'lyellow',
> 'lpurple', 'cyan', 'lblue' ] );
> $pizza2->plot(\@dados);
> grava($pizza2, 'grafico2');
> -------8<--------
> 
> O exemplo acima funciona perfeitamente e portanto não consegui simular a
> sua situação de troca de cores. No entanto, algumas coisas me chamaram a
> atenção:
> 
> 1) Se eu uso a mesma variavel $pizza e tento fazer um plot com os novos
> dados, o gráfico é feito mas o canvas antigo não é limpo (os gráficos
> parecem sobrepostos). Não encontrei função para limpar o canvas, e por
> isso estou usando 2 variáveis no exemplo ($pizza e $pizza2)
> 
> 2) O mantenedor do GD::Graph lançou uma nova versão hoje! Talvez ela
> corrija seu problema (caso seja de fato um problema do módulo)
> 
> 3) O módulo GD usa a biblioteca GD (www.boutell.com/gd) para fazer os
> gráficos. Talvez seja um problema na biblioteca, e não no módulo. Tente
> atualizar ambos, se for o caso.
> 
> 4) Às vezes as cores podem sair esquisitas, especialmente quando o
> gráfico é em 3D, mas acho que isso diz respeito ao formato como é
> gravado (GIF). Escolhendo outro formato como PNG ou JPG, o problema pode
> sumir (ou não).
> 
> 5) Como deve ter ficado bastante óbvio, não sou nenhum especialista em
> imagens, muito menos em GD (aliás, pelo contrário). Se alguém tiver mais
> alguma idéia ou precisar corrigir alguma besteira que eu tenha escrito,
> por favor o faça ;)
> 
> []s
> 
> breno
> 
> ana.aranda wrote:
> > Estou exibindo duas pizzas, uma ao lado da outra, que são montadas por um array de 6 posições.
> > O problema é que neste array as posições 0,2 e 5 tem valores diferentes de zero e as outras com
> > valor zero. Coloquei como cores no grafico lred, lorange, lgreen, lyellow, lpurple, cyan e lblue
> > exatamnete nesta ordem.
> >
> > O problema é que um gráfico fica com vermelho, verde e azul e o outro fica com laranja, verde e azul.
> > Sendo que os gráficos refletem os mesmas posições de array com valores diferentes.
> > É a mesma tela que monta os gráficos, a única coisa que muda são os campos buscados no banco de dados.
> > Se alguém puder me ajudar, agradeço!
> > 
> > Ana Carolina Aranda
> > 
> > 
> > 
> > _______________________________________________
> > Cascavel-pm mailing list
> > Cascavel-pm em pm.org
> > http://mail.pm.org/mailman/listinfo/cascavel-pm
> > 
> > 
> _______________________________________________
> Cascavel-pm mailing list
> Cascavel-pm em pm.org
> http://mail.pm.org/mailman/listinfo/cascavel-pm
> 
-------------- Próxima Parte ----------
Um anexo não texto foi limpo...
Nome  : erro_pizza.jpg
Tipo  : image/jpeg
Tam   : 46594 bytes
Descr.: não disponível
Url   : http://mail.pm.org/pipermail/cascavel-pm/attachments/20051222/eabf721c/iso-8859-1Qerro5Fpizza-0001.jpg


Mais detalhes sobre a lista de discussão Cascavel-pm