【echarts】如何修改折线图X轴每个刻度的间隔宽度,让拥挤的空间变大,所有坐标点的文案可以显示得下,Echarts x轴文本内容太长的几种解决方案

news2024/12/26 14:43:42

Echarts 如何修改折线图X轴每个刻度的间隔宽度,让拥挤的空间变大,所有坐标点的文案可以显示得下,Echarts x轴文本内容太长的几种解决方案
有以下几种方案,堪称最全方案:

1、dataZoom进行坐标的比例缩放

在这里插入图片描述
通过调整dataZoom的startValue + endValue来控制在容器宽度下,展示多少个点的数据,其他点会以横向滚动的形式展现

interface OptsProps {
  endValue?: number;
}
export const getZoomConfig = (opts: OptsProps = {}) => {
  return [
    {
      // zoomOnMouse
      bottom: 3,
      id: 'dataZoomY',
      // yAxisIndex: [0],
      show: true, // 是否显示滑动条,不影响使用
      type: 'slider', // 这个 dataZoom 组件是 slider 型 dataZoom 组件
      startValue: 0, // 从头开始。
      endValue: opts.endValue || 7, // 默认展示7个
      // start: 0,
      // end: 10,
      // width: 6,
      height: 4,
      borderColor: 'transparent',
      fillerColor: '#E8EAEF',
      zoomLock: true,
      showDataShadow: false, // 是否显示数据阴影 默认auto
      backgroundColor: '#fff',
      showDetail: false, // 即拖拽时候是否显示详细数值信息 默认true
      realtime: true, // 是否实时更新
      filterMode: 'filter',
      handleIcon: 'circle',
      handleStyle: {
        color: '#E8EAEF',
        borderColor: '#E8EAEF',
      },
      // handleSize: '80%',
      moveHandleSize: 0,
      // maxValueSpan: 2,
      // minValueSpan: 2,
      brushSelect: false, // 刷选功能,设为false可以防止拖动条长度改变 ************(这是一个坑)
    },
    // {
    //   type: 'inside',
    //   // yAxisIndex: 0,
    //   zoomOnMouseWheel: false, // 滚轮是否触发缩放
    //   moveOnMouseMove: false, // 鼠标滚轮触发滚动
    //   moveOnMouseWheel: false,
    // },
  ];
};

2、对文本进行倾斜

xAxis.axisLabe中修改rotate的值

xAxis: {
            data: [...], // x轴中的数据
            name: '销售额', // 坐标轴名称。
            nameLocation: 'end', // 坐标轴名称显示位置。
            axisLabel : { // 坐标轴刻度标签的相关设置。
                interval: 0,
                rotate: '45'
            }
},

interval步长解释:

不设置默认自动根据显示效果动态赋予默认值,会出现当X轴坐标点过多时,间隔1-n个点显示下一个坐标点的文案。设置为0则默认每个坐标点都要显示文案。

被遮挡住就让grid组件离容器向上移动,把grid中的bottom的值调大一些。注意,无法通过调整网格width来增加坐标点之间的间距,这是因为会导致X轴的滚动条长度计算异常,导致后续的坐标点没有办法滚动预览到!

grid:{ // 直角坐标系内绘图网格
            show: true, // 是否显示直角坐标系网格。[ default: false ]
            left: "15%", // grid 组件离容器左侧的距离。
            right: "20px",
            borderColor: "#333", //网格的边框颜色
            bottom: "20%" // 距离容器底部的间距
},

3、换行显示

xAxis.axisLabel中 使用formatter回调函数实现换行

    axisLabel : { //坐标轴刻度标签的相关设置。
                formatter : function(params){
                   var newParamsName = ""; // 最终拼接成的字符串
                            var paramsNameNumber = params.length;// 实际标签的个数
                            var provideNumber = 4; // 每行能显示的字的个数
                            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
                }

            }

4、文字竖直显示

同样和换行一个道理,只是这个是单个文字换行
xAxis.axisLabel中 使用formatter回调函数实现换行

axisLabel: {  
     interval: 0,  
     formatter:function(value) {  
            return value.split("").join("\n");  
     }  
}  

5、隔一个换行

xAxis.axisLabel中,使用formatter回调函数实现换行

axisLabel : { // 坐标轴刻度标签的相关设置。
     clickable:true, // 并给图表添加单击事件  根据返回值判断点击的是哪里
     interval : 0,
     formatter : function(params,index){
            if (index % 2 != 0) {
                  return '\n\n' + params;
            }
            else {
                  return params;
            }
     }
}

在这里插入图片描述

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

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

相关文章

生态第五篇-调度的多维空间技术

生态第五篇-调度的多维空间技术 文章目录 生态第五篇-调度的多维空间技术前言一、什么是多维空间&#xff1f;二、实现原理1.先看效果2.如何实现 预告 前言 调度已经结束更新了本不想再更新调度技术&#xff0c;因为生态的更新计划里面有这一条所以就写一篇把 一、什么是多维…

Java“牵手”ebay商品详情数据,ebay商品详情API接口,ebayAPI接口申请指南

天猫平台商品详情接口是开放平台提供的一种API接口&#xff0c;通过调用API接口&#xff0c;开发者可以获取天猫商品的标题、价格、库存、月销量、总销量、库存、详情描述、图片等详细信息 。 获取商品详情接口API是一种用于获取电商平台上商品详情数据的接口&#xff0c;通过…

了解Armv8.x和Armv9.x扩展

概述 Arm架构新增的功能以扩展的形式提供&#xff0c;这样Arm能够定期发布新功能&#xff0c;以响应合作伙伴的需求&#xff0c;而无需对主架构进行重大更改。 Arm 每年都会发布新的扩展。Cortex CPU 是该架构的 Arm 实现&#xff0c;其会根据发布时间使用相应的扩展。 本指…

扫描mapper包

文章目录 第一种-配置在resource目录下第二种- 直接配置java代码目录&#xff0c;在Maven中配置相关路径 第一种-配置在resource目录下 第二种- 直接配置java代码目录&#xff0c;在Maven中配置相关路径 不配置不会把mapper的xml文件编译到target文件中 <build><res…

vs2022不能加载winform界面

今天遇到vs2022加载winform界面错误&#xff0c; The service ‘Microsoft.VisualStudio.Shell.Design.Serialization.DesignerDocDataService’ must be installed for this feature to work。 当前vs版本&#xff1a; Microsoft Visual Studio Enterprise 2022 (64 位) - Cur…

虚拟化和容器

文章目录 1 介绍1.1 简介1.2 虚拟化工作原理1.3 两大核心组件&#xff1a;QEMU、KVMQEMUKVM 1.4 发展历史1.5 虚拟化类型1.6 云计算与虚拟化1.7 HypervisorHypervisor分为两大类 1.8 虚拟化 VS 容器 2 虚拟化应用dockerdocker 与虚拟机的区别 K8Swine 参考 1 介绍 1.1 简介 虚…

【MySQL】初见数据库

目录 什么是MySQL 为什么要使用数据库 数据库基础 数据库的本质 存储引擎 常用操作 登录mysql 创建数据库 使用数据库 查看数据库 创建数据库表 查看表 向表中插入数据 查询表中数据 什么是MySQL &#x1f352;在我们服务器安装完 MySQL 服务之后&#xff0c;经…

C++核心编程--类篇

C核心编程 1.内存分区模型 C程序在执行时&#xff0c;将内存大方向分为4个区域 意义&#xff1a;不同区域存放数据&#xff0c;赋予不同的生命周期&#xff0c;更能灵活编程 代码区&#xff1a;存放函数体的二进制代码&#xff0c;由操作系统进行管理的全局区&#xff1a;存放…

通讯录怎么导入新手机?3个推荐小妙招

最近刚换了新手机&#xff0c;旧手机里的联系人太多了&#xff0c;不想在新手机上一个个重新添加。有没有什么快速简单的方法能够将通讯录导入新手机&#xff1f; 大家在更换新手机之后都是怎么导入通讯录的呢&#xff1f;换手机最重要的就是把数据进行完整转移&#xff0c;那么…

Dwg转换成PDF怎么转?来学习下这个转换小妙招

dwg转PDF格式的好处在于两种格式的兼容性和安全性不同。PDF格式本身可以包含文字、图形、图像、表格等各种信息&#xff0c;而DWG格式只包含图纸的几何图形。PDF格式是封闭的&#xff0c;有统一的标准&#xff0c;可以在任何CAD不兼容的软件里打开。而DWG格式是CAD专用的电子文…

若依cloud 修改包名等

一、项目的项目名。 先改pom 然后在重命名文件 1、 修改主pom.xml <artifactId>ruoyi-api</artifactId> 缓存 <artifactId>zxf-api</artifactId> <groupId>com.ruoyi</groupId> <groupId>com.zhixiaofeng</groupId> 2、…

微信,支付宝高级服务商是什么?支付接口怎么申请?

一般来说支付公司的服务商也就是所谓的顶级服务商或者高级服务商&#xff0c; 有些收单外包服务机构的服务商级别也很高&#xff0c;只要服务商发展的商户业务优质且量大&#xff0c;尤其是线下业务&#xff0c;都会逐步提高服务商级别。 商户申请第三方支付接口&#xff0c;支…

同步FIFO的verilog实现(2)——高位扩展法

一、前言 在之前的文章中&#xff0c;我们介绍了同步FIFO的verilog的一种实现方法&#xff1a;计数法。其核心在于&#xff1a;在同步FIFO中&#xff0c;我们可以很容易的使用计数来判断FIFO中还剩下多少可读的数据&#xff0c;从而可以判断空、满。 关于计数法实现同步FIFO的详…

Nginx-高性能Web服务器

前言&#xff1a; 平时总听hex说Nginx服务器,也经常找他解决项目上的nginx配置&#xff0c;但自己一直不懂&#xff0c;不懂就学。 听他说&#xff1a;nginx最重要是 location url 配置&#xff08; 正则&#xff09;、反向代理与负载均衡&#xff0c;平时项目用这些比较多。 …

豪华卧室怎么装?快来看看吧

一阵轻松的叹息&#xff0c;由柔软的质地、新鲜的空气和扎实的设计带来。只需稍微借鉴这些豪华卧室的创意&#xff0c;这一切都可以成为你的。 用华丽的四柱床提升 四柱床的柱子为床框增添了另一种维度&#xff0c;同时保持通风。长长的线条提高了房间的高度&#xff0c;吸引…

KT142C-sop16语音芯片ic内置320Kbyte_USB更新内置空间详细说明

KT142C内置的是320K的空间&#xff0c;但是实际的大小&#xff0c;在电脑里面显示&#xff0c;应该是315Kbyte。 打开我的电脑&#xff0c;芯片连接PC之后&#xff0c;自动多出来了一个U盘&#xff0c;如下图所示&#xff1a; 这里的空间只有315KB &#xff0c;因为文件系统占…

Vue2项目练手——通用后台管理项目第八节

Vue2项目练手——通用后台管理项目 菜单权限功能tab.jsLogin.vueCommonAside.vuerouter/index.js 权限管理问题解决router/tab.jsCommonHeader.vuemain.js 菜单权限功能 不同的账号登录&#xff0c;会有不同的菜单权限通过url输入地址来显示页面对于菜单的数据在不同页面之间的…

C# 通过自定义控件实现炫酷的时间显示

先看效果 话不多说,直接上代码 基础的自定义控件 LED_Num public partial class LED_Num : UserControl{#region 属性/// <summary>/// 绘图区域/// </summary>Rectangle DrawArea = Rectangle.

Linux系统——MySQL安装与卸载(CentOS7 超详细演示)

Linux系统 安装与卸载 MySQL—— 超详细演示! MySQL8.0.26-Linux版安装1. 准备一台Linux服务器2. 下载Linux版MySQL安装包3. 上传MySQL安装包4. 创建目录,并解压5. 安装mysql的安装包6. 启动MySQL服务7. 查询自动生成的root用户密码8. 修改root用户密码9. 创建用户10. 并给root…

安卓手机怎么录屏?看这里,小白也能学会

“安卓手机可以录屏吗&#xff1f;最近需要用到录屏功能&#xff0c;在手机里面找了很久&#xff0c;也没有找到&#xff0c;听别人说安卓手机是有录屏的&#xff0c;有人知道怎么打开吗&#xff1f;” 在日常生活中&#xff0c;我们常常需要录制手机屏幕上的操作步骤&#xf…