echarts图表X轴文字过长解决解决方案:根据文字长度自动旋转
Echarts 标签中文本内容太长的时候怎么办 ?
关于这个问题搜索一下,有很多解决方案。无非就是 省略(间隔显示)、旋转文字方向、竖排展示
前面两种解决方案,就是echarts暴露的:
{
axisLabel: {
interval: 0,//如果设置为 1,表示『隔一个标签显示一个标签』,如果值为 2,表示隔两个标签显示一个标签,以此类推。
rotate: '45',// 刻度标签旋转的角度,在类目轴的类目标签显示不下的时候可以通过旋转防止标签之间重叠。
},
};
用法看官方文档:
interval: https://echarts.apache.org/zh/option.html#xAxis.axisLabel.interval
rotate: https://echarts.apache.org/zh/option.html#xAxis.axisLabel.rotate
网上有关的设置也看了下,几乎大同小异,比如:
Echarts x轴文本内容太长的几种解决方案 https://www.jianshu.com/p/b452cbe9be0e
Echarts-axislabel文字过长导致显示不全或重叠 https://www.cnblogs.com/hwaggLee/p/4762467.html
如何更加标签文字的总长度自动采取调整策略
对于固定模式的图标,我们直接设置 竖排展示或者旋转就可了。但是对于图表类平台,如何控制 X轴文字自适应显示呢
这就需要我们去计算 x轴标签文字的长度,然后去匹配图表宽度,然后才去旋转策略去显示
如何计算字符串在浏览器中显示的宽度
这个有两种方法,一个是直接计算字符串,第二个是canvas里面计算
通过文本计算字符串的宽度
/**
* @description 计算字符串在浏览器中显示的宽度
* @author andyzhou
* @create andyzhou
* @update 1/27/21 by andyzhou
* @param text {string|number}
* @param fontSize {number}
* @return {number}
*/
export default function computedTextWidth(text, fontSize = 14) {
let span = document.getElementById('computedTextWidth');
if (!span) {
span = document.createElement('span');
span.id = 'computedTextWidth';
span.style.cssText = 'visibility:hidden;position: absolute;left: -999em;top:-999em;';
document.body.appendChild(span);
}
span.style.fontSize = `${fontSize}px`;
span.innerHTML = text;
return span.offsetWidth;
};
这个方法可以共用,我就是直接采用这个
canvas里面计算文本宽度
在canvas绘图环境中,measureText()方法可以度量字体的宽度。measureText()方法返回了一个包含width属性的TextMetrics对象,后期我们会使用这个方法实现文本编辑器。
/**
* @description 计算字符串在浏览器中显示的宽度
* @author andyzhou
* @create andyzhou
* @update 1/27/21 by andyzhou
* @param text {string|number}
* @param fontSize {number}
* @return {number}
*/
export default function computedTextWidth2(text, fontSize = 14) {
let canvas = document.getElementById('computedTextWidth');
if (!canvas) {
canvas = document.createElement('canvas');
canvas.id = 'computedTextWidth';
canvas.style.cssText = 'visibility:hidden;position: absolute;left: -999em;top:-999em;';
document.body.appendChild(canvas);
}
const context = canvas.getContext('2d');
context.font = `${fontSize}px`;
context.fillText(text, 0, 0);
return context.measureText(text).width;
};
推荐采用这个函数
vue组件里面 echart坐标轴自适应文本
// 计算x周文本总宽度
const textWidth = categoryData.reduce((value, current) => value + computedTextWidth(current), 0);
// 计算组件容器宽度
const width = this.$parent.$el.clientWidth;
const rotate = width - 50 > textWidth ? 0 : 40;
this.options.xAxis = {
type: 'category',
axisLabel: {
interval: 0,
rotate,
},
axisTick: { show: false },
data: categoryData,
};
其他调整,原理和这个差不都,就不赘述了
转载本站文章《echarts图表X轴文字过长解决解决方案:根据文字长度自动旋转》,
请注明出处:https://www.zhoulujun.cn/html/webfront/visualization/charts/8611.html通过计算X轴文章渲染的总体宽度与图表容器的宽度,然后自动去调整x轴的显示方案,是才去旋转还是 换行。文字可以正常显示,不做调整。只有横排显示空间不够时,才做调整。
echarts图表X轴文字过长解决解决方案:根据文字长度自动旋转的更多相关文章
- jqueryflot图表x轴坐标过长完美解决方案(转)
近段时间,项目中使用到了flot这个图表工具,在实际使用的过程中,遇到了一个看似很简单的问题:当坐标的刻度如果过长时,会重叠在一起,影响阅读: 看到这个效果后的第一反应就是,能不能让坐标斜着显示啊?去 ...
- echarts图Y周坐标轴文字过长的解决方案
解决方案 只贴出关键代码 在翻看echarts文档的过程中我看到了坐标轴文字可以自行定义模板,于是想到了我给一个固定12的字数限制,超出部分以省略号代替,这样就不会造成图形范围忽大忽小了. axis ...
- 关于ECharts图表反复修改都无法显示的解决方案
解决方案:清空浏览器所有记录,再次刷新即可
- 解决ios横屏拍照图片自动旋转90度问题
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...
- Oracle 解决【ORA-01704:字符串文字太长】
错误提示:oracle在toad中执行一段sql语句时,出现错误‘ORA-01704:字符串文字太长’.如下图: 原因:一般为包含有对CLOB字段的数据操作.如果CLOB字段的内容非常大的时候,会导致 ...
- echarts统计图Y轴(或X轴)文字过长问题解决
echarts 统计图Y轴文字过长 在使用echarts时,出现数值非常大,Y轴又显示不下的情况就需要压缩Y轴数值刻度. 解决方法: yAxis: { type: 'value', axisLabel ...
- echarts x轴文字显示不全(解决方案)
echarts x轴标签文字过多导致显示不全 如图: 解决办法1:xAxis.axisLabel 属性 axisLabel的类型是object ,主要作用是:坐标轴刻度标签的相关设置.(当然yAxis ...
- Echarts中axislabel文字过长导致显示不全或重叠
最近在使用Echarts的时候,遇到点问题就是xAxis文字过长导致x轴的文字显示不全. 解决方案如下: 1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HT ...
- echarts x轴名称太长
echarts x轴名称太长了,隐藏一部分,鼠标移到名称上,显示全称 function extension(mychart, type) { let extension = document.getE ...
随机推荐
- Python利用xlutils统计excel表格数据
假设有像上这样一个表格,里面装满了各式各样的数据,现在要利用模板对它进行统计每个销售商的一些数据的总和.模板如下: 代码开始: 1 #!usr/bin/python3 2 # -*-coding=ut ...
- VS中RDLC提示类型不一致
错误"基类包括字段"XXXXXXX",但其类型(Microsoft.Reporting.WebForms.ReportViewer)与控件(Microsoft.Repor ...
- 报错 ncclCommInitRank failed.
环境 4 GeForce GTX 1080 GPUS docker image nnabla/nnabla-ext-cuda-multi-gpu:py36-cuda102-mpi3.1.6-v1.14 ...
- 为什么线程安全的List推荐使用CopyOnWriteArrayList,而不是Vector
注:本系列文章中用到的jdk版本均为java8 相比很多同学在刚接触Java集合的时候,线程安全的List用的一定是Vector.但是现在用到的线程安全的List一般都会用CopyOnWriteArr ...
- java中token的生成和验证
package com.zjn.token; /** * token编码工具类 * @author ouyangjun */ public class TokenEncryptUtils { // 编 ...
- Markdown高级使用之流程图
流程图在Markdown中的的表现形式就是代码块,代码块语言标记为mermaid.主要内容大体分为:方向.节点.节点间的连接关系,下面就围绕这三个点来整理. mermaid支持流程图.甘特图和时序图, ...
- Java通过jni调用动态链接库
(1)JNI简介 JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++).从Java1.1开始,JNI标准成为java ...
- vue uni-app项目中的tabbar
由于公司要求开发百度小程序,所以我们采用uni-app开发的方式,一套代码多个小程序都可以用,在开发小程序的时候我们也经常会使用到tabbar.当然自己写出来也是不错的.这个就来介绍uni-app中的 ...
- python之random 、os 、sys 模块
一.random模块 import random print(random.random())#(0,1)----float 大于0且小于1之间的小数 print(random.randint(1,3 ...
- vue踩坑记,持续更新中......
1.运行项目报错 you may use special comments to disable some waring. use //eslint-disable-next-line.....吧啦吧 ...