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

304
Vistas
ChartJS: deshabilite la animación solo para el eje y

Actualmente tengo un gráfico que muestra información en tiempo real. Traté de deshabilitar la animación para el eje y, porque los puntos saltaban a lo largo del eje y, lo que crea un efecto extraño. Pero todavía quiero que los nuevos puntos se desvanezcan suavemente a lo largo del eje x.

Lo probé con esta configuración:

 const chartOptions: ChartOptions = { animations: { x: { duration: 500 }, y: false, }, // ... };

El resultado es ninguna animación en absoluto. No en el eje y, pero tampoco en el eje x. Ya no se ve suave.

Y después de 25 puntos de datos, shift()/push(newDataPoint) en una matriz separada y luego reemplazo toda la matriz de data para el gráfico mientras uso ChartJS con la biblioteca vue-chartjs.

ingrese la descripción de la imagen aquí

Necesito exactamente el mismo comportamiento que en el GIF anterior, excepto que no debe tartamudear sino desplazarse suavemente a lo largo del eje x.

Ejemplo completo de vue-chartjs para referencia

 <script setup lang="ts"> const chartData = ref<ChartData<'line'>>({ labels: [], datasets: [] }) const chartLabels: string[] = Array(maxDataPoints).fill(''); const chartDataPoints: number[] = Array(maxDataPoints).fill(18.3); function fillData() { if (chartDataPoints.length > maxDataPoints) { chartLabels.shift(); chartDataPoints.shift(); } chartLabels.push(new Date().toLocaleString()) chartDataPoints.push(Number((currentDistance.value * 0.1).toFixed(1))) const updatedChartData: ChartData<'line'> = { labels: [...chartLabels], datasets: [ { label: 'Distance', tension: 0.5, data: [...chartDataPoints], } ] } chartData.value = { ...updatedChartData } } onMounted(() => { fillData(); setInterval(() => fillData(), 500) }) const chartOptions: ChartOptions = { responsive: true, maintainAspectRatio: false, //animation: false, animations: { x: { duration: 500 }, y: false, }, scales:{ x: { display: false, }, y: { suggestedMin: 0, suggestedMax: 20, } }, plugins: { legend: { display: false }, }, } </script> <template> <LineChart :chartData="chartData" :chartOptions="chartOptions" /> </template>
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Al final, utilicé el complemento chartjs-streaming-plugin de nagix, que hace exactamente lo que estaba buscando.

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