效果图

代码:
<template>
<div class="home">
<div ref="myRef"></div>
</div>
</template>
<script setup>
import { ref, onMounted, onBeforeUnmount } from 'vue'
// import Echarts from '@/utils/echarts'
import * as Echarts from 'echarts'
/**
* 数据
*/
const myRef = ref(null)
let timer = null
/**
* 生命周期
*/
onMounted(() => {
barChart()
})
onBeforeUnmount(() => {
_clearInterval(timer)
})
/**
* 函数
*/
function barChart () {
const chartInstance = myRef.value && Echarts.init(myRef.value)
// 控制显示几个柱子
const [startValue, endValue] = [0, 3]
// 数据
const data = [
{ name: 'Mon', vaule: 120 },
{ name: 'Tue', vaule: 200 },
{ name: 'Wed', vaule: 150 },
{ name: 'Thu', vaule: 80 },
{ name: 'Fri', vaule: 40 },
{ name: 'Sat', vaule: 110 },
{ name: 'Sun', vaule: 120 }
]
const xAxisData = data.map(item => item.name)
const seriesData = data.map(item => item.vaule)
const option = {
title: [
{
text: ' 数据统计',
left: '3%',
textStyle: {
fontSize: 30,
color: '#333',
height: 40,
width: 40,
lineHeight: 40
}
}
],
xAxis: {
type: 'category',
data: xAxisData
},
// 控制显示几个柱子
dataZoom: {
show: false,
startValue,
endValue
},
yAxis: {
type: 'value'
},
series: {
data: seriesData,
type: 'bar'
}
}
chartInstance.setOption(option)
// 使用定时器
timer = setInterval(() => {
const item1 = xAxisData.shift()
xAxisData.push(item1)
const item2 = seriesData.shift()
seriesData.push(item2)
chartInstance.setOption({
series: {
data: seriesData,
type: 'bar'
},
xAxis: {
type: 'category',
data: xAxisData
}
})
}, 2000)
}
/**
* @param timeId {Number}
*/
function _clearInterval (timeId) {
timeId && window.clearInterval(timeId)
}
</script>
<style scoped>
.home > div {
height: 500px;
width: 800px;
}
</style>
结语 : 只是拿柱状图示范 其他图形如果有轮播的需求也可以用类似方法 如果有更好的方法可以在评论区告诉我 非常感谢
