Cómo renderizar texto dentro del gráfico de anillos, estoy usando ChartJs .
javascript
chart.js
shashisp
fuente
fuente
Ninguna de las otras respuestas cambia el tamaño del texto según la cantidad de texto y el tamaño de la dona. Aquí hay un pequeño script que puede usar para colocar dinámicamente cualquier cantidad de texto en el medio, y automáticamente lo redimensionará.
Ejemplo: http://jsfiddle.net/kdvuxbtj/
Se necesitará cualquier cantidad de texto en el tamaño de la rosquilla perfecto para la rosquilla. Para evitar tocar los bordes, puede establecer un acolchado lateral como un porcentaje del diámetro del interior del círculo. Si no lo configura, el valor predeterminado será 20. También puede especificar el color, la fuente y el texto. El complemento se encarga del resto.
El código del complemento comenzará con un tamaño de fuente base de 30 px. A partir de ahí, comprobará el ancho del texto y lo comparará con el radio del círculo y lo redimensionará en función de la proporción de ancho del círculo / texto.
Tiene un tamaño de fuente mínimo predeterminado de 20px. Si el texto excede los límites del tamaño de fuente mínimo, se ajustará al texto. La altura de línea predeterminada al envolver el texto es de 25 px, pero puede cambiarla. Si establece el tamaño de fuente mínimo predeterminado en falso, el texto se volverá infinitamente pequeño y no se ajustará.
También tiene un tamaño de fuente máximo predeterminado de 75 px en caso de que no haya suficiente texto y las letras sean demasiado grandes.
Este es el código del complemento
Y usa las siguientes opciones en su objeto gráfico
Crédito a Gracias @Jenna Sloan por su ayuda con las matemáticas utilizadas en esta solución.
fuente
Aquí se muestra un ejemplo limpio y combinado de las soluciones anteriores: sensible (intente cambiar el tamaño de la ventana), admite animación de alineación automática, admite información sobre herramientas
https://jsfiddle.net/cmyker/u6rr5moq/
ACTUALIZACIÓN 17.06.16:
Misma funcionalidad pero para la versión 2 de chart.js:
https://jsfiddle.net/cmyker/ooxdL2vj/
fuente
Uncaught TypeError: Cannot read property 'extend' of undefined
alguna idea?Evitaría modificar el código chart.js para lograr esto, ya que es bastante fácil con CSS y HTML normales. Esta es mi solución:
HTML:
CSS:
La salida se ve así:
fuente
Esto también está funcionando a mi fin ...
fuente
Basado en la respuesta de @ rap-2-h, aquí el código para usar texto en el gráfico de anillos en Chart.js para usar en el tablero como. Tiene un tamaño de fuente dinámico para una opción receptiva.
HTML:
Guión:
Aquí el código de muestra. Intente cambiar el tamaño de la ventana. http://jsbin.com/wapono/13/edit
fuente
Puede usar css con posicionamiento relativo / absoluto si desea que responda. Además, puede manejar fácilmente la multilínea.
https://jsfiddle.net/mgyp0jkk/
fuente
Esto se basa en la actualización de Cmyker para Chart.js 2. (publicado como otra respuesta porque aún no puedo comentar)
Tuve un problema con la alineación del texto en Chrome cuando se muestra la leyenda, ya que la altura del gráfico no incluye esto, por lo que no está alineada correctamente en el medio. Se corrigió esto teniendo en cuenta esto en el cálculo de fontSize y textY.
Calculé el porcentaje dentro del método en lugar de un valor establecido, ya que tengo varios de estos en la página. Las suposiciones son que su gráfico solo tiene 2 valores (de lo contrario, ¿cuál es el porcentaje? Y que el primero es el que desea mostrar el porcentaje. También tengo un montón de otros gráficos, así que verifico el tipo = donut. Solo estoy usando donas para mostrar porcentajes, por lo que me funciona.
El color del texto parece un poco impredecible dependiendo del orden en el que se ejecutan las cosas, etc., así que me encontré con un problema al cambiar el tamaño de que el texto cambiaría de color (entre el negro y el color primario en un caso, y el color secundario y el blanco en otro). "Guardo" el estilo de relleno existente, dibujo el texto (en el color de los datos primarios) y luego restauro el estilo de relleno anterior. (No parece necesario preservar el estilo de relleno anterior, pero nunca se sabe).
https://jsfiddle.net/g733tj8h/
Mostrar fragmento de código
fuente
También puede pegar el código de mayankcpdixit en la
onAnimationComplete
opción:El texto se mostrará después de la animación.
fuente
save
métodoCreo una demostración con 7 jQueryUI Slider y ChartJs (con texto dinámico adentro)
DEMO EN JSFIDDLE
fuente
La respuesta de @ rap-2-h y @Ztuons Ch no permite que la
showTooltips
opción esté activa, pero lo que puede hacer es crear y superponer un segundocanvas
objeto detrás del que representa el gráfico.La parte importante es el estilo requerido en los divs y para el objeto de lienzo en sí, de modo que se representen uno encima del otro.
Aquí está el jsfiddle: https://jsfiddle.net/68vxqyak/1/
fuente
@Cmyker, gran solución para chart.js v2
Una pequeña mejora: tiene sentido verificar el ID de lienzo apropiado, consulte el fragmento modificado a continuación. De lo contrario, el texto (es decir, el 75%) también se representa en medio de otros tipos de gráficos dentro de la página.
Dado que una leyenda (ver: http://www.chartjs.org/docs/latest/configuration/legend.html ) aumenta la altura del gráfico, el valor de la altura debe obtenerse por el radio.
fuente
Primero que nada, ¡felicitaciones por elegir Chart.js! Lo estoy usando en uno de mis proyectos actuales y me encanta, hace el trabajo perfectamente.
Aunque las etiquetas / información sobre herramientas aún no forman parte de la biblioteca, es posible que desee echar un vistazo a estas tres solicitudes de extracción:
Y, como Cracker0dks mencionó, Chart.js usos
canvas
para renderizar, por lo que también puede implementar sus propias sugerencias interactuando con él directamente.Espero que esto ayude.
fuente
La solución de Alesana funciona muy bien para mí en general, pero como otras, quería poder especificar dónde ocurren los saltos de línea. Hice algunas modificaciones simples para ajustar líneas en caracteres '\ n', siempre que el texto ya se esté ajustando. Una solución más completa forzaría el ajuste si hay caracteres '\ n' en el texto, pero no tengo tiempo en este momento para hacer que eso funcione con el tamaño de la fuente. El cambio también se centra un poco mejor horizontalmente al envolver (evita espacios finales). El código está a continuación (todavía no puedo publicar comentarios).
Sería genial si alguien pusiera este complemento en GitHub ...
fuente