Echarts标签文字过长以及在app端formatter函数失效问题

2023-10-30 15:50

本文主要是介绍Echarts标签文字过长以及在app端formatter函数失效问题,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Echarts标签文字过长以及在app端formatter函数失效问题

  在使用uniapp写微信小程序时,使用到了echarts,在使用柱状图的时候发现横坐标数据太多的时候标签文字会重叠。

文字重叠

  当然,可以选择旋转文字的方式解决。

axisLabel: {rotate: -30,show: true,interval: 0,
},

  但是我想让文字换行,文字过长自动换行显示。开搞,网上的方案是利用formatter回调函数的方式实现。

xAxis: {type: "category",data: this.xAxisData,axisLabel: {show: true,interval: 0,formatter: function (value) {var ret = "";//拼接加\n返回的类目项  var maxLength = 4;//每项显示文字个数  var valLength = value.length;//X轴类目项的文字个数  var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数  if (rowN > 1)//如果类目项的文字大于4,  {for (var i = 0; i < rowN; i++) {var temp = "";//每次截取的字符串  var start = i * maxLength;//开始截取的位置  var end = start + maxLength;//结束截取的位置  //这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧  temp = value.substring(start, end) + "\n";ret += temp; //凭借最终的字符串  }return ret;}else {return value;}},}
}
formatter函数失效问题

  妙啊!我开心的放在我的小程序代码里后,然而,并没有任何改变。web上没有问题,但是在uniapp微信小程序中不生效。Github上有大佬发现是因为源码配置错误,新版好像也已经解决了这个bug。不过我去echarts官网下载了最新的echarts.js替换了项目中的echarts.js,结果还是一样的,而且还导致了项目中其它图表的样式发生了改变,还是先使用原来的吧。那么怎么样解决呢?

  只需要在setOption之前,手动设置xAxis.axisLabel.formatter = function(value) {…}。问题是,我的项目中是通过标签挂载option的形式配置的,没有setOption。

  不慌,在引入的库文件中修改,我引入的文件中,包含echarts.js,uni-ec-canvas.vue,wx-canvas.js这三个文件,其中uni-ec-canvas.vue就有setOption的一项。

initChart(canvas, width, height, canvasDpr) {this.$curChart = echarts.init(canvas, null, {width: width,height: height,devicePixelRatio: canvasDpr,});canvas.setChart(this.$curChart);this.$curChart.setOption(this.ec.option);//herethis.$emit("inited", this.$curChart);return this.$curChart;
},

  在setOption之前,手动设置formatter回调函数就可以了。

initChart(canvas, width, height, canvasDpr) {this.$curChart = echarts.init(canvas, null, {width: width,height: height,devicePixelRatio: canvasDpr,});canvas.setChart(this.$curChart);this.ec.option.xAxis.axisLabel.formatter = function (value) {var ret = ""; //拼接加\n返回的类目项var maxLength = 2; //每项显示文字个数var valLength = value.length; //X轴类目项的文字个数var rowN = Math.ceil(valLength / maxLength); //类目项需要换行的行数if (rowN > 1) {//如果类目项的文字大于4,for (var i = 0; i < rowN; i++) {var temp = ""; //每次截取的字符串var start = i * maxLength; //开始截取的位置var end = start + maxLength; //结束截取的位置//这里也可以加一个是否是最后一行的判断,但是不加也没有影响,那就不加吧temp = value.substring(start, end) + "\n";ret += temp; //凭借最终的字符串}return ret;} else {return value;}};this.$curChart.setOption(this.ec.option);this.$emit("inited", this.$curChart);return this.$curChart;
},

  这样就可以了,总的来说,找到源码中setOption的位置,在这之前手动设置formatter的回调函数。

修改后的结果

  最后,可能大家在使用的时候都是最新的了,不会有这个问题了,但是,这让我意识到,有时候修改源码,未尝不可。

这篇关于Echarts标签文字过长以及在app端formatter函数失效问题的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/308972

相关文章

如何解决mmcv无法安装或安装之后报错问题

《如何解决mmcv无法安装或安装之后报错问题》:本文主要介绍如何解决mmcv无法安装或安装之后报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录mmcv无法安装或安装之后报错问题1.当我们运行YOwww.chinasem.cnLO时遇到2.找到下图所示这里3.

浅谈配置MMCV环境,解决报错,版本不匹配问题

《浅谈配置MMCV环境,解决报错,版本不匹配问题》:本文主要介绍浅谈配置MMCV环境,解决报错,版本不匹配问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录配置MMCV环境,解决报错,版本不匹配错误示例正确示例总结配置MMCV环境,解决报错,版本不匹配在col

Vue3使用router,params传参为空问题

《Vue3使用router,params传参为空问题》:本文主要介绍Vue3使用router,params传参为空问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录vue3使用China编程router,params传参为空1.使用query方式传参2.使用 Histo

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

C/C++错误信息处理的常见方法及函数

《C/C++错误信息处理的常见方法及函数》C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域,:本文主要介绍C/C++错误信息处理的常见方法及函数,文中通过代码介绍... 目录前言1. errno 和 perror()示例:2. strerror()示例:3. perror(

CSS去除a标签的下划线的几种方法

《CSS去除a标签的下划线的几种方法》本文给大家分享在CSS中,去除a标签(超链接)的下划线的几种方法,本文给大家介绍的非常详细,感兴趣的朋友一起看看吧... 在 css 中,去除a标签(超链接)的下划线主要有以下几种方法:使用text-decoration属性通用选择器设置:使用a标签选择器,将tex

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La

Kotlin 作用域函数apply、let、run、with、also使用指南

《Kotlin作用域函数apply、let、run、with、also使用指南》在Kotlin开发中,作用域函数(ScopeFunctions)是一组能让代码更简洁、更函数式的高阶函数,本文将... 目录一、引言:为什么需要作用域函数?二、作用域函China编程数详解1. apply:对象配置的 “流式构建器”最

MyBatis 动态 SQL 优化之标签的实战与技巧(常见用法)

《MyBatis动态SQL优化之标签的实战与技巧(常见用法)》本文通过详细的示例和实际应用场景,介绍了如何有效利用这些标签来优化MyBatis配置,提升开发效率,确保SQL的高效执行和安全性,感... 目录动态SQL详解一、动态SQL的核心概念1.1 什么是动态SQL?1.2 动态SQL的优点1.3 动态S

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优