PlátanoBanano
Hola, me gustaría generar colores hexadecimales aleatorios en una tabla de películas que he extraído de una lista de sesiones (una tabla diferente). ¿Hay alguna manera de crear una columna calculada con valores de color hexadecimal aleatorios?
Puntos de bonificación si hay una manera de hacerlo uniformemente a través del arco iris usando el número total de películas en la tabla?
¡Gracias!
v-shex-msft
En respuesta a PlátanoBanano
Hola @BananaBanana,
Debe estar relacionado con la evaluación diferida de funciones aleatorias, que parecen calcular sólo una vez cuando se utilizan en la columna calculada. Puede intentar usar la siguiente fórmula que agregue algún truco para que sea dinámico en cada fila:
RandomColor =
VAR cR =
RANDBETWEEN ( [Value] - [Value], 255 )
VAR cG =
RANDBETWEEN ( [Value] - [Value], 255 )
VAR cB =
RANDBETWEEN ( [Value] - [Value], 255 )
VAR RedP0 =
MOD ( cR, 16 )
VAR RedP1 =
MOD ( INT ( cR / 16 ), 16 )
VAR GreenP0 =
MOD ( cG, 16 )
VAR GreenP1 =
MOD ( INT ( cG / 16 ), 16 )
VAR BlueP0 =
MOD ( cB, 16 )
VAR BlueP1 =
MOD ( INT ( cB / 16 ), 16 )
VAR hexTable =
ADDCOLUMNS (
{ RedP1, RedP0, GreenP1, GreenP0, BlueP1, BlueP0 },
"Hex", SWITCH (
[Value],
10, "A",
11, "B",
12, "C",
13, "D",
14, "E",
15, "F",
[Value]
)
)
RETURN
"https://community.powerbi.com/t5/Translated-Spanish-Desktop/Crear-columna-calculada-en-DAX-para-colores-hexadecimales/td-p/#" & CONCATENATEX ( hexTable, [Hex], "" )
saludos
Xiaoxin Sheng
PlátanoBanano
Así que lo hice para trabajar, pero es bastante torpe – me encantaría una mejor solution.
Creé una tabla llamada AlternativeBases y la he rellenado con una columna decimal con los números 10-25 y una columna hexadecimal con los valores 0 a F.
Esto se debe a que estoy usando la función MID para extraer los valores de color decimal y no sé cómo hacerlo para valores de menos de 2 dígitos, así que cambié todo por 10.
En mi tabla de películas he creado dos columnas, una columna DecColor con el siguiente DAX *:
DecColor = RANDBETWEEN(16,25) & RANDBETWEEN(16,25) & RANDBETWEEN(16,25) & RANDBETWEEN(16,25) & RANDBETWEEN(16,25) & RANDBETWEEN(16,25)
* Sólo utilicé valores entre 16 y 25 por lo que mi color sería más claro porque el texto anterior es negro.
Y una columna HexColor con el siguiente DAX:
HexColor = "https://community.powerbi.com/t5/Translated-Spanish-Desktop/Crear-columna-calculada-en-DAX-para-colores-hexadecimales/td-p/#" & LOOKUPVALUE(AlternativeBases[Hexadecimal],AlternativeBases[Decimal],value(mid(FilmList[DecColor],1,2))) & LOOKUPVALUE(AlternativeBases[Hexadecimal],AlternativeBases[Decimal],value(mid(FilmList[DecColor],3,2)))& LOOKUPVALUE(AlternativeBases[Hexadecimal],AlternativeBases[Decimal],value(mid(FilmList[DecColor],5,2)))& LOOKUPVALUE(AlternativeBases[Hexadecimal],AlternativeBases[Decimal],value(mid(FilmList[DecColor],7,2)))& LOOKUPVALUE(AlternativeBases[Hexadecimal],AlternativeBases[Decimal],value(mid(FilmList[DecColor],9,2)))& LOOKUPVALUE(AlternativeBases[Hexadecimal],AlternativeBases[Decimal],value(mid(FilmList[DecColor],11,2)))
Eso funciona bien, pero no es bonito.
v-shex-msft
hola @BananaBanana,
Puede utilizar la siguiente fórmula DAX para generar un color hexadecimal aleatorio:
RandomColor =
VAR cR =
RANDBETWEEN ( 0, 255 )
VAR cG =
RANDBETWEEN ( 0, 255 )
VAR cB =
RANDBETWEEN ( 0, 255 )
VAR RedP0 =
MOD ( cR, 16 )
VAR RedP1 =
MOD ( INT ( cR / 16 ), 16 )
VAR GreenP0 =
MOD ( cG, 16 )
VAR GreenP1 =
MOD ( INT ( cG / 16 ), 16 )
VAR BlueP0 =
MOD ( cB, 16 )
VAR BlueP1 =
MOD ( INT ( cB / 16 ), 16 )
VAR hexTable =
ADDCOLUMNS (
{ RedP1, RedP0, GreenP1, GreenP0, BlueP1, BlueP0 },
"Hex", SWITCH (
[Value],
10, "A",
11, "B",
12, "C",
13, "D",
14, "E",
15, "F",
[Value]
)
)
RETURN
"https://community.powerbi.com/t5/Translated-Spanish-Desktop/Crear-columna-calculada-en-DAX-para-colores-hexadecimales/td-p/#" & CONCATENATEX ( hexTable, [Hex], "" )
saludos
Xiaoxin Sheng
PlátanoBanano
En respuesta a v-shex-msft
Muchas gracias por la respuesta.
¡Eso es tan extraño! Claramente funciona en su captura de pantalla, pero en mi modelo se repite el mismo código hexadecimal todo el camino hasta la columna:
v-shex-msft
En respuesta a PlátanoBanano
Hola @BananaBanana,
Debe estar relacionado con la evaluación diferida de funciones aleatorias, que parecen calcular sólo una vez cuando se utilizan en la columna calculada. Puede intentar usar la siguiente fórmula que agregue algún truco para que sea dinámico en cada fila:
RandomColor =
VAR cR =
RANDBETWEEN ( [Value] - [Value], 255 )
VAR cG =
RANDBETWEEN ( [Value] - [Value], 255 )
VAR cB =
RANDBETWEEN ( [Value] - [Value], 255 )
VAR RedP0 =
MOD ( cR, 16 )
VAR RedP1 =
MOD ( INT ( cR / 16 ), 16 )
VAR GreenP0 =
MOD ( cG, 16 )
VAR GreenP1 =
MOD ( INT ( cG / 16 ), 16 )
VAR BlueP0 =
MOD ( cB, 16 )
VAR BlueP1 =
MOD ( INT ( cB / 16 ), 16 )
VAR hexTable =
ADDCOLUMNS (
{ RedP1, RedP0, GreenP1, GreenP0, BlueP1, BlueP0 },
"Hex", SWITCH (
[Value],
10, "A",
11, "B",
12, "C",
13, "D",
14, "E",
15, "F",
[Value]
)
)
RETURN
"https://community.powerbi.com/t5/Translated-Spanish-Desktop/Crear-columna-calculada-en-DAX-para-colores-hexadecimales/td-p/#" & CONCATENATEX ( hexTable, [Hex], "" )
saludos
Xiaoxin Sheng
PlátanoBanano
En respuesta a v-shex-msft
Se produce un error «La columna ‘Valor’ no se puede encontrar o no se puede utilizar en esta expresión»
RANDBETWEEN ( [Valor] - [Valor], 255 )
v-shex-msft
En respuesta a PlátanoBanano
Hola @BananaBanana,
Sustituya [valor] a sus campos que tenga un valor numérico único. (por ejemplo, campo de índice o ID)
saludos
Xiaoxin Sheng
PlátanoBanano
En respuesta a v-shex-msft
Aaaah que lo arregló – duh. Él terminó usando [value] – [value] + 50 para mantener los colores más claros y evitar tener fondos oscuros con texto oscuro.
¡Muchas gracias! Ese es un buen truco usando el índice para forzar la generación del número aleatorio. ¿Crees que es un bicho?
Amitchandak
@BananaBanana, no está claro con la necesidad de Random
recomienda
https: //radacad.com/dax-and-conditional-formatting-better-juntos-find-the-biggest-and-smallest-num …
http://officeusers.blogspot.com/2019/04/dax-using-colors-names-instead-of-hex.html
harshnathani
Hola @BananaBanana,
https: //community.powerbi.com/t5/Desktop/Stablished-randoms-and-different-colors-for-charts-values/t …
https://community.powerbi.com/t5/Desktop/Random-color-in-column-chart/td-p/631060
https://community.powerbi.com/t5/Desktop/Dynamically-changing-colors-in-Bar-chart/td-p/613529
saludos
Áspero Nathani
Apreciar con un Kudos !! (Haga clic en el botón Pulgares arriba)
¿He respondido a tu pregunta? ¡Marca mi puesto como una solución!