# echarts5_vue3 **Repository Path**: polaris_wrp/echarts5_vue3 ## Basic Information - **Project Name**: echarts5_vue3 - **Description**: 这是一个基于Vue3和Echarts5的数据可视化项目 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 0 - **Created**: 2023-03-16 - **Last Updated**: 2024-12-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: Vue, TypeScript, scss, WebSocket, HTML ## README # echarts-demo ## Project setup ``` yarn install ``` ### Compiles and hot-reloads for development ``` yarn serve ``` ### Compiles and minifies for production ``` yarn build ``` ### Lints and fixes files ``` yarn lint ``` ### Customize configuration See [Configuration Reference](https://cli.vuejs.org/config/). ## 日期格式化 dayjs - yarn add dayjs - 用于与moment类似 ## vue3使用调用echarts实例resize方法报错问题 - 根据官方issue, 定义echarts实例的属性应当是普通属性或是shollowRef ## 自定义主题样式 - 官网下载主题后下载为json格式 - 将下载文件json内容放在 静态资源目录下通过 export xx = {} 方式导出 - 组件引入json对象, import xxx from 'xxxx/index.ts' - echarts实例方法注册使用 $echarts.registerTheme('sunny', sunny); ## 关于柱状图的颜色渐变设置 // 渐变颜色: 1.指定颜色渐变方向 2.指定不同百分比时的颜色 ```js - $echarts.graphic.LinearGradient()(x1,y1,x2,y2, []) - x1,y1; x2,y2表示两个点,确定一条直线 - [] 接收四个数组,值为0或1;类比为一个矩形四个顶点(上右下左)依次为, (0,0) (1,0)(0,1)(1,1) ``` ## 折线图凌乱的处理方式 - 通过堆叠图的方式展示 - 在折线图的配置中 series 属性值为一个数组,实现堆叠图的话需要每项stack的值保持一致,这里使用 map 属性 ```js const dataOption: EChartsOption = { xAxis: { data: timeArr, }, legend: { data: legendArr, }, series: [{name: 'kk', stack: 'map'}, {name: 'pp', stack: 'map'}], }; ``` ### 折线样式优化 - 可以在自定义主题时配置, 在line对象中新增 smooth属性 ```json { "line": { // "itemStyle": ..... "smooth": true } } ``` ## 地图散点展示前提 - 每个name对应的children为该用户的散点 - 在地图中展示散点数据,需要给散点地图每一项添加配置 coordinateSystem:geo ```js const seriesArr = content.allData.map((item) => { return { type: 'effectScatter', name: item.name, data: item.children, coordinateSystem: 'geo', }; }); const dataOption = { series: seriesArr, }; ``` ## 抽离公共样式 - 将图表组件公共样式存放在common下的 chart.scss 文件中 - 组件中使用通过 import导入 ```html ``` ## 全局echarts常用方法 - init 【初始化echarts实例,第二个参数使用主题】 - registerTheme 【用于注册自定义主题】 - registerMap 【注册地图图表】 - connect 【一个页面可以有多个图表,此方法用于关联多个图表】 以下栗子为使用connect方法后,点击下载图片按钮会下载chart1和chart2的组合图片 ```js const option = { toolbox: { feature: { saveAsImage: {} } } } const echarts = echarts.init('dom') echarts.setOption(option) echarts.connect([chart1, chart2]) ``` ## echarts实例的常用方法 - setOption 该方法可以被调用多次,并且会**合并**新旧配置 - resize 重新计算和绘制图表 ```js window.onresize = function() { echartsInstance.resize() } ``` - on/off 1. 用于绑定或者解绑事件处理函数 2. 鼠标事件【click, dblick, mouseover, mouseout】 ```js // 回调函数接收事件参数 echartsInstance.on('click', function(e) { console.log(e) }) ``` 3. echarts事件【legendselectchanged,datazoom】 图例发生改变等 ```js const pieData = [{value: 11, name: 'kk'}, {value: 55, name: 'pp'}] const option = { legend: { data: ['kk', 'pp'] }, series: [{ type: 'pie', data: pieData }] } echartsInstance.setOption(option) // 图例变化输出值 echartsInstance.on('legendselectchanged', function(e) { console.log(e) }) echartsInstance.off('legendselectchanged') ``` 4. dispatchAction方法 触发某些行为,使用代码模拟用户的一些行为 ```js // 点击按钮后图表高亮 const btn = document.getElementById('#btn') btn.onclick = function() { // 模拟用户行为 echartsInstance.dispatchAction({ type: 'highlight',//事件类型【图表高亮】 seriesIndex: 0, //图表索引,指向 series数组下标对应值 dataIndex: 1 //图表那一项高亮,指向data数组下标对应值 }) echartsInstance.dispatchAction({ type: 'showTip',//事件类型 【鼠标移入时提示框】 seriesIndex: 0, //图表索引,指向 series数组下标对应值 dataIndex: 1 //图表那一项高亮,指向data数组下标对应值 }) } ``` 5. clear 清空图表实例, dispose销毁实例 clear 清除之后可以再次调用 setOption设置数据 dispose 销毁之后无法设置数据 ```js echartsInstance.clear() echartsInstance.dispose() ```