Power BITutoriales

Tutorial Power BI: gráficos a medida con Deneb

En los últimos meses hemos explorado opciones para realizar gráficos más personalizados y de mayor nivel que los que nos permite por defecto Power BI. Hoy os traemos una visual personalizada (custom visual) llamada Deneb.

Si disfrutasteis con los tutoriales de Charticulator, o HTML, no os podéis perder esta introducción a Deneb Viz, porque este es el inicio de una serie de tutoriales sobre esta gran visualización.

¿Qué es Deneb?

Deneb es un custom visual de Power BI que nos permite hacer visuales declarativas en formato JSON. Se basa en el lenguaje Vega-Lite y Vega para crear sus propias visualizaciones. Aunque suena muy raro de inicio, es muy sencillo y lo veremos en un ejemplo.

Básicamente al crear una visual con Deneb debemos ir creando las etiquetas y valores con las propiedades de formato de nuestra visual. De este modo, dependiendo de las etiquetas o valores que usemos podemos crear diagramas de barras, de línea, mapas de calor, etc… todo con la misma visual.

Algunos ejemplos de visuales creadas con Deneb Viz
Algunos ejemplos de visuales creadas con Deneb Viz

Nuestro Ejemplo en Deneb: Análisis de los propósitos de Año Nuevo

Origen de los Datos

Para ilustrar nuestro primer tutorial de Deneb vamos a utilizar un dataset de Kaggle sobre propósitos de Año Nuevo.

Este conjunto de datos recoge más de 5.000 tweets del área de Estados Unidos sobre los propósitos de Año Nuevo a finales de 2014 y 2015. Para implementarlo en Power BI Desktop sólo debemos descargar el fichero csv del link anterior y usar el origen de datos “Texto o CSV” para importar los datos a nuestro informe:

Conjunto de Datos de nuestro ejemplo
Conjunto de Datos de nuestro ejemplo

Si estáis suscritos a nuestra newsletter mensual (es gratis) podréis descargar el pbix original de este tutorial y ver que apenas he realizado transformaciones. Básicamente, he traducido los valores del campo Género y del campo Categoría al español a través de la Transformación “Reemplazar valores” en el Editor de Consultas de Power Query.

Aparte, como queremos un filtro en nuestro informe por Estado y el conjunto de datos sólo tiene el Código de Estado, he incluido un origen de datos web a wikipedia para obtener el nombre del estado en cuestión a partir de su código ISO.

Deneb Viz Custom Visual

Para poder usar Deneb Viz, debéis descargar este visual en vuestro Power BI Desktop a través del icono de 3 puntos (…) que veréis bajo las visuales estándares de Power BI:

Instalar objetos visuales personalizados
Instalar objetos visuales personalizados

Se abrirá la página de AppSource para ver que objetos visuales podemos descargar y debéis buscar Deneb:

Descarga de Deneb Custom visual
Descarga de Deneb Custom visual

Pulsando sobre el icono de Deneb y el botón “Agregar” os instalará esta visual en vuestro informe.

Recordad que al descargar un custom visual, lo hacéis en el informe y no en Power BI Desktop. Si queréis volver a usarlo en otro informe deberéis volver a descargarlo.

Creando nuestra primera visual con Deneb

De igual manera que con el resto de objetos visuales, si pulsamos sobre la nueva visual de Deneb se insertará en nuestro informe y tendrá este aspecto:

Aspecto inicial de la visual Deneb en nuestro informe
Aspecto inicial de la visual Deneb en nuestro informe

Como veis, incluye 3 links muy interesantes para empezar con Deneb:

  • Visual Documentation: incluye toda la documentación oficial y detallada de este custom visual (incluyendo un pbix de ejemplo).
  • Vega Documentation: Una referencia a las etiquetas y al lenguaje Vega a usar en este custom visual.
  • Vega Lite Documentation: Una referencia a las etiquetas y al lenguaje Vega-Lite a usar en este custom visual.

Os recomiendo empezar por Vega-Lite que es una versión reducida de Vega y más sencilla para comenzar a explorar este tipo de visuales.

Tened siempre abierta la documentación de referencia de Vega Lite mientras desarrolláis visuales con Deneb porque os será muy útil.

Indicando los campos a utilizar de nuestro dataset

De igual manera que hacíamos con Charticulator, lo primero es indicar que campos de nuestro dataset usaremos en nuestra visualización con Deneb. Lo haremos de la misma manera que con el resto de visuales, arrastrando los campos al parámetro “Values” de nuestra visual:

Vinculando los datos a nuestra visual Deneb
Vinculando los datos a nuestra visual Deneb

En este caso he arrastrado los campos gender, resolution_category y tweet_id porque queremos mostrar el número de tweets por categoría y género. Un par de apuntes:

  • He cambiado el nombre de los campos por Gender, Categoría y Tweets. Es importante poner nombres descriptivos a nuestros campos porque en el código Vega-Lite tenemos que hacer referencia a ellos por nombre.
  • Recordad que el campo tweet_id (Tweets) debe tener agregación tipo Recuento ya que queremos contar los tweets, no sumar sus valores de id.

Código para crear nuestra visual

Ya tenemos la visual Deneb importada en nuestro informe y le hemos indicado los campos a usar. Ahora sólo queda dar formato a nuestra visual. Para ello, debemos pulsar en el icono de 3 puntos (…) de nuestra visual y en la opción Editar:

Opción de Edición de nuestra visual Deneb
Opción de Edición de nuestra visual Deneb

Nos aparecerá una pantalla en la que tenemos opciones de crear la visual con Vega-Lite, Vega o a través de una plantilla:

Creando la visual Deneb
Creando la visual Deneb

Usaremos Vega-Lite, al ser la opción más sencilla para aprender. En vez de usar los ejemplos guiados de diagrama de barras, scatterplot o línea que nos ofrece la pantalla, usaremos la opción [empty] y así aprenderemos desde cero y pulsamos el botón de “Create“.

A partir de este momento veremos la pantalla principal de Deneb, dividida en una zona de código a la izquierda y otra de visualización a la derecha:

Pantalla Principal de Deneb
Pantalla Principal de Deneb

Las etiquetas principales que debemos usar son:

  • “data”: indica el origen de los datos y en nuestro caso será “dataset” ya que así hacemos referencia a los campos que hemos arrastrado a nuestra visual.
  • “mark”: indica el tipo de gráfico que queremos configurar. Lo bueno de Deneb es que, a diferencia de la mayoría de visuales de Power BI, podemos crear varios tipos de gráficos en uno. Para crear varias visuales en una usaremos la etiqueta “layer“, esto es, crearemos capas con diferentes “marks”
  • “encoding”: esta etiqueta nos sirve para vincular alguno de los parámetros de nuestro diseño con campos del dataset.

En la parte de código vemos que ya se ha creado la etiqueta “data” (apuntando a nuestro dataset) y al etiqueta “mark” pero con valor null. Vamos a introducir el siguiente código:

{
  "data": {"name": "dataset"},
  "mark": "bar",
  "encoding": {
    "y": {
      "field": "Tweets",
      "type": "quantitative"
    },
    "x": {
      "field": "Categoria",
      "type": "nominal",
      "axis": {
        "labelFontSize": 12
        }
      }
  }
}

Simplemente le hemos indicado:

  • Que la etiqueta “mark” que indica el tipo de gráfico es tipo barras (“bar“).
  • Que en el eje Y queremos mostrar el valor “Tweets” cuantitativo y en el eje X el campo “Categoria” que es nominal. Para ello, usamos la etiqueta “encoding“, que nos permite relacionar parámetros de la visual con los campos del dataset.
  • Hemos indicado un tamaño de fuente de 12 pixels en el eje X.

Si pulsamos en el icono triangular de play en la parte superior del “Visual Editor” veremos a la izquierda el gráfico que acabamos de crear:

Nuestro primer gráfico de barras en Deneb
Nuestro primer gráfico de barras en Deneb

Fácil, ¿no? Pero esto ya lo podíamos hacer con una visual estándar de columnas en Power BI. Vamos a realizar un gráfico más avanzado.

Dando un paso más: las capas

La etiqueta “layer” nos permite crear varios tipos de gráficos o “mark” en la misma visual.

Para ello, primero vamos a sustituir nuestro valor de “mark”: de “bar” a “line” y le vamos a añadir un “encoding” para relacionarlo con el campo “Gender”:


{
  "data": {"name": "dataset"},
  "encoding": {
    "y": {
      "field": "Tweets",
      "type": "quantitative"
    },
    "x": {
      "field": "Categoria",
      "type": "nominal",
      "axis": {
        "labelFontSize": 12
        }
      }
  },
    "layer": [
    {
  "mark": "line"
      }
  ]
}

El resultado de este código Vega-Lite debería ser el siguiente:

Usando la etiqueta layer
Usando la etiqueta layer

Como veis, la etiqueta “layer” no ha cambiado nada. Sólo hemos cambiado el tipo de gráfico de barras a línea cambiando el valor de “mark” de “bar” a “line“. Vamos a dar un poco de formato a nuestra línea. Dentro de nuestra etiqueta “mark” incluiremos:

  • Un “encoding” con “detail” para realizar un stack o acumulado por Género.
  • Una etiqueta “Color” para darle un color gris a la línea.
{
  "data": {"name": "dataset"},
  "encoding": {
    "y": {
      "field": "Tweets",
      "type": "quantitative"
    },
    "x": {
      "field": "Categoria",
      "type": "nominal",
      "axis": {
        "labelFontSize": 12
        }
      }
  },
    "layer": [
    {
  "mark": "line",
      "encoding": {
        "detail": {
          "field": "Categoria",
          "type": "nominal"
        },
    "color": {"value": "#B3B3B4"}
      }
  }
  ]
}

Como veis, ahora muestra un gráfico con líneas verticales por cada categoría que unen el numero de tweets de hombres y mujeres para esa categoría:

Damos formato a nuestro gráfico de líneas
Damos formato a nuestro gráfico de líneas

Al tener una etiqueta “layer” podemos introducir otra etiqueta “mark”, en este caso, vamos a añadir unos círculos en los extremos de nuestras líneas y les daremos diferente color en función del género a través de la etiqueta “color“:

{
  "data": {"name": "dataset"},
  "encoding": {
    "y": {
      "field": "Tweets",
      "type": "quantitative"
    },
    "x": {
      "field": "Categoria",
      "type": "nominal",
      "axis": {
        "labelFontSize": 12
        }
      }
  },
    "layer": [
    {
  "mark": "line",
      "encoding": {
        "detail": {
          "field": "Categoria",
          "type": "nominal"
        },
    "color": {"value": "#B3B3B4"}
      }
  },
  {
      "mark": {
        "type": "point",
        "filled": true,
        "tooltip": true
      },
      "encoding": {
        "color": {
          "field": "Gender",
          "type": "ordinal",
          "scale": {
            "range": ["#110B93", "#CA63BD"]
          },
          "title": "Género"
        },
        "size": {"value": 300},
        "opacity": {"value": 1}
      }
    }
  ]
}

El resultado ya es el gráfico final que buscábamos:

Creando gráficos de líneas y puntos en la misma visual gracias a "layer"
Creando gráficos de líneas y puntos en la misma visual gracias a “layer”

En esta visual podemos ver el número de tweets por categoría de Propósito de Año Nuevo y analizar claramente en cuales hay más diferencia entre hombres y mujeres (“Crecimiento Personal”, “Humor” y “Salud y Ejercicio”).

Si le añadimos una visual de filtro por “Estado” (geografía), ponemos una imagen de fondo y le damos un poco de formato tenemos el informe que queríamos y presentábamos en el inicio del tutorial:

Recordad que si estáis suscritos a nuestra newsletter mensual (es gratis) podéis descargar e pbix original de este tutorial y del resto de posts de nuestro blog.

Siguiente paso: Tooltips + Deneb

En el próximo tutorial usaremos este primer informe en Deneb para añadirle Tooltips y ver si funcionan de manera interactiva en la visual declarativa de Deneb. ¿Qué creéis? ¿funcionará?

Conclusiones

Como veis, esta visual de Deneb nos da mucha flexibilidad para crear nuestra propias visuales (incluso más que Charticulator seguramente). De momento sólo estamos empezando a usar Vega-Lite y aún veremos otros tutoriales con opciones increíbles.

¿Qué os ha parecido? ¿Lo habíais usado ya en vuestros informes? Podéis dejar vuestros pensamientos y dudas en los comentarios de este post.

¡SUSCRÍBETE YA!
Doy mi consentimiento para almacenar mis datos para envío de newsletters.
Si te suscribes a la newsletter tendrás acceso a los <b><u>ficheros Power BI originales</u></b> de nuestros tutoriales y post. <br><br>Además tendrás derecho a participar en sorteos periódicos que realizaremos en el blog.
We hate spam. Your email address will not be sold or shared with anyone else.
Mostrar más

Iván Arribas

Llevamos siglos generando, relacionando, modificando y almacenando datos....es hora de que les echemos un vistazo. Espero que este blog sirva de ayuda a los que quieran introducirse en este mundo de la Analítica de Datos, igual que me está sirviendo a mi.

Publicaciones relacionadas

6 comentarios

  1. Pingback: Tutorial Power BI: Deneb y Tooltips - Vandalytic - tu blog de Power BI y más en español
  2. Hola Iván
    Mil gracias por compartir estos conocimientos de forma tan altruista.
    Contigo aprendí Charticulator y ahora estoy comenzando con Deneb (Vega-Lite).
    Gracias por todo, saludos y un abrazo.

    1. Gracias Alex! Es increíble oír que los tutoriales le están sirviendo a alguien para seguir avanzando. Y más si es alguien con tu nivel!! 😉 Soy fan de tus informes!!

  3. Pingback: Tutorial Power BI: Gráficos con imágenes en Deneb - Vandalytic - tu blog de Power BI y más en español

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Información básica sobre protección de datos Ver más

  • Responsable: Iván Arribas Delgado.
  • Finalidad:  Moderar los comentarios.
  • Legitimación:  Por consentimiento del interesado.
  • Destinatarios y encargados de tratamiento:  No se ceden o comunican datos a terceros para prestar este servicio. El Titular ha contratado los servicios de alojamiento web a Bluehost que actúa como encargado de tratamiento.
  • Derechos: Acceder, rectificar y suprimir los datos.
  • Información Adicional: Puede consultar la información detallada en la Política de Privacidad.

Botón volver arriba
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Ver
Privacidad