Me gustaría preguntar si es posible usar Chart.js mostrar valores de datos? Quiero imprimir el gráfico.
Gracias por cualquier consejo.
javascript
chart.js
FuSsA
fuente
fuente
Respuestas:
Edición tardía: hay un complemento oficial para Chart.js
2.7.0+
para hacer esto: https://github.com/chartjs/chartjs-plugin-datalabelsRespuesta original:
Puede recorrer los puntos / barras enAnimationComplete y mostrar los valores
Avance
HTML
Guión
Fiddle - http://jsfiddle.net/uh9vw0ao/
fuente
onComplete
devolución de llamada aquí, pero también se activa cuando el mouse se encuentra en la barra del gráfico, lo que hace que el número parpadee debido a que se vuelve a dibujar. ¿Sería igual sionAnimationComplete
? No puedo usar esta devolución de llamada con mi código de gráfico existente (vervar chartBar
en la parte inferior pastebin.com/tT7yTkGh )Aquí hay una versión actualizada para Chart.js 2.3
23 de septiembre de 2016: Edité mi código para que funcione con v2.3 tanto para el tipo de línea como de barra.
Importante: incluso si no necesita la animación, no cambie la opción de duración a 0, de lo contrario obtendrá chartInstance.controller es un error indefinido .
fuente
Esta opción de animación funciona para 2.1.3 en un gráfico de barras.
Respuesta de @Ross ligeramente modificada
fuente
hover: {animationDuration: 0}
para detener la animación de las etiquetas al pasar el.filter(dataset => !dataset._meta[0].hidden)
Creo que la mejor opción para hacer esto en chartJS v2.x es usar un complemento, por lo que no tiene un gran bloque de código en las opciones. Además, evita que los datos desaparezcan al pasar el cursor sobre una barra.
Es decir, simplemente use este código, que registra un complemento que agrega el texto después de que se dibuja el gráfico.
fuente
Chart.defaults.global.tooltips.enabled = false;
. El problema con esa solución es que laafterDraw
función se llama cientos de veces, probablemente generando una sobrecarga de CPU. Aún así, es la única respuesta por ahora sin parpadeos. Si necesita una mejor representación parahorizontalBar
gráficos, usectx.textAlign = 'left'; ctx.textBaseline = 'middle';
yctx.fillText(dataset.data[i], model.x+5, model.y);
.Según la respuesta de @ Ross para Chart.js 2.0 y superior, tuve que incluir un pequeño ajuste para protegerme contra el caso en que las alturas de la barra también se eligieron en el límite de la escala.
El
animation
atributo de la opción del gráfico de barras:fuente
ctx.save()
al final, pero no ayudóonComplete
devolución de llamada se ejecuta cuando coloqué el cursor sobre la barra, lo que hace que el redibujo y el texto parezca parpadear. ¿Sería lo mismo con estoonAnimationComplete
también? No puedo usar laonAnimationComplete
devolución de llamada con mi código existente (vervar chartBar
en la parte inferior de pastebin. com / tT7yTkGhSi está utilizando el complemento chartjs-plugin-datalabels , el siguiente objeto de opciones de código le ayudará
Asegúrese de importar
import 'chartjs-plugin-datalabels';
en su archivo mecanografiado o agregar una referencia<script src="chartjs-plugin-datalabels.js"></script>
en su archivo javascript.fuente
Siguiendo esta buena respuesta , usaría estas opciones para un gráfico de barras:
Esto todavía utiliza el sistema de información sobre herramientas y sus ventajas (posicionamiento automático, plantillas, ...) pero ocultando las decoraciones (color de fondo, símbolo de intercalación, ...)
fuente
this.datasets[0].points
lugar de.bars
. Prefiero esta solución porque utiliza el sistema de información sobre herramientas.onComplete
devolución de llamada de las animaciones, pero se activa incluso cuando se pasa sobre las barras del gráfico, lo que hace que el texto se vuelva a dibujar y dé un efecto de parpadeo no deseado. También lo intentéafterDraw
y es todo lo mismo. no sucede en el violín proporcionado por peladuras de papa. ¿Alguna idea por favor?De las muestras de chart.js (archivo Chart.js-2.4.0 / samples / data_labelling.html):
`` `// Defina un complemento para proporcionar etiquetas de datos
''
fuente
Recomendaría usar este complemento: https://github.com/chartjs/chartjs-plugin-datalabels
Las etiquetas se pueden agregar a sus gráficos simplemente importando el complemento al archivo js, por ejemplo:
Y se puede ajustar con estos documentos: https://chartjs-plugin-datalabels.netlify.com/options.html
fuente
Editado un poco la respuesta de @ ajhuddy. Solo para gráficos de barras . Mi versión agrega:
Desventaja: al pasar el cursor sobre una barra que tiene un valor en su interior, el valor puede verse un poco irregular. No he encontrado una solución para desactivar los efectos de desplazamiento. También podría necesitar ajustes dependiendo de su propia configuración.
Configuración:
Ayudantes:
fuente
calculateTickRotation
, está dentro de la función Scale. Yo lo analizaré.Según mi experiencia, una vez que incluye el complemento chartjs-plugin-datalabels (asegúrese de colocar la
<script>
etiqueta después de la etiqueta chart.js en su página), sus gráficos comienzan a mostrar valores.Si elige, puede personalizarlo para que se ajuste a sus necesidades. La personalización está claramente documentada aquí, pero básicamente, el formato es como este ejemplo hipotético:
fuente