echarts setoption方法_Vue 中多次引用 echarts 绘图组件的问题记录

本文记录了在Vue项目中使用echarts遇到的组件复用导致的绘图错乱问题。通过分析,发现由于div id重复导致echarts实例化错误。解决方案是为每个tab使用独立的div,并结合v-if进行正确渲染。此外,还提到了v-show在控制echarts绘图时的局限性,推荐使用v-if确保图形正确显示。
摘要由CSDN通过智能技术生成

背景

这两天在 Vue 项目中,用 echarts 的热力图实现了类似 kibana 机器学习的数据预测图。区别是,笔者用了 tab 签,切换总览和具体攻击 IP 的异常情况。

实现过程中,踩了两个 echarts 的坑,这里总结下这个过程。

功能描述

访问 kibana 官方任务视图 会看到这样一个异常数据热力图:

d9b28dd9877393db71959ac2793b76d0.png

kibana 异常数据视图

笔者用 tab 签将总览和攻击信息拆开了:

1ec52b476d8f710cfc32cb5112dc5444.png

笔者实现的视图

序号 ② 区域封装了一个 Vue 组件 DataGraph.vue ,在两个 tab 签中都引用它:

DataGraph.vue 组件实现时,如果绘图区域共用一个 div ,则存在一个严重问题,就是 切换时

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先,需要在 Vue 项目引入 ECharts 和高德地图的相关库。可以使用 cdn 引入,也可以使用 npm 安装后引入。 然后,在 Vue 组件使用 ECharts 实例来创建迁徙图。以下是一个简单的示例: ```vue <template> <div id="main" style="height: 600px;"></div> </template> <script> import echarts from 'echarts' import 'echarts-gl' import 'echarts/map/js/china' import AMapLoader from '@amap/amap-jsapi-loader' export default { mounted() { AMapLoader.load({ key: 'your amap key', version: '2.0', plugins: ['AMap.ToolBar'] }).then(() => { const chart = echarts.init(document.getElementById('main')) chart.setOption({ tooltip: {}, geo: { map: 'china', roam: true, zoom: 1.2, itemStyle: { areaColor: '#fff', borderColor: '#666' } }, series: [ { type: 'lines', zlevel: 2, effect: { show: true, period: 6, trailLength: 0.7, color: '#fff', symbolSize: 3 }, lineStyle: { color: '#a6c84c', width: 0, curveness: 0.2 }, data: [ { fromName: '北京', toName: '上海', coords: [ [116.46, 39.92], [121.48, 31.22] ] }, { fromName: '北京', toName: '广州', coords: [ [116.46, 39.92], [113.23, 23.16] ] } ] }, { type: 'scatter', coordinateSystem: 'geo', zlevel: 2, rippleEffect: { brushType: 'stroke' }, label: { show: true, position: 'right', formatter: '{b}' }, symbolSize: 5, itemStyle: { color: '#a6c84c' }, data: [ { name: '北京', value: [116.46, 39.92] }, { name: '上海', value: [121.48, 31.22] }, { name: '广州', value: [113.23, 23.16] } ] } ] }) }) } } </script> ``` 其,`AMapLoader` 是高德地图 JavaScript API Loader 的封装库,用于异步加载高德地图的相关资源。需要在 `mounted` 钩子函数使用 `AMapLoader.load` 方法加载高德地图,并在回调函数创建 ECharts 实例和设置迁徙图的配置项。 具体的配置项可以根据需要进行调整,例如: - `geo` 配置项用于设置地理坐标系组件,其 `roam` 参数设置为 `true` 表示开启地图的缩放和拖拽功能,`zoom` 参数设置为 `1.2` 表示地图的初始缩放级别。 - `series` 的第一个系列是 `lines`,用于绘制迁徙流线,其 `data` 数组每个元素表示一条迁徙线路,包括起点、终点和经过的坐标点。 - `series` 的第二个系列是 `scatter`,用于绘制城市的散点图,其 `data` 数组每个元素表示一个城市的坐标点。 需要注意的是,由于 ECharts 组件默认使用 Canvas 渲染,而高德地图使用的是 SVG 渲染,因此在使用 ECharts 绘制迁徙图时,需要将 ECharts 渲染引擎改为 WebGL 或者 ECharts GL。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值