Get certified in Microsoft Fabric—for free! For a limited time, the Microsoft Fabric Community team will be offering free DP-600 exam vouchers. Prepare now
Hola a todos,
Tengo el siguiente código Deneb:
{ "$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"config": {
"ver": {
"trazo": ""
}
},
"ancho": 220,
"altura": 55,
"datos": {
"nombre": "conjunto de datos"
},
"transformar": [
{
"calculate": "{'vacas': '', 'cerdos': '', 'ovejas': ''}[datum['Animales'🐄 🐖 🐏]]",
"as": "emoji"
},
{
"ventana": [
{
"op": "rango",
"as": "rango"
}
],
"groupby": ["País", "Animales"]
}
],
"marca": {
"tipo": "texto",
"línea base": "medio"
},
"codificación": {
"x": {
"field": "Importe",
"tipo": "ordinal",
"eje": verdadero
},
"y": {
"campo": "Animales",
"agregado": "nulo",
"tipo": "nominal",
"eje": nulo,
"sort": null
},
"fila": {
"field": "País",
"encabezado": {
"título": ""
}
},
"texto": {
"campo": "emoji",
"tipo": "nominal"
},
"tamaño": {
"valor": 20
}
}
}
Muestra el animal bajo la cantidad correcta (Gran Bretaña y ovejas; se muestra en menos de 6 en el eje x). Pero quiero mostrar 6 ovejas. Y esto para todos los animales en los dos países. ¿De qué manera se debe cambiar el código para que esto sea visible?
Espero que alguien pueda ayudarme con esto.
La tabla es la siguiente:
País | Animales | Importe |
Gran Bretaña | Cerdos | 2 |
Gran Bretaña | Vacas | 3 |
Gran Bretaña | oveja | 6 |
Estados Unidos | Cerdos | 6 |
Estados Unidos | Vacas | 7 |
Estados Unidos | oveja | 1 |
@dm-p
¡Muchas gracias por la extensa explicación! Esto me ayuda mucho a aprender a aplicar imágenes en Deneb. Estoy muy agradecido por esto 🙂
¿Parece que estás tratando de replicar el ejemplo de Isotype Dot Plot with Emoji ? En este caso, el conjunto de datos tiene las filas necesarias para generar las marcas. Si está trabajando con datos agregados, deberá realizar un par de cambios para agregar las filas durante la fase de transformación. Esto se puede hacer de la siguiente manera:
Paso 1 - Columna calculada con secuencia basada en Cantidad
Utilice una transformación de cálculo y una expresión de secuencia para crear una matriz de valores de 1 a Cantidad, por ejemplo:
{
...
"transform": [
{
"calculate": "{'cows': '🐄', 'pigs': '🐖', 'sheep': '🐏'}[datum['Animals']]",
"as": "emoji"
},
{
"calculate": "sequence(1, datum['Amount'] + 1, 1)",
"as": "animal_row"
}
],
...
}
Después de este paso, Vega-Lite creará un nuevo flujo de datos llamado data_0, que tendrá un aspecto similar al siguiente:
Paso 2: acoplar la matriz para crear n filas por grupo
Ahora, usaremos la transformada plana para convertir esto en filas adicionales para las marcas, por ejemplo:
{
...
"transform": [
{
"calculate": "{'cows': '🐄', 'pigs': '🐖', 'sheep': '🐏'}[datum['Animals']]",
"as": "emoji"
},
{
"calculate": "sequence(1, datum['Amount'] + 1, 1)",
"as": "animal_row"
},
{
"flatten": ["animal_row"]
}
],
...
}
Su secuencia data_0 ahora tendrá una fila por valor en la matriz de animal_row:
Tenga en cuenta que no necesitará la transformación de rango , ya que los pasos anteriores crean la secuencia por grupo que se estaba realizando en el ejemplo.
Paso 3 - Cambios de codificación
Cambie el canal de codificación x para utilizar el campo animal_row, por ejemplo:
{
...
"encoding": {
"x": {
"field": "animal_row",
"type": "ordinal",
"axis": null
},
...
}
}
El objeto visual representado debe ser similar al siguiente:
Receta completa
Aquí está toda la especificación (con algunas de las partes que causaron advertencias eliminadas también):
{
"$schema": "https://vega.github.io/schema/vega-lite/v5.json",
"config": {"view": {"stroke": ""}},
"width": 220,
"height": 80,
"data": {"name": "dataset"},
"transform": [
{
"calculate": "{'cows': '🐄', 'pigs': '🐖', 'sheep': '🐏'}[datum['Animals']]",
"as": "emoji"
},
{
"calculate": "sequence(1, datum['Amount'] + 1, 1)",
"as": "animal_row"
},
{"flatten": ["animal_row"]}
],
"mark": {
"type": "text",
"baseline": "middle"
},
"encoding": {
"x": {
"field": "animal_row",
"type": "ordinal",
"axis": null
},
"y": {
"field": "Animals",
"type": "nominal",
"axis": null,
"sort": null
},
"row": {
"field": "Country",
"header": {"title": ""}
},
"text": {
"field": "emoji",
"type": "nominal"
},
"size": {"value": 20}
}
}
También he adjuntado un .pbix para que lo tengas para confirmar y / o jugar según sea necesario.
¡Buena suerte (y gracias por probar Deneb)!
Daniel
Check out the October 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.