1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > echarts迁徙图 vue_vue中使用 echarts3.0 或 echarts2.0 (模拟迁徙图 折线图)

echarts迁徙图 vue_vue中使用 echarts3.0 或 echarts2.0 (模拟迁徙图 折线图)

时间:2021-12-19 02:39:39

相关推荐

echarts迁徙图 vue_vue中使用 echarts3.0 或 echarts2.0 (模拟迁徙图 折线图)

三、可能适合你的做法

1、便于数据变更的处理方法是:

首先在 data 中定义全局变量

data(){

return{

myChart: null,

option: []

}

}

然后在 mounted 中将获取到的dom节点赋值给myChart

this.myChart = echarts.init(document.getElementById(‘myChart‘))

在 methoes 中封装一个方法 drawLine()

methods: {

drawLine (option) {

this.myChart.setOption({

//此处调用需要的图表参数及方法

})

}

}

在 watch 中监听接口数据以及将数据格式化后传给图表参数,并初始化图表

watch: {

yourData: {

deep: true,

handler (v, ov) {

if (v.length > 0) {

//格式化数据并传给图表参数option

}

this.myChart.clear();// 重绘之前清理画布

this.drawLine(this.option)

}

}

}

2、假如你使用了折线图,需要实现一个鼠标点击图表调用接口,并且将数据自定义渲染的功能,可以使用如下做法:

tooltip: {

trigger: ‘axis‘,

triggerOn: ‘click‘,//鼠标点击时触发

axisPointer: { // 坐标轴指示器,坐标轴触发有效

type: ‘shadow‘// 默认为直线,可选为:‘line‘ | ‘shadow‘

},

formatter: function (params, ticket, callback) {

var content = ‘‘;

for (var i = 0; i < params.length; i++) {

if (params[i].name) {

content += "

" + params[i].name + "";

break;

}

}

for (var i = 0, key = {}; i < params.length; i++) {

key = params[i];

if (typeof key.value === ‘undefined‘ || key.value === ‘-‘){

key.value = ‘暂无‘;

}

content += "

+ key.color + " ‘> "

+ key.seriesName

+ " : " + key.value + "

";

}

that.$store.dispatch(‘youInterfaceMethod‘, param).then((data, index) => {

if (data && data.code == 1) {

that.appDataArr = data.data

if (data.data.length > 0) {

for (var i = 0; i < data.data.length; i++) {

content += ‘

‘ + that.item[i].str ‘‘;

}

} else {

content += ‘

‘ + ‘Loading...‘ + ‘‘;

}

content += ‘

‘;

callback(ticket, content)

}

})

return "Loading";

}

}

3、假如你使用了模拟迁徙图(本例子是echarts2.0版本的方法),想把接口返回的但是在 geoCoordMap 里找不到的城市,在地图上显示成未知,可以使用如下做法:

首先,在 geoCoordMap 里插入一条数据,名称为 "未知",坐标自定义;

然后,data 中定义变量:

data(){

return{

total: 0,

SHData: [],

SHSCircleData: [],

myChart: null,

valueArr: [],

maxNum: 0,

unknowArea: {},

unknowCount: 0

}

}

然后在 watch 中格式化数据:

watch: {

yourData: {

deep: true,

handler (v, ov) {

this.total = 0

this.SHData = []

this.SHSCircleData = []

this.unknowArea = {}

this.unknowCount = 0

if (v.length > 0) {

v.forEach((item) => {

this.total = this.total + item.count

if (item.count === 0) return

if (item.city == ‘未知‘ || !this.geoCoordMap.hasOwnProperty(item.city)) {

// 若item.city ‘未知‘ 或者在对象 ‘geoCoordMap‘ 中不存在

this.unknowCount += item.count

this.unknowArea = {name: ‘外太空‘, value: this.unknowCount}

return;

}

this.SHData = this.SHData.concat([[{name: ‘上海‘}, {name: item.city, value: item.count}]])

this.SHSCircleData = this.SHSCircleData.concat([{name: item.city, value: item.count}])

})

this.SHData = this.SHData.concat([[{name: ‘上海‘}, this.unknowArea]])

this.SHSCircleData = this.SHSCircleData.concat([this.unknowArea])

}

this.myChart.clear();// 重绘之前清理画布

this.myChart.setOption(this.option(this.SHData, this.SHSCircleData))

}

}

}

methods封装方法:

option(SHData, SHSCircleData){

return {

//调用方法及参数

//特别提出一个,关于颜色的,取返回数据的总数除以数组长度然后再取整,会让颜色一直都像放烟花

dataRange: {

show: true,

min: 0,

max: parseInt(this.total/this.SHData.length),

calculable: true,

color: [‘#ff3333‘, ‘orange‘, ‘yellow‘, ‘lime‘, ‘aqua‘],

textStyle: {

color: ‘#fff‘

}

}

}

}

mounted调用:

mounted () {

this.getOnlineUser()//数据接口调用

setInterval(() => {//隔30s轮询一次接口

this.getOnlineUser()

}, 30000)

this.myChart = echarts.init(document.getElementById(‘myChart‘))

}

THE END.

原文:/Man-Dream-Necessary/p/7799104.html

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。