Sparklines SVG – Columnas categóricas

Un usuario Pregunto ✅

Power BI ahora permite la creación dinámica de imágenes de gráficos vectoriales escalables (SVG). Antes de la versión de agosto de 2018, era posible crear contenido SVG en columnas personalizadas, pero ahora es posible crear medidas que se actualicen dinámicamente para tener en cuenta las selecciones y los filtros de los usuarios.

Para obtener detalles adicionales sobre el método, consulte esta publicación en el blog de DataVeld: Usar imágenes SVG en Power BI: Parte 3

Obtenga la fórmula de medida DAX: SVG Sparkline «Columna» en GitHub

Sustituya su propia medida en lugar de [Measure Value], una columna para ‘Tabla'[Customer Segment] para el eje categórico X, y una columna para ‘Tabla'[Category] que aparecerá en la misma fila de la tabla que el minigráfico.

Dado que el eje x es categórico, se construye y ordena usando RANKX. El ancho de la barra se encuentra dividiendo 100 por el número de categorías distintas, y las columnas se ajustan al rango de 0 a 100 al multiplicar Rango * Ancho de la barra.

El eje y es complejo debido a la necesidad de tener en cuenta una combinación de valores positivos y negativos. Si todos los valores de Y fueran positivos, el eje podría usar [Measure Value] / Máx. y sería bastante simple. En su lugar, dependiendo de la combinación de solo positivo, solo negativo y la combinación de valores negativos y positivos, se utilizan sentencias SWITCH( ) para establecer tanto el valor SVG Y como la altura de la barra.

CONCATENATEX combina los rectángulos SVG separados.

IF(HASONEVALUE(‘Tabla'[Category])[…] ayuda a ocultar el total en una tabla o matriz porque el total se representa como texto y no como una imagen.

Una vez que la medida minigráfica esté lista, establezca la Categoría de datos en URL de la imagen y agregue la medida del minigráfico a una tabla o matriz visual.

Además, cambie la variable BarColor de estática a dinámica para crear un formato de color condicional. En este ejemplo, si el % de margen no es superior al 20 %, el minigráfico debe ser gris en lugar de verde. Debido a que Firefox no representará # en SVG, sustituya %23 en lugar de # si usa colores hexadecimales.

//Note: use %23 instead of # for Firefox compatibility
VAR BarColor = IF([Margin] > 0.20,"%2301B8AA","%23BBBBBB")

Cree variables adicionales para el ancho del trazo o cualquier propiedad SVG aplicable y sustituya nuevas variables en el texto SVG según sea necesario.

jkdeepakkumar

Hola, usando esta medida, ¿es posible dar un código de color por segmento de cliente? como Consumer en color negro / Corporate en rojo / Home office en ámbar / Small Business en verde. Si es posible, ¿pueden ayudarme en este senario?

¡gracias de antemano!

Kartic21

Implementado esto en PBI. Muchas gracias.

Tengo una pregunta, ¿hay alguna manera de aumentar el tamaño/ancho de la barra sin aumentar la altura?

Lo que sucede es que el gráfico de barras aparece muy pequeño, hay un ancho de columna ancho pero el ancho de cada barra es muy pequeño.

De todos modos para aumentarlo? Gracias por adelantado. gran aprendizaje

Dracovia

Hola, he notado que si filtro la tabla para mostrar solo un registro usando una segmentación visual, los errores gráficos y pierdo toda la información dentro de la tabla. ¿Hay alguna forma de evitar esto? Funciona bien por lo demás. En una nota aparte, ¿sería posible mostrar un ejemplo del uso de un gráfico circular en lugar de un gráfico de barras?

Muchas gracias,

-Emesh

jeffreyweir

Pregunta: Una cosa que no me queda clara es si las imágenes que usan tienen que sentarse en un contenedor cuadrado en la cuadrícula. En el caso anterior, si hubiera, digamos, 8 series más, es decir, doce columnas en total, ¿es posible tener el minigráfico generado por SVG resultante sentado en una cuadrícula rectangular en lugar de una cuadrícula cuadrada, de modo que el espacio entre las filas sea exactamente el mismo? está en el archivo, dejando la imagen en el mismo tamaño que tiene actualmente? es decir, así:

7-09-2018 12-15-51 PM.jpg

jorge_oliveira

En respuesta a jeffreyweir

Hola,

Ahora que ya pasaron casi 2 años quisiera saber si la pregunta que hizo @jeffreyweir ya es posible? ¿Tiene una cuadrícula rectangular en lugar de una cuadrícula cuadrada?

lbendlin

En respuesta a jorge_oliveira

El único límite real es una altura de 150 px. En ninguna parte menciona ninguna limitación de ancho.

En respuesta a jeffreyweir

Las imágenes de la tabla y la matriz lo limitan a una cuadrícula cuadrada.

jeffreyweir

En respuesta a deldersveld

¡Tío!

Tengo entendido que MS podría cambiar esto si quisiera… simplemente no pensaron que estaríamos haciendo cosas como producir Sparklines usando medidas SVG.

Por supuesto, lo que realmente necesitamos que haga MS es implementar minigráficos de forma nativa en una Tabla/Matriz, según esta idea en el foro de Ideas.

Preferiblemente minigráficos de varias series como los que menciono en este comentario en un hilo de Excel.

Deja un comentario

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