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

270
Vistas
Cargue datos de axios en vue apexcharts

Como título, estoy tratando de cargar datos de Axios en Vue apexcharts (gráfico de líneas) usando vue2. He leído el documento de Apexcharts, pero todavía no puedo entender cómo pasar los datos al gráfico. Me gustaría tener la fecha como eje x y otras como valores en el gráfico de líneas.

Además, revisé vue devtools, ¿parece que los datos se pasan con éxito?

Mi formato de datos es así:

 follower = [ { date: '2021-11-10', follower: 2000, following: 500, media: 150 } { date: '2021-11-11', follower: 2000, following: 500, media: 150 } ]

Inicialización de mi gráfico:

 <template> <apexchart ref="sample" width="500" type="area" :options="chartOptions" :series="series" > </apexchart> </template> export default { name: "FollowerLineApex", components: { apexcharts: VueApexCharts, }, data: function() { return { series: [{ name: 'test', data: [] }], chartOptions: { chart: { height: 350, type: 'area', }, dataLabels: { enabled: true }, title: { text: 'Example-1', }, xaxis: { type: "datetime" }, } }

},

A continuación se muestra mi código en la parte de Axios:

 created: function () { this.getData() }, methods: { getData() { this.$axios.get('/api/') .then(res => { this.series = [{ data: res.data["follower"] }] console.log(this.series) this.$refs.sample.updateOptions({ series: [{ data: this.series }] }) }) .catch(err => { console.log(err); }) } },
about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Tus datos no están formateados correctamente. Debe formatear los datos que obtiene de su API antes de pasarlos a la serie de su gráfico. Su gráfico de eje x de datetime y hora debe formatearse como una matriz de coordenadas x, y. Descrito aquí https://apexcharts.com/docs/series/

Ejemplo:

 [ { x: 10, y: 20, }, { x: 100, y: 50, }, ]

Ejemplo de sandbox de trabajo

https://codesandbox.io/s/vue-basic-example-forked-r26j6?file=/src/components/Chart.component.vue

 <template> <div class="app"> <apexcharts width="500" height="350" type="area" :options="chartOptions" :series="series" ></apexcharts> </div> </template> <script> import VueApexCharts from "vue-apexcharts"; export default { name: "Chart", components: { apexcharts: VueApexCharts, }, data: function () { return { follower: [ { date: "2021-11-10", follower: 2000, following: 500, media: 150, }, { date: "2021-11-11", follower: 2000, following: 500, media: 30, }, ], series: [ { name: "test", data: [], }, ], chartOptions: { chart: { height: 350, type: "area", }, dataLabels: { enabled: true, }, title: { text: "Example-1", }, xaxis: { type: "datetime", }, }, }; }, created: function () { this.getData(); }, methods: { getData() { // TODO Axios to get data here. // Format data correctly let formattedData = this.follower.map((e, i) => { return { x: e.date, y: e.media, }; }); // update the series with axios data this.series = [ { name: "test", data: formattedData, }, ]; }, }, }; </script>
about 4 years ago · Juan Pablo Isaza Denunciar

0

Ha registrado el componente VueApexCharts como apexcharts (plural), por lo que debería usar <apexcharts> (plural) en su plantilla o registrarlo como apexchart ...

 components: { apexchart: VueApexCharts }

Según la documentación , no necesita llamar manualmente a updateOptions ...

Actualizar los datos de su gráfico Vue es simple. Solo tiene que actualizar los accesorios de la serie que pasa al componente <apexchart> y activará automáticamente el evento para actualizar el gráfico.

Sin embargo, lo que debe hacer es formatear los datos en algo que el gráfico pueda usar

 data: () => ({ followerData: [], chartOptions: { /* same as you already have */ } }), computed: { // compute series data from you API results series: ({ followerData }) => { const series = followerData.reduce((map, { date, ...points }) => { Object.entries(points).forEach(([ name, point ]) => { const s = (map.has(name) ? map : map.set(name, [])).get(name) s.push({ x: date, y: point }) }) return map }, new Map()) return Array.from(series.entries(), ([ name, data ]) => ({ name, data })) } }, methods: { async getData() { const { data } = await this.$axios.get("/api/") this.followerData = data } }, created () { this.getData() }
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