使用 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. 上海开发票/v电13543443967

    关于事项:Iㄋ5一★4З44一★ㄋ9.б7开发票的准备资料必须要公司名称个人的话就用个人名字和身份证去税务柜台申请办理!公司的话要提供公司全称就是营业执照上的名称,纳税人税号,如果是开普通增值税发票的 ...

  2. Python实用笔记 (8)高级特性——迭代

    如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration). 比如dict就可以迭代: >>> d = {'a ...

  3. Kubernetes 中 搭建 EFK 日志搜索中心

    简介 Elastic 官方已经发布了Elasticsearch Operator ,简化了 elasticsearch 以及 kibana的部署与升级,结合 fluentd-kubernetes-da ...

  4. POJ 3463 Sightseeing 【最短路与次短路】

    题目 Tour operator Your Personal Holiday organises guided bus trips across the Benelux. Every day the ...

  5. 【总结】Asp.Net Mvc 后台控制器获取页面发来的参数类型

    接收各种参数(普通参数,对象,JSON, URL) 待续...

  6. 浅谈MySQL数据库基本操作

    数据库配置 通过配置文件统一配置的目的:统一管理 服务端(mysqld) .客户端(client) 配置了 mysqld(服务端) 的编码为utf8,那么再创建的数据库,默认编码都采用utf8 配置流 ...

  7. .netcore开发环境和服务器注意事项

    对于开发环境,如果你需要使用.netcore命令的话,你需要安装SDK:如果你还需要运行.netcore的网站的话,你必须还要安装它的[runtime]和[hosting server]: 对于服务器 ...

  8. C++ 半同步半异步的任务队列

    代码已发布至 HAsyncTaskQueue

  9. SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束

    SQL基础随记1 SQL分类 常用函数 ALL ANY EXISTS IN 约束   其实这里知识不难,只是好久不接触突然被问的话有时还真的一时答不上,自己写一遍胜过盲扫.当然,也有些常读常新的地方会 ...

  10. POJ 3057 Evacuation 题解

    题目 Fires can be disastrous, especially when a fire breaks out in a room that is completely filled wi ...