Apesar de as boas práticas das visualizações de dados dizerem que um gráfico não deve estar sobrecarregado de informação pois poderá não ser legível, várias vezes surge na comunidade a pergunta de como se podem utilizar legendas (categorias) e várias medidas nos gráficos ficando assim com uma maior divisão dos dados.
Dependendo da quantidade de dados podemos ter várias opções, no entanto e dependendo do público alvo muitas vezes as soluções apresentadas não são as desejadas.
Vou dar 2 exemplos maneiras de apresentar a informação detalhada uma delas apresenta uma utilização da hierarquia no eixo do X, e a outra apresenta um detalhe maior conseguindo determinar cores individuais para cada conjugação de valores.
Dados
Tabela de vendas:

Que queremos apresentar?
1º Apresentar no mesmo gráfico a informação de venda e custo dividida por categoria e por data
2º Evidenciar com cores diferentes cada tipo de categoria
Utilização de hierarquia no eixo do X
Para esta opção e tendo em conta que não podemos utilizar duas medidas (colunas) juntamente com a legenda num gráfico criamos uma tabela com a identificação das nossas medidas:

Necessitamos de criar uma medida que faça o cálculo distinto das duas colunas.
Sales_Cost_Calculation =
SWITCH (
SELECTEDVALUE ( Measure_selection[Measure_Selection] ),
"Sales", SUM ( Sales[Sales] ),
"Cost", SUM ( Sales[Cost] )
)
Para o exemplo em questão vamos utilizar um gráfico de barras que terá a seguinte configuração:
- Eixo:
- Date
- Cat
- Legenda:
- Measure_Selection
- Valores:
- Sales_Cost_Calculation
Além destas configurações básicas de modo a que a informação fique mais visível fazemos as seguintes alterações:
- X-Axis -> Concatenate Labels: Desligado
- Drill down até ao nível mais baixo
- Ordenação do eixo do X pela hierarquia e não pelos valores
O nosso gráfico fica com a seguinte aparência:


Caso queiramos também podemos alterar a hierarquia e colocar a categoria em primeiro lugar:

Diferenciação de categoria por cores
Os exemplos anteriores apresentam toda a informação necessária, no entanto não é possível personalizar cada categoria para ter a sua cor individualizada.
De modo a ultrapassar esta limitação começamos por criar uma tabela com a informação de Medida / Categoria
Measure_Category_Selection = CROSSJOIN(({"Sales", "Cost"} ), DISTINCT(Sales[Cat]))
Esta tabela foi criada em DAX mas também poderá ser criada através do query editor.
Criamos nesta tabela duas colunas adicionais:
Sorting =
RANKX (
'Measure_Category_Selection',
'Measure_Category_Selection'[Cat] & 'Measure_Category_Selection'[Measure],
,
ASC
)
Detail Label = 'Measure_Category_Selection'[Measure] & " - " & Measure_Category_Selection[Cat]
O formato da tabela final é o seguinte:

Como podemos ver temos um nível de detalhe por categoria e medida assim podemos criar a nossa medida final:
Sales_Cost_Calculation_Colors =
SWITCH (
TRUE (),
SELECTEDVALUE ( Measure_Category_Selection[Measure] ) = "SALES",
CALCULATE (
SUM ( Sales[Sales] ),
FILTER ( Sales; Sales[Cat] = SELECTEDVALUE ( Measure_Category_Selection[Cat] ) )
),
SELECTEDVALUE ( Measure_Category_Selection[Measure] ) = "Cost",
CALCULATE (
SUM ( Sales[Cost] ),
FILTER ( Sales; Sales[Cat] = SELECTEDVALUE ( Measure_Category_Selection[Cat] ) )
)
)
A configuração do gráfico de barras será a seguinte:
- Eixo:
- Data
- Legenda:
- Detail Label
- Valores:
- Sales_Cost_Calculation_Color
O formato final do gráfico será o seguinte:

Como se pode verificar agora temos a possibilidade de definir manualmente cada uma das cores das categorias assim podemos ficar com a seguinte versão final:

Esta são apenas duas formas de apresentar a informação com várias categorias.