Parte 3/4
Tacómetro
O Tacómetro é uma das visualizações preferidas quando se necessita de apresentar resultados uma vez que a utilização de áreas coloridas com a representação de valores de aceitação.
Na loja da Microsoft podemos encontrar o Tachometer by Annik Ink (https://appsource.microsoft.com/en-us/product/power-bi-visuals/WA104380937?tab=Overview).
Se nos referenciar-mos ao gráfico Donut e a sua forma de funcionamento (ver parte 2) e compreendermos a forma como o Tacómetro está montado será possível criar uma réplica.
Os pressupostos do tacómetro estão descritos abaixo:
- 1 marcador
- 3 áreas coloridas: Verde, Amarela, Vermelha
- Todas as áreas seguem o seguinte esquema (simplificação para efeitos de exemplo):
- Abaixo de 33,3% Verde
- Entre 33,3% e 66,6% Amarelo
- Acima de 66,6% Vermelho
Montar o Tacómetro
Se olharmos para o gráfico como um puzzle, e tendo em atenção a forma como o gráfico Donut funciona verificamos que não necessitamos de apenas 4 elementos.
A divisão das partes do gráfico será a seguinte:
- 8 Áreas
- 2 para Vermelho (acima e abaixo do marcador)
- 2 para Verde (acima e abaixo do marcador)
- 4 para Amarelo (Donut inicia no topo e no sentido do ponteiro do relógio logo a área amarela central ficara no 1º e no 4º quadrante)
- 3 marcadores
- 1 marcador por cada área colorida
- 1 zona em branco
Medidas utilizadas:
Unused Area = 50 //Zona em branco ========================================== Green Marker = VAR Fillquantity = [Unused Area] / 3 RETURN IF ( [Incremental Value] / 2 * 100 >= 50 / 3; BLANK (); 1 ) ========================================== Green after marker = IF ( [Green Marker] = BLANK (); 50/3; IF ( [Incremental Value] = 0; //Validação do 0 de modo a colocar o marcador no inicio do Tacómetro 50/3 - 1; // Quando o Tacómetro é 0 50/3 - [Green Marker] - [Green fill before marker] ) ) ========================================== Green before marker = IF ( [Green Marker] = BLANK (); 0; IF ( 50/6 + ( [Incremental Value] / 2 * 100 - ( 50/6 ) ) < 0; 0; 50/6 + ( [Incremental Value] / 2 * 100 - ( 50/6 ) - [Green Marker] ) ) ) ========================================== Red Marker = IF ( [Green Marker] = BLANK () && [yellow 1st Marker] = BLANK () && [Yellow 2nd marker] = BLANK (); 1; 0 ) ========================================== Red Before Marker = IF ( [Red Marker] = BLANK (); 50 / 3; IF ( 50 / 3 + ( ( [Incremental Value] * 100 - 100 ) / 2 - 1 ) < 0; 0; 50 / 3 + ( ( [Incremental Value] * 100 - 100 ) / 2 - 1 ) ) ) ========================================== Red after marker = IF ( [Red Marker] = BLANK (); 0; 50 / 3 - [Red Before Marker] - [Red Marker] ) ========================================== Yellow 1st Marker = IF ( [Green Marker] = BLANK (); IF ( Incremental[Incremental Value] <= 50 / 6 && Incremental[Incremental Value] < 0,5; IF ( Incremental[Incremental Value] / 2 * 100 <= 50 / 1,5; 1; 0 ); BLANK () ) ) ========================================== Yellow after 1st marker = IF ( [yellow 1st Marker] = BLANK (); 0; IF ( 50 / 6 - ( ( [Incremental Value] * 100 - 100 / 3 ) / 2 ) + [yellow 1st Marker] > 50 / 6; 50 / 6 - 1; 50 / 6 - ( ( [Incremental Value] * 100 - 100 / 3 ) / 2 ) ) ) ========================================== Yellow after 2nd marker = IF ( [Yellow before 2nd marker] < 0; 50 / 6 - [Yellow 2nd marker]; 50 / 6 - [Yellow before 2nd marker] - [Yellow 2nd marker] ) ========================================== Yellow before 1st marker = 50/6 - [Yellow after 1st marker] - [yellow 1st Marker] ========================================== Yellow before 2nd marker = IF ( [Yellow 2nd marker] = BLANK (); 50 / 6; 50 / 6 - ( 100 / 3 - ( [Incremental Value] * 100 ) / 2 ) - 1 )
Notas:
Quando os valores selecionados estão nos limites das áreas vermelha, amarela e verde os outros dois marcadores não estão visíveis .
O valor incremental é de base 100 sendo o gráfico metade de um Donut a base passa a 50 assim um valor de 10% vai corresponder a 5% no tacómetro.
Como por cada cor existem duas zonas cada uma corresponde a 1/6 e não 1/3, sendo que a área amarela (devido ao funcionamento do gráfico Donut) tem de ter 1/12 pois vais ter 4 áreas.
Agora necessitamos de montar o gráfico com de forma correta (considerando a rotação no sentido dos ponteiros dos relógios):
- Yellow before 2nd marker
- Yellow 2nd marker
- Red before marker
- Red marker
- Red after marker
- Unused Area
- Green before marker
- Green marker
- Green after marker
- Yellow before 1st marker
- Yellow 1st marker
- Yellow after 1st marker
Nas imagens abaixo podemos verificar a posição do marcador quando comparado com o gráfico Gauge (visualização padrão do PBI).
Na ultima parte deste post irei explicar como criar um gráfico Gantt utilizando uma tabela matriz.