Echarts:饼图默认高亮和选中(突出并高亮)/添加单击事件/X轴字符标签换行处理

news2024/9/29 7:16:44

饼图默认高亮:

// 我这里实现的是饼图

// 获取
this.sysfbChart = this.$echarts.init(document.getElementById('sysfb'))

// 默认高亮第一个
// highlight:突出
this.sysfbChart.dispatchAction({type: 'highlight',seriesIndex: 0,dataIndex: 0});

效果图:

饼图选中(突出并高亮):

// 获取
this.sysfbChart = this.$echarts.init(document.getElementById('sysfb'))

// 绑定事件
let vm = this;
this.sysfbChart.off('click');
this.sysfbChart.on('click',function(e){
    if(e.dataIndex != vm.chooseIndex){
        //没选中的取消高亮
        vm.sysfbChart.dispatchAction({type: 'downplay', seriesIndex: 0, dataIndex: vm.chooseIndex});
    }
    //选中某一条高亮
    vm.chooseIndex = e.dataIndex;
    vm.sysfbChart.dispatchAction({type: 'highlight',seriesIndex: 0,dataIndex: e.dataIndex});

添加点击事件:

解释(添加点击事件之前移除click事件):

        echarts绑定点击事件后,调试时会有这样一个现象:

        第1次click,请求后台1次

        第2次click,请求后台2次

        第3次click,请求后台3次

        如此循环......

        所以我们需要在每次点击进行之前使用off('click')来移除事件.

// 获取
this.sysslChart = this.$echarts.init(document.getElementById('syssl'))

// 添加事件
let vm = this;
// 每次点击之前先移除上一次的click方法
this.sysslChart.off('click');
this.sysslChart.getZr().on('click', function (params) {
    // 操作
})

下面是我司项目中的使用:

 this.sysslChart.getZr().on('click', function (params) {
    // 获取点击的坐标
    const pointInPixel = [params.offsetX, params.offsetY];
    // containPixel:判断是否在图形中
    if (vm.sysslChart.containPixel('grid', pointInPixel)) { // 判断点击的是否是grid区域内
        // convertFromPixel: 返回一个数组,第一个元素是x轴的值,第二个是y轴的值
        let xIndex = vm.sysslChart.convertFromPixel({seriesIndex: 0}, pointInPixel)[0];// 获取点击的x轴的index(x轴数据的索引)
        // 获取点击的对象
        let obj = syssl[xIndex];
        if (obj) {
            vm.drawSysfb(obj.id, obj.isParent);
        }
    }
})

X轴字符标签换行处理:

xAxis.axisLabel.formatter : 刻度标签的内容格式器,支持字符串模板和回调函数两种形式.

一下为示例,详细使用请到Echarts官网查看:

Documentation - Apache EChartshttps://echarts.apache.org/zh/option.html#xAxis.axisLabel.formatter

示例:

// 使用字符串模板,模板变量为刻度默认标签 {value}
formatter: '{value} kg'
// 使用函数模板,函数参数分别为刻度数值(类目),刻度的索引
formatter: function (value, index) {
    return value + 'kg';
}
xAxis: [
    {
        type: 'category',
        data: xData,
        axisTick: {
            alignWithLabel: true,
            show: false
        },
        axisLabel: {
            textStyle:{
                fontSize: 14,
                color: '#666666'
            },
            interval: 0,//使x轴文字显示全
            
            formatter : function(params){
                var newParamsName = "";// 最终拼接成的字符串
                var paramsNameNumber = params.length;// 实际标签的个数
                var provideNumber = 2;// 每行能显示的字的个数
            var rowNumber = Math.ceil(paramsNameNumber / provideNumber);// 换行的话,需要显示几行,向上取整
                /*判断标签的个数是否大于规定的个数,如果大于,则进行换行处理 如果不大于,即等于或小于,就返回原标签*/
                // 条件等同于rowNumber>1
                if (paramsNameNumber > provideNumber) {
                    /** 循环每一行,p表示行 */
                    for (var p = 0; p < rowNumber; p++) {
                        var tempStr = "";// 表示每一次截取的字符串
                        var start = p * provideNumber;// 开始截取的位置
                        var end = start + provideNumber;// 结束截取的位置
                        // 此处特殊处理最后一行的索引值
                        if (p == rowNumber - 1) {
                            // 最后一次不换行
                            tempStr = params.substring(start, paramsNameNumber);
                        } else {
                            // 每一次拼接字符串并换行
                            tempStr = params.substring(start, end) + "\n";
                        }
                        newParamsName += tempStr;// 最终拼成的字符串
                    }
                } else {
                    // 将旧标签的值赋给新标签
                    newParamsName = params;
                }
                //将最终的字符串返回
                return newParamsName
            },
        },    
    }
]

效果图(每个标签每行显示两个字符):

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128995.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

为什么自学 Python 看不进去?

如果刚开始学习python&#xff0c;没看懂&#xff0c;那就多看几次就会了。看不进去很正常&#xff0c;这个过程会很乏味&#xff0c;但是对于你建立牢固的编程思维是必须的。会有看不进去的这个阶段 python学习的秘诀在于对技术了解的广度和对数据结构研究的深度&#xff0c;不…

2022“易观之星”奖项公布,聚焦数字经济,助力数智创新

12月29日&#xff0c;“易观之星”颁奖典礼线上举办&#xff0c;重磅颁出2022“易观之星”奖项。 2022“易观之星”设置数字产品、数字企业2个系列共7大奖项&#xff0c;覆盖金融、品牌零售、汽车出行、文化消费等领域&#xff0c;挖掘和表彰各领域表现卓越的数字产品、数字企业…

【go语言之http模型reactor】

go语言之http模型reactor示例gnet.ServeinitListenerserveactivateEventLoopspolling前面说了go自带的原生netpoll模型&#xff0c;大致的流程就是每一个新的连接都会开启一个goroutine去处理&#xff0c;这样的处理的过程简单&#xff0c;高效&#xff0c;充分利用了go的底层的…

在 K8S 中测试环境中搭建 mongodb

1.可在服务器上面创建 https://kubernetes.io/docs/home/ #k8s官网 搜索Deployment 第一个就是例子 vi rs-mongodb.yaml apiVersion: apps/v1 kind: Deployment #资源类型 metadata:namespace: klvchenname: mongodblabels:app: mongodb spec:replicas: 1selector:mat…

STM32CubeMX学习笔记(50)——USB接口使用(DFU固件升级)

一、USB简介 USB&#xff08;Universal Serial BUS&#xff09;通用串行总线&#xff0c;是一个外部总线标准&#xff0c;用于规范电脑与外部设备的连接和通讯。是应用在 PC 领域的接口技术。USB 接口支持设备的即插即用和热插拔功能。USB 是在 1994 年底由英特尔、康柏、IBM、…

量子+智慧交通!玻色量子中标北京城市轨道交通项目

​2022年11月&#xff0c;玻色量子与北京交通大学国家重点实验室组成联合体&#xff0c;接受北京城市轨道交通咨询有限公司委托&#xff0c;三方共同探索和实施量子计算在智慧地铁中的应用场景研究工作。 北京城市轨道交通咨询有限公司 此次科研合作&#xff0c;玻色量子将充分…

IB学生申请牛津剑桥需要注意什么?

HL要选修3门颇具挑战性的课程&#xff0c;SL还要再选3门课程&#xff0c;写好IA&#xff0c;通过包括EE\CAS\TOK在内的3门核心科目&#xff0c;IB课程的学习压力确实挺大。。 对于志在牛剑这样顶尖高校的IB学生而言&#xff0c;压力更大&#xff0c;因为牛剑等顶尖高校对于IB小…

【JavaEE】在Linux上搭建一个Java部署环境

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录在Linux上搭建一个Java部署环境1. 安装jdk2. 安装tomcat3. 安装mysql小结普通小孩也要热爱生活&#xff01; 在Linux上搭建一个Java部署环境 为了部署java web程序&#xff0c;需要安装&#xff1a;jdk、tomcat、m…

Pandas处理大数据的性能优化技巧

Pandas是Python中最著名的数据分析工具。在处理数据集时&#xff0c;每个人都会使用到它。但是随着数据大小的增加&#xff0c;执行某些操作的某些方法会比其他方法花费更长的时间。所以了解和使用更快的方法非常重要&#xff0c;特别是在大型数据集中&#xff0c;本文将介绍一…

百趣代谢组学文献分享:《Food Function》发表过的封面文章

百趣代谢组学今日分享西北大学食品科学与工程学院曹炜教授团队在食品科学领域国际著名学术期刊《Food& Function》上发表封面文章&#xff1a;Effects of honey-extracted polyphenols on serum antioxidant capacity and metabolic phenotype in rats。该研究在国际上首次…

Springboot定时调度任务动态管理

前言 现在智能手表、手环&#xff0c;相信很多人都使用过&#xff0c;其中有一个功能&#xff0c;就是会有各种的提醒&#xff0c;如喝水提醒、运动提醒、远眺提醒&#xff0c;本质上根据用户的设置&#xff0c;间隔一定时间执行一个调度任务&#xff0c;提醒用户做某件事情。这…

myBaits Expert Human Affinities Kit ——捕获人类样本中的 SNPs 信息,化石、法医样本和降解 DNA 样本均适用

myBaits Expert Human Affinities Kit用于人类基因组SNPs富集&#xff0c;该试剂盒与古人类种群遗传学领域的专家合作设计和开发&#xff0c;针对古代和现代人类种群中已知的2M以上多态位点设计&#xff0c;特异性捕获人类基因组文库中标志性的有效信息&#xff0c;提高人类种群…

ardupilot EKF3核心算法《可以使用的传感器》

目录 文章目录 目录摘要1.可以使用的传感器2.可以使用的传感器如果从代码中提供原始数据2.1 IMU传感器提供的有用数据2.2地磁传感器提供的有用数据2.3 GPS传感器提供的有用数据2.4 气压计传感器提供的有用数据摘要 本节主要讲解Ardupilot EKF3核心算法《可以使用的传感器》。 …

java租房app房东直租系统租房网站

简介 本系统是前后端分离的项目&#xff0c;前端使用mui开发科打包成为安卓的apk。后端采用springboot开发。主要是房东登录注册后&#xff0c;可以发布房源信息&#xff0c;可以上架下架编辑删除房源信息等&#xff0c;租房者可以搜索自己需要的房子&#xff0c;然后进入详情…

Maven基础知识

第1章 Maven 介绍 1.1 什么是 Maven 1.1.1 什么是 Maven Maven 的正确发音是[ˈmevən]&#xff0c;而不是“马瘟”以及其他什么瘟。Maven 在美国是一个口语化的词 语&#xff0c;代表专家、内行的意思。 一个对 Maven 比较正式的定义是这么说的&#xff1a;Maven 是一个项…

代码随想录算法训练营第二天 java : 977.有序数组的平方 ,209.长度最小的子数组 ,59.螺旋矩阵II ,

文章目录Leecode977.有序数组的平方题目链接题目暴力解法双指针解法小结Leecode209.长度最小的子数组。题目连接题目难点 &#xff1a;滑动窗口Leecode59.螺旋矩阵II题目链接题目思路用到的变量代码总结今日收获Leecode977.有序数组的平方 题目链接 题目 给你一个按 非递减顺…

攻防世界-shrine

题目 访问题目场景 这个界面很乱奥&#xff0c;我们访问网页源代码&#xff0c;我们就能看见我们需要审计的源码了 我们把python源码复制下来&#xff0c;进行分析 import flask import osapp flask.Flask(__name__)app.config[FLAG] os.environ.pop(FLAG)app.route(/) def…

如何对企业内部进行知识内容有效性管理

企业内部文档管理版本的场景&#xff0c;如果日常没有比较好的工具进行内容控制&#xff0c;经常出现意外&#xff0c;有些意外很小、但是有些意外可能就伤筋动骨&#xff0c;例如标书里边的文件放错了&#xff0c;如果定性为串标&#xff0c;那么就非常严重了。JVS 企业文档管…

细刨进程状态,浅谈僵尸进程,孤儿进程,进程切换

文章目录进程状态宏观上操作系统层面上理解进程状态具体Linux操作系统的状态kill -19 pid &#xff1a;停止进程kill -18 pid &#xff1a;继续进程D&#xff08;disk sleep&#xff09;深度睡眠$和 $^僵尸状态和死亡状态僵尸进程孤儿进程进程优先级由此衍生出另外几个概念进程…

目标检测指标IOU和mAP

IOU(交并比) 交并比&#xff08;loU&#xff09;函数做的是计算两个边界框交集和并集之比。可以用来判断定位算法的好坏。 一般来说&#xff0c;IoU大于等于0.5&#xff0c;那么结果是可以接受的&#xff0c;就说检测正确。如果预测器和实际边界框完美重叠&#xff0c;loU就是…