当前位置:首页 > VUE

vue实现动态图表

2026-02-24 10:33:31VUE

使用 Vue 和 ECharts 实现动态图表

安装 ECharts 依赖

npm install echarts --save

在 Vue 组件中引入 ECharts

import * as echarts from 'echarts';

创建图表容器

<div ref="chartRef" style="width: 600px; height: 400px;"></div>

初始化图表

vue实现动态图表

export default {
  mounted() {
    this.initChart();
  },
  methods: {
    initChart() {
      const chartDom = this.$refs.chartRef;
      const myChart = echarts.init(chartDom);

      const option = {
        xAxis: {
          type: 'category',
          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
          type: 'value'
        },
        series: [{
          data: [820, 932, 901, 934, 1290, 1330, 1320],
          type: 'line'
        }]
      };

      myChart.setOption(option);
    }
  }
}

实现动态数据更新

添加定时更新数据的方法

methods: {
  // ...其他方法
  updateData() {
    const newData = Array(7).fill(0).map(() => Math.round(Math.random() * 1000));
    this.myChart.setOption({
      series: [{
        data: newData
      }]
    });
  }
},
mounted() {
  this.initChart();
  this.timer = setInterval(this.updateData, 2000);
},
beforeDestroy() {
  clearInterval(this.timer);
  this.myChart.dispose();
}

使用 Vue-ECharts 封装组件

安装 vue-echarts

vue实现动态图表

npm install vue-echarts

创建可复用的图表组件

import { use } from 'echarts/core';
import { CanvasRenderer } from 'echarts/renderers';
import { LineChart } from 'echarts/charts';
import {
  TitleComponent,
  TooltipComponent,
  LegendComponent,
  GridComponent
} from 'echarts/components';
import VChart from 'vue-echarts';

use([
  CanvasRenderer,
  LineChart,
  TitleComponent,
  TooltipComponent,
  LegendComponent,
  GridComponent
]);

export default {
  components: {
    VChart
  },
  props: {
    chartData: {
      type: Array,
      required: true
    }
  },
  computed: {
    options() {
      return {
        xAxis: {
          type: 'category',
          data: ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']
        },
        yAxis: {
          type: 'value'
        },
        series: [{
          data: this.chartData,
          type: 'line'
        }]
      };
    }
  }
};

响应式图表实现

监听窗口大小变化

mounted() {
  window.addEventListener('resize', this.handleResize);
  this.handleResize();
},
methods: {
  handleResize() {
    this.myChart && this.myChart.resize();
  }
},
beforeDestroy() {
  window.removeEventListener('resize', this.handleResize);
}

多图表类型支持

配置不同图表类型的选项

const option = {
  tooltip: {},
  legend: {
    data: ['销量']
  },
  xAxis: {
    data: ['衬衫', '羊毛衫', '雪纺衫', '裤子', '高跟鞋', '袜子']
  },
  yAxis: {},
  series: [
    {
      name: '销量',
      type: 'bar', // 可改为 'pie', 'line', 'scatter' 等
      data: [5, 20, 36, 10, 10, 20]
    }
  ]
};

标签: 图表动态
分享给朋友:

相关文章

vue实现数据动态

vue实现数据动态

Vue 实现数据动态绑定的方法 Vue.js 的核心特性之一是数据绑定,通过响应式系统实现数据的动态更新。以下是几种常见的实现方式: 双向数据绑定(v-model) 使用 v-model 指令可以实…

vue实现动态时间

vue实现动态时间

Vue 实现动态时间的常见方法 使用 setInterval 更新数据 在 Vue 组件的 data 中定义时间变量,通过 setInterval 定时更新。组件销毁时需清除定时器避免内存泄漏。 e…

vue 动态组件实现

vue 动态组件实现

vue 动态组件实现 Vue 的动态组件功能允许根据条件或用户交互动态切换不同的组件,主要通过 <component> 标签和 is 属性实现。 基本用法 通过 is 属性绑定组件名或组…

vue 实现动态菜单

vue 实现动态菜单

动态菜单的实现思路 在Vue中实现动态菜单通常涉及从后端API获取菜单数据,根据用户权限或角色动态渲染菜单项。核心思路是将菜单数据与组件分离,通过数据驱动视图。 数据准备与API交互 创建菜单数据模…

vue实现动态绘图

vue实现动态绘图

Vue 实现动态绘图的方法 使用 Canvas API 绘制动态图形 在 Vue 中可以通过 ref 获取 Canvas 元素,结合 JavaScript 的 Canvas API 实现动态绘图。创建…

vue实现动态查询

vue实现动态查询

Vue实现动态查询的方法 动态查询在Vue中通常结合输入框和列表渲染实现,核心是监听用户输入并实时过滤数据。以下是几种常见实现方式: 使用计算属性过滤数据 计算属性适合对已有数据进行过滤,依赖响应式…