使用 echarts 的时候,可能我们需要这个图表的间隔是固定的。比如 3个 4个 5个。

(注意计算间隔数量的时候是不算 x轴 本身的。)

这个问题看似简单,其实有点麻烦。

yAxis.splitNumber number
[ default: 5 ]
坐标轴的分割段数,需要注意的是这个分割段数只是个预估值,最后实际显示的段数会在这个基础上根据分割后坐标轴刻度显示的易读程度作调整。 在类目轴中无效。

但其实这个设置可能并不管用。

因为 echarts 会根据你喂给她的数据自动判断应该有几个刻度,很多时候,你设置了3个,她却给你整了5个。

那么就只能自己设置 interval 和 max 了。

yAxis.max number, string
[ default: null ]
坐标轴刻度最大值。 可以设置成特殊值 'dataMax',此时取数据在该轴上的最大值作为最大刻度。

max 直接这样也是可以的,但是要考虑到除不尽时刻度线不是整数的问题,所以还是自己算吧。

  getYInterval = (arr, settingData) => {
const returnError = () => {
return {
interval:undefined,
max:undefined
}
} let max = 0
let interval = 0
const standand = settingData.yInterval ? settingData.yInterval : 3 if (!arr) {
return returnError()
} try { arr.forEach(item => {
if (!item.data) {
throw new Error()
}
item.data.forEach(child => {
max = Math.max(max, child)
})
}) } catch (e) {
return returnError()
} interval = max / standand if (interval !== parseInt(interval)) {
interval = Math.ceil(interval)
max = interval * standand
} return {
interval,
max
}
}

几个要点。

  • 用 try catch 和 判断 防止 前端框架(react)报错。
  • 刻度数量 standand 有默认的,也可以传进去。
  • 如果遇到除不尽的情况,就通过向上取整的方式重新设置 interval 和 max 。

然后在渲染时使用这个方法。

// ...
let yInterval
let yMax
if (settingData.xyType === "x") {
const obj = this.getYInterval(normalData.sData, settingData)
yInterval = obj.interval
yMax = obj.max
}
// ...
yAxisExtraData = {
axisLabel:{
show:true,
textStyle:{
color:'rgba(9,178,215,1)',
fontSize:16
}
},
axisLine:{
show:false,
lineStyle:{
color:'rgba(9,178,215,1)',
}
},
splitLine: {
lineStyle:{
color: 'rgba(45,57,75,1)'
}
},
axisTick:{
show:false
},
splitNumber:3,
minInterval:1,
interval:yInterval,
max:yMax
}

以上。

echarts 实战 : 恼人的间隔问题的更多相关文章

  1. echarts 实战 : 怎么写出和自动生成的一样的 tooltip ?

    找到答案很麻烦,但答案本身很简单. 假设 需要给 echarts 的数据是 option. option.tooltip.formatter = (params) => { return `&l ...

  2. echarts 实战 : 图表竖着或横着是怎样判定的?

    这个问题比较简单. echarts 的图表默认是竖着的. 只要 xAxis 和 yAxis 互换,竖着的图就变成了横着的图了. 所以我们可以可以写一个xy轴互换的方法. reverseXYAxis = ...

  3. echarts 实战 : 怎么处理特殊的图表数字 label ?

    所谓Label,就是在图表上面显示的那个数字. 但有的时候我们需要柱状图堆叠. 那如果我们需要所有数字都在外面,并且以 320/210/310/410/1320 这样的形式显示呢? 那么 echart ...

  4. echarts 实战 : 想让图例颜色和元素颜色对应,怎么办?

    首先,在 series 里设置颜色. (我是用js生成 echarts 需要的option对象,所以可能很难看懂) normalData.sData.forEach((item, index) =&g ...

  5. echarts 实战 : 标题的富文本样式

    官方文档在这一块交待的不是很清楚,记录一下. title:{ left:15, top:10, subtext:"AAA {yellow|316} BBB {blue|219}", ...

  6. Netty实战十四之案例研究(一)

    1.Droplr——构建移动服务 Bruno de Carvalho,首席架构师 在Droplr,我们在我的基础设施的核心部分.从我们的API服务器到辅助服务的各个部分都使用了Netty. 这是一个关 ...

  7. Echarts设置y轴值间隔 以及设置 barWidth : 30,//柱图宽度

    需求:如图,y轴之间的距离太小,这样就太过于拥挤了,现在要修改echarts里面的属性,设置y轴值间隔让图表看上去舒服一些.     其实很多问题,真的只是因为自己没有好好的看文档,很多文档上面都写的 ...

  8. Echarts的柱状统计图出现x轴统计时间出现间隔显示的问题

    今天在使用Echarts的柱状统计图出现x轴统计时间出现间隔显示的问题: 数据都拿到了,放到Json数组都是完整的, 展现是时候 如下图:

  9. JS实战 · 表格行颜色间隔显示,并在鼠标指定行上高亮显示

    思路: 1.获取所有行对象,将需要间隔颜色显示的行对象进行动态的className属性指定:      前提是:先定义好类选择器,就是说给行对象赋予name. 2.高亮用到两个事件:onmouseov ...

随机推荐

  1. javaScript深入浅出之理解闭包

    javaScript深入浅出之理解闭包 引言 闭包是个老生长谈的话题了,对于闭包网上也有很多不同的看法 <你不知道的javaScript>对于闭包是这么定义的:函数创建和函数执行不在同一个 ...

  2. 13.DRF-版本

    Django rest framework源码分析(4)----版本 版本 新建一个工程Myproject和一个app名为api (1)api/models.py from django.db imp ...

  3. Vuex怎么用(1)

    1. vuex是什么 github站点: https://github.com/vuejs/vuex在线文档: https://vuex.vuejs.org/zh-cn/简单来说: 对应用中组件的状态 ...

  4. Python3-os模块-操作系统的各种接口

    Python3中的os模块提供了一个便携的方式去使用操作系统的相关功能 os.name 返回导入的操作系统相关模块的名字,如 posix(unix/linux),nt(windows)等 os.env ...

  5. SQL注入之sqlmap进阶

    上一篇我们对sqlmap进行简单的介绍,并介绍了一些·sqlmap的基础用法,这篇让我们来更深入的了解一下sqlmap,了解一下它的强大功能. 探测等级 参数为 --level 在sqlmap中一共有 ...

  6. git命令--使用fork模式工作

    一. 1.第一步,先将原作者项目fork到自己的目录下,这个可以直接在控制台操作 可以看到该项目在ins-product目录下,fork之后,可以去查看自己的工作目录 可以看到在本人目录下已经存在该项 ...

  7. mybatis源码配置文件解析之四:解析plugins标签

    在前边的博客在分析了mybatis解析typeAliases标签,<mybatis源码配置文件解析之三:解析typeAliases标签>.下面来看解析plugins标签的过程. 一.概述 ...

  8. 利用oracle数据库闪回功能将oracle数据库按时间点恢复

    oracle更新脚本把原数据冲了,并且没有备份,急煞我也         解决办法:         oracle数据库有闪回功能:   select * from tab 可以查出已被删除的表    ...

  9. 如何理解nginx反向代理,其实叫逆向代理更容易让我理解

    接触nginx后,以我的语文水平,一直无法理解它神奇的名字:反向代理 怎么就反向了?反哪里去了 (以下部分图片.内容来自网络整理) 1.先理解正向代理 正向代理( Forward Proxy ): 客 ...

  10. PAT A1003 Emergency 题解

    PAT A1003 Emergency PAT A1003 Emergency 题目简述: 原题为英文题目,所以在这里简述一下题意: 给定n个点和m条无向路以及起点.终点 下面一行n个数,第i个数表示 ...