Vue + ECharts 数据可视化实战:从小程序到大屏的图表解决方案
本文将带您掌握在 Vue 项目中集成 ECharts 实现柱状图、饼图、曲线图、水波图、地图五大核心图表的方法。所有代码示例均为完整可运行的 Vue 单文件组件,适配多端场景(小程序/H5/大屏)。
一、环境准备
# 安装依赖
npm install echarts vue-echarts
// main.js 全局引入
import VueECharts from 'vue-echarts'
import 'echarts'
Vue.component('v-chart', VueECharts)
二、核心图表实现
1. 柱状图(销量对比)
<template>
<v-chart :option="barOption" autoresize/>
</template>
<script>
export default {
data() {
return {
barOption: {
title: { text: '月度销量对比', left: 'center' },
tooltip: { trigger: 'axis' },
xAxis: {
type: 'category',
data: ['1月', '2月', '3月', '4月', '5月']
},
yAxis: { type: 'value' },
series: [{
name: '销售额',
type: 'bar',
data: [125, 230, 184, 278, 310],
itemStyle: { color: '#5470c6' }
}]
}
}
}
}
</script>
效果:
2. 饼图(市场份额)
<template>
<v-chart :option="pieOption" style="height:400px"/>
</template>
<script>
export default {
data() {
return {
pieOption: {
tooltip: { trigger: 'item' },
legend: { orient: 'vertical', right: 10 },
series: [{
type: 'pie',
radius: '60%',
data: [
{ value: 335, name: '产品A' },
{ value: 234, name: '产品B' },
{ value: 154, name: '产品C' }
],
emphasis: {
itemStyle: { shadowBlur: 10 }
}
}]
}
}
}
}
</script>
效果:
3. 曲线图(温度变化)
<template>
<v-chart :option="lineOption" autoresize/>
</template>
<script>
export default {
data() {
return {
lineOption: {
title: { text: '24小时温度变化', left: 'center' },
tooltip: { trigger: 'item' },
xAxis: {
type: 'category',
data: Array.from({length:24}, (_,i)=> `${i}:00`)
},
yAxis: { type: 'value' },
series: [{
data: [22, 19, 18, 16, 15, 17, 20, 25, 28, 30, 32, 33,
34, 33, 31, 29, 27, 25, 23, 21, 20, 19, 18, 17],
type: 'line',
smooth: true,
lineStyle: { width: 4 }
}]
}
}
}
}
</script>
效果:
4. 水波图(完成率)
<template>
<v-chart :option="liquidOption" style="height:300px"/>
</template>
<script>
import 'echarts-liquidfill'
export default {
data() {
return {
liquidOption: {
series: [{
type: 'liquidFill',
data: [0.68],
radius: '70%',
outline: { show: false },
backgroundStyle: { color: 'rgba(200, 200, 255, 0.3)' },
label: {
fontSize: 28,
formatter: '完成率:{c}%'
}
}]
}
}
}
}
</script>
效果:
5. 地图(区域分布)
<template>
<v-chart :option="mapOption" autoresize/>
</template>
<script>
import china from 'echarts/map/json/china.json'
export default {
data() {
return {
mapOption: {
title: { text: '用户地域分布', left: 'center' },
tooltip: { trigger: 'item' },
visualMap: {
min: 0,
max: 1000,
text: ['高', '低'],
calculable: true
},
series: [{
name: '用户数',
type: 'map',
map: 'china',
data: [
{name: '广东', value: 900},
{name: '浙江', value: 650},
{name: '江苏', value: 720}
]
}]
}
}
},
mounted() {
echarts.registerMap('china', china)
}
}
</script>
效果:
三、多端适配技巧
-
小程序适配:
npm install mpvue-echarts
使用
mpvue-echarts
组件替代v-chart
-
大屏优化:
// 响应式配置 mounted() { window.addEventListener('resize', () => { this.$refs.chart.resize() }) }
-
性能优化:
- 大数据量使用
large: true
属性 - 地图按需加载省份数据
- 大数据量使用
四、最佳实践建议
-
主题定制:
import theme from './theme.json' echarts.registerTheme('myTheme', theme) // 使用: <v-chart theme="myTheme" ... />
-
动态更新:
// 数据变化时更新 watch: { data(newVal) { this.chart.setOption({ series: [{ data: newVal }] }) } }
-
交互增强:
// 添加点击事件 this.chart.on('click', params => { console.log('点击数据:', params) })
五、总结
通过以上实现,我们完成了:
- 5种核心图表的一站式解决方案
- 完整可运行的代码示例
- 多端适配方案
- 性能优化技巧
关键提示:实际项目中建议按需引入模块减少体积:
import * as echarts from 'echarts/core' import { BarChart, LineChart } from 'echarts/charts' echarts.use([BarChart, LineChart])
掌握这些技巧,您将能轻松应对从移动端到大屏的数据可视化需求!