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

210
Vistas
Agregar función dinámicamente a Chart.js

Estoy tratando de agregar alguna función de JavaScript a Chart.js. Quiero agregarlos fuera de Options porque quiero encontrar una manera de agregarlos dinámicamente cuando los necesito en mi proyecto Blazor .

Entonces, tengo este código JavaScript donde creo un gráfico.

 var ctx = document.getElementById("myChart").getContext("2d"); var myChart = new Chart(ctx, { type: "line", data: { labels: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], datasets: [ { data: [86, 114, 106, 106, 107, 111, 133], label: "Total", borderColor: "rgb(62,149,205)", backgroundColor: "rgb(62,149,205,0.1)" }, { data: [70, 90, 44, 60, 83, 90, 100], label: "Accepted", borderColor: "rgb(60,186,159)", backgroundColor: "rgb(60,186,159,0.1)" }, { data: [10, 21, 60, 44, 17, 21, 17], label: "Pending", borderColor: "rgb(255,165,0)", backgroundColor: "rgb(255,165,0,0.1)" }, { data: [6, 3, 2, 2, 7, 0, 16], label: "Rejected", borderColor: "rgb(196,88,80)", backgroundColor: "rgb(196,88,80,0.1)" } ] } }); myChart.data.labels.push('June'); myChart.options.plugins.legend.onClick = function (e, legendItem, legend) { console.log('legend click'); console.log(legendItem); }; myChart.options.elements.line.backgroundColor = function (ctx) { console.log('line backgroundColor'); return '#000000'; }; myChart.update();
 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.6.2/chart.min.js"></script> <canvas id="myChart" width="500" height="150"></canvas>

Al final del script, puedo agregar una nueva etiqueta con push , agregar onClick para la leyenda... pero no puedo agregar una función para un elemento específico, por ejemplo, agregar un degradado a una línea

 const data = { labels: labels, datasets: [ { label: 'Dataset 1', data: myData, borderColor: function(context) { const chart = context.chart; const {ctx, chartArea} = chart; if (!chartArea) { return; } return getGradient(ctx, chartArea); }, }, ] };
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

La función funciona, pero le falta la configuración, en V3, los gráficos de líneas predeterminados ya no se llenan, por lo que deberá establecer el fill en verdadero, también la propiedad de fondo del conjunto de datos anula la establecida en la parte de elementos, por lo que deberá cambiar el nombre de backgroundColor a pointBackgroundColor si quieres que los puntos tengan ese color, entonces funciona bien:

 var ctx = document.getElementById("myChart").getContext("2d"); var myChart = new Chart(ctx, { type: "line", data: { labels: [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], datasets: [{ data: [86, 114, 106, 106, 107, 111, 133], label: "Total", borderColor: "rgb(62,149,205)", pointBackgroundColor: "rgb(62,149,205,0.1)", fill: true }, { data: [70, 90, 44, 60, 83, 90, 100], label: "Accepted", borderColor: "rgb(60,186,159)", pointBackgroundColor: "rgb(60,186,159,0.1)", fill: true }, { data: [10, 21, 60, 44, 17, 21, 17], label: "Pending", borderColor: "rgb(255,165,0)", pointBackgroundColor: "rgb(255,165,0,0.1)", fill: true }, { data: [6, 3, 2, 2, 7, 0, 16], label: "Rejected", borderColor: "rgb(196,88,80)", pointBackgroundColor: "rgb(196,88,80,0.1)", fill: true } ] }, }); myChart.data.labels.push('June'); myChart.options.plugins.legend.onClick = function(e, legendItem, legend) { console.log('legend click'); console.log(legendItem); }; myChart.options.elements.line.backgroundColor = function(ctx) { return '#000000'; }; myChart.update();
 <script src="https://cdnjs.cloudflare.com/ajax/libs/Chart.js/3.6.2/chart.min.js"></script> <canvas id="myChart" width="500" height="150"></canvas>

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