关于Echarts的使用和遇到的问题

本文详细介绍如何在Webpack环境中引入并使用ECharts图表库,包括按需加载组件、配置图表选项及常见问题解决方法。

对于插件工具,感觉按着官方的教程,便可以使用,但是看这个Echarts有点晕乎乎的,还是不能快速的学习啊。

一、在webpack中使用ECharts

//通过 npm 获取 echarts
npm install echarts --save

在项目里需要用到的界面中,按需引入需要的模块,不做全局引入;如果完整引入Echarts,会有很多冗余的文件,体积会比较大,造成资源加载等问题。(注:require和import的引入区别

// 引入 ECharts 主模块
import ECharts from "echarts/lib/echarts";
//引入折线图
import "echarts/lib/chart/line";
//引入提示框
import "echarts/lib/component/tooltip";
//引入标题
import "echarts/lib/component/title";
//引入图例标志
import "echarts/lib/component/legend";
<div
    class="statisticsLineEchart"
    ref="lineEchart"
></div>
 //获取到准备绘制的DOM对象
 const ele = this.$refs["lineEchart"];
 //初始化echarts实例
 this.echart = ECharts.init(ele);
 //绘制表格
 this.echart.setOption(this.lineEchartOptions);    

二、配置选项

lineEchartOptions = {
    color: ["#FFC44F", "#d14a61", "#76D1D7"],//设置颜色
    title: {  //标题,按需引入其模块,包含表的主标题和副标题的相关配置},
    tooltip: {  //提示,鼠标滑过,鼠标移上去那个提示框的配置},
    legend: {//图例,如果想要图例有效果,legend中数据要和series中name的值保持一致 
      data:["新增","删除"]
    },
    grid: {//网格  },
    toolbox: {//工具箱,内置有导出图片,数据视图,动态类型切换,数据区域缩放,重置五个工具},
    xAxis: {//x轴},
    yAxis: { //y轴},
    series: [{ //数据
} ]
};
  • 图例legend样式:
  • 提示tooltip样式:               

  •  

    工具箱toolbox样式:           

三、问题

  • 每次数据请求回来后,使用this.nextTick(()=>{})进行绘制图案
  • TypeError:Cannot read property 'getAttribute' of undefined (在执行图表对象渲染方法init(dom)的时候,确保对象的存在)

转载于:https://www.cnblogs.com/songForU/p/11419145.html

### ECharts 使用中的常见问题及解决方案 #### 1. 图表实例未销毁导致内存泄漏 在 Vue 或其他前端框架中,如果页面切换频繁而未及时清理已有的 ECharts 实例,则可能导致内存泄漏。为了避免这种情况,在组件生命周期结束前应调用 `dispose()` 方法释放资源。 ```javascript if (this.myChart1 !== null && this.myChart2 !== null) { this.myChart1.dispose(); // 销毁第一个图表实例 this.myChart2.dispose(); // 销毁第二个图表实例 } // 初始化新的 ECharts 实例 this.myChart1 = echarts.init(document.getElementById('main1')); this.myChart2 = echarts.init(document.getElementById('main2')); ``` 此操作可有效避免因重复初始化而导致的性能问题[^1]。 --- #### 2. 多图表自适应窗口大小 单个页面存在多个 ECharts 图表时,仅依赖 `window.onResize` 可能无法满足需求。推荐通过 `addEventListener` 绑定全局监听器实现动态调整尺寸的功能: ```javascript window.addEventListener('resize', () => { if (this.myChart1 && this.myChart2) { this.myChart1.resize(); this.myChart2.resize(); } }); ``` 需要注意的是,在组件销毁阶段需移除绑定的事件以防止潜在冲突或错误行为: ```javascript beforeDestroy() { window.removeEventListener('resize', this.resizeHandler); // 移除 resize 事件监听 if (this.chart) { this.chart.dispose(); // 销毁当前图表实例 } } ``` 以上逻辑能够确保多图表场景下的良好兼容性用户体验[^1]。 --- #### 3. 饼图标签重叠问题 当饼图数据较多且布局空间有限时,可能会出现视觉引导线(labelLine)相互交叉的情况。可以通过以下方式优化显示效果: - **增大容器宽度/高度**:提供足够的渲染面积让默认防重叠机制发挥作用; - **手动配置 label labelLine 属性**:关闭自动避障功能并指定具体参数值; 例如修改起始角度从而改变分布方向: ```javascript series: [{ type: 'pie', radius: ['50%', '70%'], startAngle: 0, // 自定义初始绘制角为零度而非标准九十度 }] ``` 此外还可以尝试缩小字体字号减少干扰程度[^2]。 --- #### 4. Y 轴刻度与网格线交错现象 部分情况下由于计算误差或者样式设定不当会造成 y 轴文字超出边界范围进而影响美观度。对此建议启用 containLabel 参数强制将整个坐标系纳入考虑范畴之内: ```javascript grid: { left: '10%', right: '10%', bottom: '15%', top: '10%', containLabel: true // 关键选项保证所有内容均被框选进去 }, ``` 如此设置之后即使调整左侧间距也无法再见到越界状况发生。 --- ### 总结 综上所述,针对 ECharts 的实际应用过程中遇到的各种典型难题均已给出相应对策说明。合理运用这些技巧不仅有助于提升开发效率还能增强最终呈现质量。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值