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

Cómo crear un gráfico de dispersión con regresión lineal en Power BI: paso a paso

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

Aprende a crear un gráfico de dispersión con regresión lineal en Power BI para visualizar correlaciones e identificar outliers. Esta técnica es útil para mostrar la relación entre dos variables y añadir una línea de tendencia calculada con DAX cuando el visual nativo no es suficiente.

Requisitos previos

  • Power BI Desktop instalado.
  • Un conjunto de datos sencillo con al menos dos medidas numéricas (p. ej.: Sales y Quantity) y una clave temporal o categórica.
  • Noções básicas de DAX y del Editor de consultas.

Paso 1: Preparar los datos

Importa los datos a Power BI y asegúrate de que tienes columnas numéricas para X e Y (por ejemplo, Quantity como X y Sales como Y). Si es necesario, crea una tabla de muestra en el Editor de consultas o 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

Paso 2: Crear medidas base

Crea medidas que representen los ejes X e Y. Normalmente son sumas o medias. Ejemplos con suma de Sales y Quantity:

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

Si estás analizando por fila (punto por producto), puedes usar columnas en lugar de medidas. Pero, para agregaciones por categoría, las medidas son más flexibles.

Paso 3: Calcular la regresión lineal en DAX

Vamos a calcular la línea de regresión (y = a + b*x) usando fórmulas DAX para b (pendiente) y a (intersección). Usamos medidas que consideren el contexto actual del 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]) u otra granularidad adecuada a tu modelo. Si los puntos son por fila, ajusta para iterar por ID de fila.

Paso 4: Crear el gráfico de dispersión con puntos

Inserta un Scatter chart en el informe. Define:

  • X Axis: QuantitySum (o columna Quantity para cada punto)
  • Y Axis: SalesSum (o columna Sales)
  • Details: Product (o identificador del punto)
  • Size: (opcional) otra medida, p. ej.: SalesSum

Esto dibuja los puntos. Si usas agregaciones, asegúrate de que el nivel de detalle en el visual corresponde a lo que usaste en las medidas DAX (por ejemplo, Product o Date).

Paso 5: Añadir la línea de regresión al gráfico

El Scatter chart nativo no permite líneas calculadas directamente. Hay dos enfoques sencillos:

  1. Crear una tabla auxiliar con valores X ordenados y calcular TrendY en DAX; luego trazarla como línea usando un Line and clustered column chart con X en el eje y TrendY como serie de línea.
  2. Usar un visual personalizado que acepte serie de línea sobre puntos (p. ej.: Line and scatter visual do AppSource).

Ejemplo para la tabla 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]
)

Después crea un visual de líneas: Eje = Quantity (de la TrendTable), Valores = TrendY; para presentar en conjunto, puedes alinear escalas o usar un visual combinado que acepte ambas tablas.

Paso 6: Formatear y manejar errores comunes

Formatea los ejes para una buena lectura y verifica estos errores comunes:

  • División por cero en Slope_b: evita usando DIVIDE y comprobaciones en [Var_X].
  • Granularidad inconsistente: medidas que usan VALUES diferentes producen resultados incorrectos; uniformiza el detalle (Product, Date).
  • Puntos solapados: usa Size y Tooltip para distinguir o aplica jitter en la tabla auxiliar (ligero desplazamiento en X).

Verificar el resultado

Confirma que los puntos reflejan los registros y que la línea de tendencia sigue la nube de puntos. Verifica extremos y calcula manualmente un par de puntos para confirmar la ecuación y = a + b*x. Usa Tooltips y una tabla visual con Quantity, Sales, TrendY para comparar valores punto a punto.

Conclusión

Ahora tienes un gráfico de dispersión con una línea de regresión calculada en DAX, útil para análisis de correlación y detección de outliers. Próximos pasos: experimentar regresión ponderada, R² en DAX o usar un visual personalizado para sobreponer línea y puntos. Consejo: comienza con pocos puntos y aumenta la granularidad solo después de validar las medidas.