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

Breno G. de Oliveira breno em clavis.com.br
Quinta Dezembro 22 06:50:22 PST 2005


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


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