vue实现统计图
Vue 实现统计图的方法
Vue 结合第三方图表库可以高效实现统计图功能,以下是常见方案和实现步骤:
使用 ECharts
ECharts 是百度开源的图表库,支持丰富的图表类型。
安装依赖:
npm install echarts vue-echarts
基础折线图示例:

<template>
<div ref="chart" style="width: 600px; height: 400px;"></div>
</template>
<script>
import * as echarts from 'echarts';
export default {
mounted() {
const chart = echarts.init(this.$refs.chart);
chart.setOption({
xAxis: { data: ['Mon', 'Tue', 'Wed'] },
yAxis: {},
series: [{ data: [820, 932, 901], type: 'line' }]
});
}
};
</script>
使用 Chart.js
轻量级图表库,适合简单需求。
安装依赖:
npm install chart.js vue-chartjs
封装柱状图组件:

<template>
<Bar :data="chartData" :options="options" />
</template>
<script>
import { Bar } from 'vue-chartjs';
import { Chart, registerables } from 'chart.js';
Chart.register(...registerables);
export default {
components: { Bar },
data() {
return {
chartData: {
labels: ['Red', 'Blue'],
datasets: [{ data: [30, 40], backgroundColor: ['#FF6384', '#36A2EB'] }]
},
options: { responsive: true }
};
}
};
</script>
使用 D3.js
适合需要高度自定义的场景,学习曲线较陡。
基础实现示例:
<template>
<svg ref="svg" width="500" height="300"></svg>
</template>
<script>
import * as d3 from 'd3';
export default {
mounted() {
const data = [10, 20, 30];
const svg = d3.select(this.$refs.svg);
svg.selectAll('circle')
.data(data)
.enter()
.append('circle')
.attr('cx', (d, i) => i * 50 + 30)
.attr('cy', 100)
.attr('r', d => d);
}
};
</script>
选择建议
- 快速开发:优先使用 ECharts 或 Chart.js
- 复杂交互:选择 D3.js
- 移动端:考虑 Chart.js 的轻量特性
所有方案均需在组件销毁时手动清理图表实例,避免内存泄漏:
beforeUnmount() {
if (this.chart) this.chart.dispose();
}






