Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
Reunir inúmeras informações em um espaço confinado é um desafio constante para os profissionais que elaboram complexos painéis de tomada de decisão. No gráfico ao lado é possível visualizar uma rica combinação de dados transformados em indicadores de rápida e fácil interpretação. Trata-se de um exemplo de movimentação portuária de cargas ao longo de portos brasileiros em um ano específico. Ordenados do maior para o menor, cada barra apresenta o total de mercadorias movimentadas em toneladas, representado pelo número interno dentro de cada barra. Adicionalmente, cada extremidade contém um rótulo adicional com um valor em percentual e uma seta para cima ou para baixo, demonstrando a variação de crescimento ou redução em relação ao ano anterior.As cores das setas auxiliam o usuário a compreender se houve aumento ou redução em relação ao penúltimo período. Para completar, no início de cada barra um valor em percentual trata da representatividade daquele terminal em relação aos demais. Ou seja, apresenta a distribuição em porcentagem da participação daquele porto na movimentação total.
Este artigo trata da criação de um gráfico semelhante ao exibido nesta seção para representar em uma única visão 4 elementos decisórios, incluindo o valor absoluto do ano atual, a variação em relação ao ano anterior, a direção da variação (setas) e a distribuição em relação ao todo (participação total).
Para iniciar a criação do gráfico do exemplo acima é necessário carregar um fragmento de dados que será utilizado para simular uma situação real. O script a seguir deve ser carregado antes da criação do objeto. A carga dos dados representa um terminal portuário, seu respectivo total de movimentação em toneladas para um determinado ano, variando de 2012 a 2014.
Movimentacao_Mercadorias:
LOAD * INLINE [
TERMINAL_PORTUARIO, MOVIMENTAÇÃO, ANO
TERMINAL MARÍTIMO DE PONTA DA MADEIRA, 112526506, 2014
TERMINAL DE TUBARÃO, 109808864, 2014
SANTOS, 94042814, 2014
ITAGUAÍ (SEPETIBA), 63849720, 2014
ALMIRANTE BARROSO, 53110690, 2014
PARANAGUÁ, 41603425, 2014
TERMINAL DA ILHA GUAÍBA, 40535106, 2014
ALMIRANTE MAXIMIANO DA FONSECA, 35058452, 2014
PONTA DE UBU, 25917564, 2014
TERMINAL DE TUBARÃO, 110480049, 2013
TERMINAL MARÍTIMO DE PONTA DA MADEIRA, 107328307, 2013
SANTOS, 99074788, 2013
ITAGUAÍ (SEPETIBA), 58327912, 2013
ALMIRANTE BARROSO, 52807620, 2013
PARANAGUÁ, 41771840, 2013
TERMINAL DA ILHA GUAÍBA, 39758214, 2013
ALMIRANTE MAXIMIANO DA FONSECA, 25797055, 2013
PONTA DE UBU, 22683156, 2013
TERMINAL DE TUBARÃO, 110334522, 2012
TERMINAL MARÍTIMO DE PONTA DA MADEIRA, 105033621, 2012
SANTOS, 90737329, 2012
ITAGUAÍ (SEPETIBA), 57081604, 2012
ALMIRANTE BARROSO, 50541216, 2012
PARANAGUÁ, 40441812, 2012
TERMINAL DA ILHA GUAÍBA, 39818902, 2012
ALMIRANTE MAXIMIANO DA FONSECA, 37041162, 2012
PONTA DE UBU, 23512589, 2012];
Como primeira ação para geração do gráfico, os dados apresentados devem refletir sempre o maior ano do histórico carregado ou o maior ano a partir da seleção do período pelo usuário. Para isso, uma operação de Set Analysis orientará a expressão para calcular seus valores apenas sobre o maior ano existente ou maior ano dentro da seleção. O gráfico pode ser iniciado como em qualquer outra operação através do atalho Novo Objeto de Pasta
com um clique com o botão da direita na área vazia de uma pasta. Como observado, trata-se de um gráfico de barras, o padrão selecionado pela janela Geral
do assistente de criação de gráficos. As características do gráfico de combinado (barras + linhas) para esta visão são:
ATENÇÃO! Esta seção descreve o uso do Gráfico Combinado
e não o Gráfico de Barras.
Mostrar Título no Gráfico
.TERMINAL_PORTUÁRIO
como dimensão do gráfico.Rótulo
e avance para as expressões.=Sum({$<ANO={'$(=MAX(ANO))'}>} MOVIMENTAÇÃO)
.Rótulo
para Total Movimentado
.Valor Numérico Ascendente
para o campo TERMINAL_PORTUARIO
.Texto
para o mesmo campo.Orientação
para Horizontal
, conforme figura ao lado.O resultado parcial das configurações realizadas até este momento podem ser conferidas no gráfico abaixo. As próximas configurações deverão incluir o valor absoluto da movimentação dentro de cada barra e outros aspectos visuais considerados adequados para um melhor acabamento. Retornando as propriedades do gráfico proceda com os seguintes ajustes:
Ocultar Eixo
.Valores de Desenho Dentro de Segmentos
.Valores Sobre os Dados
.Inteiro
.Manter Cores
e configure a primeira cor da paleta para o RGB(106, 132, 191)
.Mostrar Título
.Largura da Borda
.Mostrar Título no Gráfico
está desmarcada.Em linhas gerais, com as propriedades acima configuradas o gráfico assumirá um design mais semelhante ao apresentado na seção anterior. O momento é oportuno para calcular a distribuição percentual de cada barra em relação a cada porto. Ou seja, qual o percentual que cada porto transportou no ano corrente (ou maior ano selecionado). De volta as propriedades do gráfico, duplique a expressão atual.
Total Movimentado
.Rótulo
da nova expressão para % de Participação
.Barra
.TOTAL
no divisor da expressão para que a soma dos valores despreze a dimensão.Num
e não a guia Número
.=Num(Sum({$<ANO={'$(=MAX(ANO))'}>} MOVIMENTAÇÃO) / Sum({$<ANO={'$(=MAX(ANO))'}>} TOTAL MOVIMENTAÇÃO), '#,#0%')
Com uma nova expressão incluída o QlikView assume a necessidade de inclusão da legenda, o que não se faz necessário. Por isso, na guia Apresentação desmarque a opção Mostrar Legenda
.
Com o gráfico da seção anterior preparado, é possível incluir uma nova expressão responsável por calcular a variação em relação ao ano anterior. Esta variação se dá dividindo o valor do ano atual pelo ano imediatamente anterior em percentual. A função Num
será utilizada para incluir as setas direcionais para cima ou para baixo, de acordo com o resultado positivo ou negativo da expressão. De volta as propriedades do gráfico acesse a guia Expressões e inclua uma nova fórmula conforme definição abaixo.
=Dual(Num((Sum({$<ANO={'$(=MAX(ANO))'}>} MOVIMENTAÇÃO) - Sum({$<ANO={'$(=MAX(ANO)-1)'}>} MOVIMENTAÇÃO)) /
Sum({$<ANO={'$(=MAX(ANO)-1)'}>} MOVIMENTAÇÃO), '▲ #.##0,00%; ▼ -#.##0,00%'), [Total Movimentado])
Embora a fórmula parece complexa, trata-se apenas da derivação matemática de variação em relação ao período anterior calculado como período atual menos período anterior dividido pelo período anterior (resumo abaixo). O que torna a nova expressão especial é a utilização da formatação da função Num
que inclui as setas para cima ou para baixo de acordo com o resultado obtido. Embora geralmente Num
seja utilizado com um único padrão de formatação há um parâmetro para valores positivos e outro para negativos. Logo, a fórmula abaixo é aplicada à função Num
com o conceito abaixo descrito.
Fórmula: (PERÍODO_ATUAL - PERÍODO_ANTERIOR) / PERÍODO_ANTERIOR
Num((PERÍODO_ATUAL - PERÍODO_ANTERIOR) / PERÍODO_ANTERIOR), formato_positivo, formato_negativo)
A inclusão da fórmula na expressão de nada adiana se a posição das setas resultantes da função Num
não estiverem posicionadas no lugar correto. Ou seja, no final da barra. Para que isso seja possível é utilizada a função Dual
com objetivo de apresentar um valor e calcular outro. Dual
possui dois parâmetros utilizados neste exemplo, sendo o primeiro aquilo que se deseja exibir e o segundo o cálculo efetivamente realizado. Logo, Dual
é utilizado teoricamente assim:
Dual(VALOR_APRESENTADO, CALCULO_REALIZADO)
O cálculo de Dual
resultará em uma barra igual a calculada anteriormente, uma vez que a expressão anterior chamada [Total Movimentado]
é utilizada como base de cálculo da expressão. Daremos a essa expressão o rótulo de Variação
. Portanto, as configurações da janela de propriedades do gráfico na guia Expressões
estarão semelhantes a seguinte:
Realize os seguintes ajustes complementares na guia Expressões:
Combinado
.Linha
.Invisível
.Total Movimentado
.Valores sobre os Dados
.Adicionalmente, confira os seguintes parâmetros na guia Número:
Total Movimentado
o formato que desejar.Variação
e % de Participação
, necessariamente o Padrão da Expressão
.Para um melhor acabamento, na guia Eixo verifique que:
Ocultar Eixo
foi assinalada para todas as expressões.Forçar 0
foi marcadas para todas as expressões.Lembre-se, legendas não são necessárias, portanto na guia Apresentação:
Mostrar Legenda
.Distância de Separação
entre as barras para 2 ou 3.Valores de Desenho Dentro de Segmentos
deve estar marcada.Note que as setas foram incluídas meramente pelo uso da função Num
que já incluiu o triângulo para cima ou para baixo no formato do número positivo e negativo, respectivamente. Já a posição desta formatação no final da barra é possível pelo uso da função Dual
que calcula um valor mas apresenta outro. O valor calculado na realidade é o mesmo da expressão original das barras, porém serve apenas para posicionar a apresentação de Num
na extremidade.
Agora alguns ajustes visuais complementares auxiliam na visualização mais apurada das setas, adicionando a elas cores. Para redução, vermelho e, para acréscimo, verde. Estas configurações são realizadas na propriedade da expressão
O que define a cor da seta para cima ou para baixo é a configuração presente nas propriedades da expressão Variação
, conforme desenho ao lado. A esta expressão é incluída uma fórmula que calcula a variação entre os dois períodos e avalia se o resultado é positivo (maior que zero) ou negativo (igual ou menor do que zero). Em seguida a função RGB
assume as cores estabelecidas como resultado desta avaliação condicionada pela função IF
.
Se precisar entender um pouco mais o funcionamento da função RGB
, veja o artigo sobre como destacar barras em um gráfico, onde há uma seção apenas sobre a configuração de variáveis para uso de uma paleta de cores. Caso precise de informações básicas sobre o uso da função IF
, veja o artigo sobre troca de legendasonde há explicações básicas.
Para completar a configuração de cores das setas é preciso incluir na propriedade Cor de Fundo
a fórmula abaixo. A função IF
avaliará se o resultado da expressão é maior do que zero. Ou seja, o ano atual é maior do que o ano anterior em percentual? Se confirmado, o segundo parâmetro do IF
aplicará uma cor definida pela combinação RGB
(Red, Green, Blue). Caso contário, o último parâmetro do IF
é acionado aplicando a cor vermelha.
=IF((Sum({$<ANO={'$(=MAX(ANO))'}>} MOVIMENTAÇÃO) - Sum({$<ANO={'$(=MAX(ANO)-1)'}>} MOVIMENTAÇÃO)) /
Sum({$<ANO={'$(=MAX(ANO)-1)'}>} MOVIMENTAÇÃO) > 0, RGB(0, 128, 0), RGB(200, 10, 15))
1. Configurei todos os parâmetros mas as setas não aparecem.
2. As setas aparecem mas estão debaixo das barras e não na extremidade.
Gráfico Combinado
e não Gráfico de Barras
. Ajuste a segunda expressão para linhas.3. Meu gráfico funciona mas aparece uma linha ao lado das setas.
Invisível
.4. Tudo parece no lugar mas as setas não são exibidas no final da barra.
Valores Sobre os Dados
marcada.5. Configurei todos os parâmetros mas o gráfico repete o valor da barra no final ao invés de exibir as setas.
Relativo
. Ao invés, calcule o percentual de distribuição e desmarque esta opção na terceira expressão.6. Todos os itens anteriores foram verificados e mesmo assim as setas não aparecem. São exibidos os valores das barras ao invés dos triângulos para cima e para baixo.
Número
assegure-se que somente o Total Movimentado
está formatado. As duas outras expressões devem estar no Padrão da Expressão
.7. Tudo parece no lugar mas as setas estão sempre da mesma cor.
Cor de Fundo
da segunda expressão (Variação) através de um IF
.DUAL
e NUM
para comparar os períodos via SETANALYSIS
.Linhas
e assinale a opção Invisível
.TOTAL
para calcular a distribuição. Esta expressão não deve ter representação gráfica.Mais Artigos como Esse?
Excelente artigo, obrigado!