Power BITutorialesUncategorized

Tutorial Power BI: Visuales personalizadas con el formato SVG

Hoy os presentamos un tutorial que os permitirá crear visualizaciones personalizadas y dinámicas a medida para vuestros informes gracias al formato vectorial SVG.

Por ejemplo, si estáis diseñando un informe demográfico, podremos crear gráficos con los iconos de hombre y mujer y rellenarlos según el porcentaje de población de cada género.

Ejemplo SVG dinámico
Ejemplo SVG dinámico

También podríamos crear porcentajes de humedad en gráficos con forma de gota, iconos de 5 estrellas que se van rellenando según la votación de una película o formas que cambian de color y tamaño según los datos de nuestro modelo.

Estrellas valoración
Estrellas valoración

¿Qué es el formato SVG?

Básicamente, el formato SVG es un formato de imagen vectorial escalable cuya ventaja es que tiene un código XML relativamente limpio por debajo. En la siguiente imagen podéis ver una sencilla imagen SVG (cuadrado rojo) y su correspondiente código:

Imagen SVG y código asociado
Imagen SVG y código asociado

Lo bueno de este formato es que modificando el código, modificamos la imagen vectorial. Por código podemos cambiar su altura, anchura o por ejemplo el color.

Otra de sus ventajas es que es un código bastante limpio y ordenado por capas, lo que nos permite poder encontrar la parte de código que queremos modificar para cambiar la imagen.

¿Cómo podemos usar SVG en Power BI?

La idea de este tutorial es usar el custom visual HTML Content, que nos permite insertar código HTML e imágenes en nuestros informes, pero haciendo que parte del código del SVG dependa de algún campo o medida de nuestro modelo y así convertirlo en un gráfico dinámico.

Para descargaros el custom visual de HTML Content deberías pulsar en el icono “…” al final de las visuales en Power BI Desktop y pulsar la opción “Obtener más objetos visuales“:

Instalar objetos visuales personalizados
Instalar objetos visuales personalizados

Se os abrirá una ventana de la Appsource de Microsoft y allí podréis buscar por HTML Content:

Seleccionar HTML Content en la AppSource de Microsoft
Seleccionar HTML Content en la AppSource de Microsoft

Una vez hayamos descargado el visual de HTML Content veremos que solo podemos arrastrar un campo que debe ser tipo texto. En esta medida es donde introduciremos el código dinámico, pero eso ya lo veremos más adelante.

Nuestro Ejemplo: Reservas de agua en embalses

Origen de los Datos

Para ilustrar este tutorial he seleccionado un conjunto de datos público con el historial del nivel de agua de las cuencas de toda la geografía española. Podéis descargar este dataset dese el siguiente link de El Boletín Hidrológico semanal del Ministerio.

Debéis descargar el histórico de embalses desde 1988:

Origen de datos históricos de los embalses
Origen de datos históricos de los embalses

El fichero es una tabla Access con sólo 6 columnas, pero muchos registros históricos (casi 650 mil):

Tabla Access con los niveles de agua por embalse
Tabla Access con los niveles de agua por embalse

Creando nuestro primer SVG

Lo primero que necesitamos es un programa gráfico para crear un fichero SVG. Yo utilizo Adobe Illustrator porque, como me gusta bastante el diseño, tengo una licencia de este producto. Si queréis un software gratuito podéis usar GIMP o incluso crear una imagen con formas en PowerPoint y exportarlo como SVG.

En este ejemplo vamos a crear un cuadrado azul que aumentará la altura en función del % de agua de nuestros embalses. Sólo deberemos modificar la propiedad de Altura de nuestro código XML en el fichero SVG en base a la medida “% de AGUA“.

Creamos un cuadrado azul con nuestro software gráfico y lo exportamos como SVG. Yo le he puesto un relleno azul con degradado (de azul más claro a más oscuro para simular la profundidad).

SVG para crear un nivel del agua dinámico
SVG para crear un nivel del agua dinámico

En otra capa superior he puesto una linea discontinua verde donde estaría el nivel del 100% de agua para que nos sirva de referencia, pero esto no es necesario si no os queréis complicar.

Si abrimos el fichero SVG creado con un bloc de notas veremos el siguiente código XML:

Codigo XML de nuestro fichero SVG
Codigo XML de nuestro fichero SVG

Vemos que en la capa 2 está nuestro rectángulo (etiqueta <rect>) y que tiene una propiedad height=”768″ que podremos modificar para hacer este gráfico dinámico. En cambio, la línea discontinua que marca el 100% de agua está en la capa3, por lo que no se verá afectada.

Añadiendo el código en una visual HTML Content

Para poder usar esta imagen en un informe de Power BI tendremos que:

  • Crear una nueva medida con el nuevo código
  • Añadir una visual HTML Content a nuestro informe
  • Arrastrar nuestra medida a nuestra nueva visual HTML

Crearemos la medida DAX simplemente pegando el código entre comillas dobles (como si fuese un texto fijo):

Lo único que tenemos que tener en cuenta son 2 puntos:

  • Hay que sustituir en el código las comillas dobles por dobles comillas dobles (para que no lo interprete como final del texto)
  • Podemos encadenar textos y sustituir parte del texto con nuestras medidas y así hacer el SVG dinámico

La medida DAX quedaría en nuestro caso así:

SVG NIVEL AGUA = 
"<svg version=""1.1"" xmlns=""http://www.w3.org/2000/svg"" xmlns:xlink=""http://www.w3.org/1999/xlink"" x=""0px"" y=""0px""
	 viewBox=""0 0 1366 768"" style=""enable-background:new 0 0 1366 768;"" xml:space=""preserve"">
<style type=""text/css"">
	.st0{fill:url(#SVGID_1_);}
	.st1{fill:none;stroke:#006837;stroke-width:16;stroke-miterlimit:10;}
	.st2{fill:none;stroke:#006837;stroke-width:16;stroke-miterlimit:10;stroke-dasharray:11.9823,11.9823;}
</style>
<g id=""Capa_2"">
	<g>
		<linearGradient id=""SVGID_1_"" gradientUnits=""userSpaceOnUse"" x1=""685.9111"" y1=""669.2866"" x2=""679.9111"" y2=""81.2866"">
			<stop  offset=""0"" style=""stop-color:#0071BC""/>
			<stop  offset=""0.1064"" style=""stop-color:#1684D0""/>
			<stop  offset=""0.2358"" style=""stop-color:#2895E0""/>
			<stop  offset=""0.3894"" style=""stop-color:#35A0EC""/>
			<stop  offset=""0.5886"" style=""stop-color:#3DA7F3""/>
			<stop  offset=""1"" style=""stop-color:#3FA9F5""/>
		</linearGradient>
		<rect class=""st0"" x=""0.8"" y="""&[Inicio Agua]&""" class=""st1"" width=""1364.4"" height="""&[Altura Agua]&"""/>
	</g>
</g>
<g id=""Capa_3"">
	<g>
		<g>
			<line class=""st1"" x1=""0"" y1=""10"" x2=""6"" y2=""10""/>
			<line class=""st2"" x1=""18"" y1=""10"" x2=""1354"" y2=""10""/>
			<line class=""st1"" x1=""1360"" y1=""10"" x2=""1366"" y2=""10""/>
		</g>
	</g>
</g>
</svg>"

Veis que he marcado en rojo las partes en las que he sustituido un número fijo (valor del “eje Y” y de la “altura”) por la medida correspondiente.

En principio sólo quería cambiar la altura, pero me di cuenta que empieza a dibujar desde la parte superior y el agua se me quedaba en el nivel del 100% y no llegaba hasta el fondo. Por eso necesité una segunda medida para indicar a partir de que punto del “eje Y” (vertical) debía empezar a dibujar el cuadrado. Las medidas son:

  • INICIO AGUA: que indica a que altura debe empezar el agua.
  • ALTURA AGUA: que multiplica la altura original del cuadrado por el % de agua.

Aquí podéis ver el resultado en nuestro informe de Power BI:

Power BI - Nivel de Agua Dinámico
Power BI – Nivel de Agua Dinámico

El Número en % con el nombre de la medida es una tarjeta con fondo transparente que hemos puesto encima en nuestro HTML Content, aunque también podíamos haberlo añadido en una capa de nuestro SVG.

El informe final

Os dejo el informe final para que podáis interactuar con él y ver como un SVG dinámico puede mejorar la calidad y aspecto final de nuestro reporte:

En cuanto a los otros SVGs de % de agua por ámbito hidrológico se han realizado igual que el anterior, pero la imagen vectorial incluía el borde verde y hemos creado una medida para cambiar el color de relleno en base al valor del “% de Agua”

Recordad que si estáis suscritos a nuestra newsletter mensual (es gratis) podréis descargaros los ficheros .pbix originales de nuestros tutoriales.

Conclusiones

Los formatos SVG junto con el custom visual de HTML Content nos proporcionan una versatilidad increíble para crear y adaptar nuestras visualizaciones a la temática de nuestro informe.

Gracias a ellos podemos hacer dinámico cualquier imagen vectorial y adaptarla según los datos de nuestro modelo.

¿Conocíais ya esta opción de Power BI? ¿Tenéis alguna idea de como implementarla en vuestros informes? ¿Dudas? Compartirlas en los comentarios de este tutorial y ¡prometemos respuestas!

¡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

5 comentarios

    1. Hola Maritza,

      Como ves en el tutorial, solo debes descargarte la visual personalizada de “HTML Content” y podrás crear visuales con tus propias imágenes vectoriales SVG sin problemas.

      Espero que las uses en tus informes de Power BI!

      Un saludo,

  1. Pingback: Tutorial Power BI: Visuales animadas con SVG - 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