1-复制下面代码 创建echarts-tooltip-auto-show.js文件 复制进去

(function (global) {

global.tools = global.tools || {};

/**

* echarts tooltip 自动轮播

* @author liuyishi

* @param chart

* @param chartOption

* @param options

* {

* interval 轮播时间间隔,单位毫秒,默认为2000

* loopSeries boolean类型,默认为false。

* true表示循环所有series的tooltip,false则显示指定seriesIndex的tooltip

* seriesIndex 默认为0,指定某个系列(option中的series索引)循环显示tooltip,

* 当loopSeries为true时,从seriesIndex系列开始执行.

* }

* @returns {{clearLoop: clearLoop}}

*/

tools.loopShowTooltip = function (chart, chartOption, options) {

var defaultOptions = {

interval: 2000,

loopSeries: false,

seriesIndex: 0,

updateData: null

};

if (!chart || !chartOption) {

return {};

}

var dataIndex = 0; // 数据索引,初始化为-1,是为了判断是否是第一次执行

var seriesIndex = 0; // 系列索引

var timeTicket = 0;

var seriesLen = chartOption.series.length; // 系列个数

var dataLen = 0; // 某个系列数据个数

var chartType; // 系列类型

var first = true;

// 不循环series时seriesIndex指定显示tooltip的系列,不指定默认为0,指定多个则默认为第一个

// 循环series时seriesIndex指定循环的series,不指定则从0开始循环所有series,指定单个则相当于不循环,指定多个

// 要不要添加开始series索引和开始的data索引?

if (options) {

options.interval = options.interval || defaultOptions.interval;

options.loopSeries = options.loopSeries || defaultOptions.loopSeries;

options.seriesIndex = options.seriesIndex || defaultOptions.seriesIndex;

options.updateData = options.updateData || defaultOptions.updateData;

} else {

options = defaultOptions;

}

// 如果设置的seriesIndex无效,则默认为0

if (options.seriesIndex < 0 || options.seriesIndex >= seriesLen) {

seriesIndex = 0;

} else {

seriesIndex = options.seriesIndex;

}

function autoShowTip() {

function showTip() {

// 判断是否更新数据

if (dataIndex === 0 && !first && typeof options.updateData === "function") {

options.updateData();

chart.setOption(chartOption);

}

var series = chartOption.series;

chartType = series[seriesIndex].type; // 系列类型

dataLen = series[seriesIndex].data.length; // 某个系列的数据个数

var tipParams = {seriesIndex: seriesIndex};

switch (chartType) {

case 'map':

case 'pie':

case 'chord':

tipParams.name = series[seriesIndex].data[dataIndex].name;

break;

case 'radar': // 雷达图

tipParams.seriesIndex = seriesIndex;

tipParams.dataIndex = dataIndex;

break;

default:

tipParams.dataIndex = dataIndex;

break;

}

if (chartType === 'pie' || chartType === 'radar') {

// 取消之前高亮的图形

chart.dispatchAction({

type: 'downplay',

seriesIndex: options.loopSeries ? (seriesIndex === 0 ? seriesLen - 1 : seriesIndex - 1) : seriesIndex,

dataIndex: dataIndex === 0 ? dataLen - 1 : dataIndex - 1

});

// 高亮当前图形

chart.dispatchAction({

type: 'highlight',

seriesIndex: seriesIndex,

dataIndex: dataIndex

});

}

// 显示 tooltip

tipParams.type = 'showTip';

chart.dispatchAction(tipParams);

dataIndex = (dataIndex + 1) % dataLen;

if (options.loopSeries && dataIndex === 0 && !first) { // 数据索引归0表示当前系列数据已经循环完

seriesIndex = (seriesIndex + 1) % seriesLen;

}

first = false;

}

showTip();

timeTicket = setInterval(showTip, options.interval);

}

// 关闭轮播

function stopAutoShow() {

if (timeTicket) {

clearInterval(timeTicket);

timeTicket = 0;

if (chartType === 'pie' || chartType === 'radar') {

// 取消高亮的图形

chart.dispatchAction({

type: 'downplay',

seriesIndex: options.loopSeries ? (seriesIndex === 0 ? seriesLen - 1 : seriesIndex - 1) : seriesIndex,

dataIndex: dataIndex === 0 ? dataLen - 1 : dataIndex - 1

});

}

}

}

var zRender = chart.getZr();

function zRenderMouseMove(param) {

if (param.event) {

// 阻止canvas上的鼠标移动事件冒泡

param.event.cancelBubble = true;

}

stopAutoShow();

}

// 离开echarts图时恢复自动轮播

function zRenderGlobalOut() {

if (!timeTicket) {

autoShowTip();

}

}

// 鼠标在echarts图上时停止轮播

chart.on('mousemove', stopAutoShow);

zRender.on('mousemove', zRenderMouseMove);

zRender.on('globalout', zRenderGlobalOut);

autoShowTip();

return {

clearLoop: function () {

if (timeTicket) {

clearInterval(timeTicket);

timeTicket = 0;

}

chart.off('mousemove', stopAutoShow);

zRender.off('mousemove', zRenderMouseMove);

zRender.off('globalout', zRenderGlobalOut);

}

};

};

})(window);

2-引入上一步的文件(注意路径!!!)

3-

barCharts() {

const option = {

title: {

//标题样式

text: "年龄分析",

textStyle: {

color: "#333333",

fontFamily: "Microsoft YaHei",

fontSize: 20,

fontweight: "bold",

},

padding: [18, 0, 0, 10],

},

legend: {

// show:false,

},

grid: {

// show:false,

top: "90",

left: "51",

// width: 'auto',

height: 237,

width: 518,

},

xAxis: {

type: "category",

// name: '范天柱',

data: this.ageAnalyse.title,

axisLine: {

show: false, //是否显示坐标轴轴线。

// lineStyle: {//x轴线的样式

// color: '#666666',

// }

},

axisTick: {

//是否显示坐标轴刻度。

show: false,

// alignWithLabel: true//类目轴中在 boundaryGap 为 true 的时候有效,可以保证刻度线和标签对齐

},

axisLabel: {

//更改x轴文字样式

fontSize: "14",

fontWeight: "400",

fortFamily: "Microsoft YaHei",

color: "#666666",

interval: 0, //设置为0的话,如果数据再长点,它会把这个数据直接不显示,

// rotate: 45, //代表逆时针旋转45度

},

},

yAxis: {

type: "value",

min: 0,

max: 560,

interval: 80, //强制设置坐标轴分割间隔 0~80之间

offset: 18,

axisLine: {

show: false, //是否显示坐标轴轴线。

},

splitNumber: 4,

axisTick: {

//是否显示坐标轴刻度。

show: false,

},

axisLabel: {

margin: -1,

},

},

tooltip:{

show:true,

trigger:'axis',

showContent:true,

// backgroundColor:'rgba(47,79,79,.7)'提示框的背景颜色

},

dataZoom: {

show: false,

title: {

dataZoom: "12",

dataZoomReset: "12",

},

},

series: [

{

data: this.ageAnalyse.num,

type: "bar",

showBackground: true, //是否显示柱条的背景色。

barWidth: 15, //线柱的宽度

backgroundStyle: {

color: "#F2F2F2", //

shadowColor: "#F2F2F2",

shadowOffsetY: -15,

},

itemStyle: {

normal: {

color: "#206BD1",

},

},

},

],

};

const myChart = this.$echarts.init(document.getElementById("barChart")); // 图标初始化

myChart.setOption(option); // 渲染页面

tools.loopShowTooltip(myChart, option, {loopSeries: true});//自动轮播主要看这段话

//随着屏幕大小调节图表

window.addEventListener("resize", () => {

myChart.resize();

});

this.$on("hook:destroyed", () => {

window.removeEventListener("resize", function () {

myChart.resize();

});

});

},

4-效果图 就可以实现自动轮播了  

 

相关链接

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。