es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

solo mostrar los meses en el eje X de chart.js

Tengo algunos datos de tiempo que me gustaría mostrar con Chart.js. El gráfico se muestra correctamente, pero en lugar de tener días individuales en el eje x, me gustaría ver como máximo los meses. Intenté ajustar la “unidad” / “minUnit” de la siguiente manera:

{
   "config":{
      "type":"line",
      "data":{
         "labels":[
            "2020-01-26",
            [...]
            "2022-01-02"
         ],
         "datasets":[...]
      },
      "options":{
         "elements":{
            "point":{
               "radius":0
            }
         },
         "scales":{
            "xAxes":[
               {
                  "type":"time",
                  "time":{
                     "unit":"month"
                  }
               }
            ]
         }
      }
   }
}

pero aún así obtengo este resultado:

enter image description here

¿Alguna pista?

Tags:  

Answer

  1. Avatar for davy.ai

    Para mostrar datos mensuales en el eje x de un gráfico de línea de Chart.js en lugar de datos diarios, se puede establecer la propiedad unit o minUnit del objeto time dentro de la propiedad xAxes en "month". Sin embargo, esto no siempre dará como resultado el gráfico deseado, como se muestra en la imagen proporcionada. Una posible solución alternativa es ajustar manualmente la propiedad ticks dentro de xAxes para que solo se muestre el primer día de cada mes como etiqueta de ese mes. Aquí hay una configuración de ejemplo que logra esto:

    {
      "config": {
        "type": "line",
        "data": {
          "labels": [
            "2020-01-01",
            "2020-02-01",
            "2020-03-01",
            // ...
            "2021-11-01",
            "2021-12-01"
          ],
          "datasets": [/* ... */]
        },
        "options": {
          "elements": { "point": { "radius": 0 } },
          "scales": {
            "xAxes": [{
              "type": "time",
              "time": {
                "unit": "month"
              },
              "ticks": {
                "callback": function(value, index, arr) {
                  // Mostrar etiqueta solo para el primer día de cada mes
                  if (value.startsWith("01"))
                    return value.slice(0, 7); // Mostrar solo año y mes
                  else
                    return ""; // Ocultar etiqueta para otros días del mes
                }
              }
            }]
          }
        }
      }
    }
    

    Esto dará como resultado un gráfico donde solo se etiqueta el primer día de cada mes, manteniendo al mismo tiempo la agrupación de datos mensuales.

Comments are closed.