Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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

Reply
Syndicate_Admin
Administrator
Administrator

Deneb visual

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ísAnimalesImporte
Gran BretañaCerdos2
Gran BretañaVacas3
Gran Bretañaoveja6
Estados UnidosCerdos6
Estados UnidosVacas7
Estados Unidosoveja1
2 REPLIES 2
Syndicate_Admin
Administrator
Administrator

@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 🙂

Syndicate_Admin
Administrator
Administrator

@Johan94,

¿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:

dmp_0-1687996140146.png

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:

dmp_1-1687996239973.png

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:

dmp_2-1687996314878.png

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

Helpful resources

Announcements
OCT PBI Update Carousel

Power BI Monthly Update - October 2024

Check out the October 2024 Power BI update to learn about new features.

September Hackathon Carousel

Microsoft Fabric & AI Learning Hackathon

Learn from experts, get hands-on experience, and win awesome prizes.

October NL Carousel

Fabric Community Update - October 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors