(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Como criar um gráfico de dispersão com regressão linear no Power BI: passo a passo

João Barros 29 de September de 2026 5 min de leitura

Aprende a criar um gráfico de dispersão com regressão linear no Power BI para visualizar correlações e identificar outliers. Esta técnica é útil para mostrar a relação entre duas variáveis e adicionar uma linha de tendência calculada com DAX quando o visual nativo não chega.

Pré-requisitos

  • Power BI Desktop instalado.
  • Um conjunto de dados simples com pelo menos duas medidas numéricas (ex.: Sales e Quantity) e uma chave temporal ou categórica.
  • Noções básicas de DAX e do Editor de consultas.

Passo 1: Preparar os dados

Importa os dados para o Power BI e certifica-te de que tens colunas numéricas para X e Y (por exemplo, Quantity como X e Sales como Y). Se necessário, cria uma tabela de amostra no Editor de consultas ou usa Excel/CSV.

// Exemplo de tabela simples (CSV) com Product, Quantity, Sales
Product,Quantity,Sales,Date
A,10,200,2024-01-01
B,5,75,2024-01-02
C,20,420,2024-01-03

Passo 2: Criar medidas base

Cria medidas que representem os eixos X e Y. Normalmente são somas ou médias. Exemplos com soma de Sales e Quantity:

QuantitySum = SUM(Table[Quantity])
SalesSum = SUM(Table[Sales])

Se estiveres a analisar por linha (ponto por produto), podes usar colunas em vez de medidas. Mas, para agregações por categoria, medidas são mais flexíveis.

Passo 3: Calcular a regressão linear em DAX

Vamos calcular a linha de regressão (y = a + b*x) usando fórmulas DAX para b (declive) e a (interceção). Usamos medidas que considerem o contexto atual do visual.

// Soma das X e Y no contexto
X_Sum = SUM(Table[Quantity])
Y_Sum = SUM(Table[Sales])

// Contagem de pontos (dependendo do detalhe, pode ser DISTINCTCOUNT de Product)
N = COUNTROWS(VALUES(Table[Product]))

// Média X e Y
X_Mean = DIVIDE([X_Sum], [N])
Y_Mean = DIVIDE([Y_Sum], [N])

// Covariância e variância para o declive b
Cov_XY = SUMX(VALUES(Table[Product]), (SUM(Table[Quantity]) - [X_Mean]) * (SUM(Table[Sales]) - [Y_Mean]))
Var_X = SUMX(VALUES(Table[Product]), (SUM(Table[Quantity]) - [X_Mean]) ^ 2)

Slope_b = DIVIDE([Cov_XY], [Var_X])
Intercept_a = [Y_Mean] - [Slope_b] * [X_Mean]

// Valor da linha de tendência para um ponto (usado para plotar a linha)
TrendY = [Intercept_a] + [Slope_b] * SUM(Table[Quantity])

Notas: usa VALUES(Table[Product]) ou outra granularidade adequada ao teu modelo. Se os pontos forem por linha, ajusta para iterar por ID de linha.

Passo 4: Criar o gráfico de dispersão com pontos

Insere um Scatter chart no relatório. Define:

  • X Axis: QuantitySum (ou coluna Quantity para cada ponto)
  • Y Axis: SalesSum (ou coluna Sales)
  • Details: Product (ou identificador do ponto)
  • Size: (opcional) outra medida, ex.: SalesSum

Isto desenha os pontos. Se usares agregações, garante que o nível de detalhe no visual corresponde ao que usaste nas medidas DAX (por exemplo, Product ou Date).

Passo 5: Adicionar a linha de regressão ao gráfico

O Scatter chart nativo não permite linhas calculadas diretamente. Há duas abordagens simples:

  1. Criar uma tabela auxiliar com valores X ordenados e calcular TrendY em DAX; depois plotar como linha usando um Line and clustered column chart com X no eixo e TrendY como série de linha.
  2. Usar um visual personalizado que aceite série de linha sobre pontos (ex.: Line and scatter visual do AppSource).

Exemplo para a tabela auxiliar:

TrendTable = 
VAR MinX = MINX(ALL(Table), Table[Quantity])
VAR MaxX = MAXX(ALL(Table), Table[Quantity])
VAR Step = 1
RETURN
ADDCOLUMNS(
    GENERATESERIES(MinX, MaxX, Step),
    "Quantity", [Value],
    "TrendY", [Intercept_a] + [Slope_b] * [Value]
)

Depois cria um visual de linhas: Eixo = Quantity (da TrendTable), Valores = TrendY; para apresentar em conjunto, podes alinhar escalas ou usar um visual combinado que aceite ambas as tabelas.

Passo 6: Formatar e lidar com erros comuns

Formata os eixos para boa leitura e verifica estes erros comuns:

  • Divisão por zero em Slope_b: previne usando DIVIDE e verificações em [Var_X].
  • Granularidade inconsistente: medidas que usam VALUES diferentes produzem resultados incorretos; uniformiza o detalhe (Product, Date).
  • Pontos sobrepostos: usa Size e Tooltip para distinguir ou aplica jitter no conjunto auxiliar (ligeiro deslocamento em X).

Verificar o resultado

Confirma que os pontos refletem os registos e que a linha de tendência segue a nuvem de pontos. Verifica extremos e calcula manualmente um par de pontos para confirmar a equação y = a + b*x. Usa Tooltips e uma tabela visual com Quantity, Sales, TrendY para comparar valores ponto a ponto.

Conclusão

Agora tens um gráfico de dispersão com uma linha de regressão calculada em DAX, útil para análise de correlação e deteção de outliers. Próximos passos: experimentar regressão ponderada, R² em DAX ou usar um visual personalizado para sobrepor linha e pontos. Dica: começa com poucos pontos e aumenta a granularidade só depois de validar as medidas.