Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

252
Vistas
Chart JS cómo mostrar una matriz de objetos de datos como gráfico de barras

Quiero mostrar un gráfico de barras: cada barra es un usuario/estudiante. Y para cada estudiante, habrá una etiqueta xAxis que muestra el nombre del estudiante.

El siguiente código es una propiedad computada de VueJS y se llama chartData

Mi matriz de datos para el gráfico de barras es una matriz de objetos. Así es como lo genero

 let dataRow = this.responses.map((d) => { return { label: d.user.name, data: [d.grade], } });

Así es como genero mis etiquetas

 let users = []; this.responses.map((d) => { users.push(d.user.name) });

Luego vuelvo al objeto con una matriz de etiquetas y conjuntos de datos, siendo los datos una matriz de objetos

 return { labels: users, datasets: [{ data: dataRow }], }

Así es como represento el gráfico:

 { extends: Bar, props: ["chartdata"], data() { return { options: { responsive: true, maintainAspectRatio: false, scales: { yAxes: [{ ticks: { beginAtZero: true, max: 100 } }], }, } } }, mounted() { this.renderChart(this.chartdata, this.options) } }

Problema: No aparece nada y no hay errores

El gráfico de barras solo parece funcionar cuando los datos en los conjuntos de datos no son una matriz de objetos como:

 testData: { labels: ['test', 'test', 'test'], datasets: [{ data: [65, 59, 80], }] }

Después del comentario de Sayf-Eddine, logré lograr esto:

ingrese la descripción de la imagen aquí

Cambié la forma en que devolví los datos del gráfico como:

 return { labels: users, datasets: dataRow }

Sin embargo, todas las barras se asignan a la primera etiqueta.

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Después del comentario de Vitaliy Rayets, descubrí qué estaba mal.

Necesitaba devolver la fila de datos como:

 let dataRow = this.responses.map((d) => { return { label: d.user.name, y: [d.grade], } });

**Cambié la propiedad 'datos' a 'y' **

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda