Echarts实现不均匀刻度的方法,自定义刻度(转)
今天突然有个我们的咨询公司找我问一个echarts问题,这个问题确实值得一解决,很有意思。
问题是这样的。数据中有很多低于100的数值,但是最高值却能达到14000。
data = [93.65, 101.08, 97.15, 171.58, 115.23, 127.55, 117, 115.46, 114.27, 106.68, 116.66, 110.77, 111.88, 114.08, 130.46, 129.04, 126.71, 116.46, 121.66, 119.56, 146.02, 741.23, 3436.16, 14700, 19,336, 8647.53, 4815.84, 4541.84, 4587.21, 5272.62]
他用常规的echarts实现效果如下:
他主要两个诉求:一是不均匀的划分Y轴,二是tooltip显示原值。
这个问题网上貌似没有一个成型的解决方案,所以我记录一下,方便他人。最终我实现的效果如下:
代码如下:
一、修改纵坐标的数值
yAxis: {
type: 'value',
axisLine:{
show:false
},
axisTick:{
show:false
},
min:0,
max:21000,
splitNumber:8,
axisLabel:{
formatter:function(v){
let item = ''
if(v===0){
item='0'
}else if(v==3000){
item = '1'
}else if(v==6000){
item = '100'
}else if(v==9000){
item = '300'
}else if(v==12000){
item = '500'
}else if(v==15000){
item = '1000'
}else if(v==18000){
item = '10000'
}else if(v==21000){
item = '20000'
}else if(v==24000){
item = '30000'
}
return item
}
}
},
二、处理原数据,采用的方法是把以前100以内的数据模拟到6000以内,就是同比例放大。
let wxdata = [93.65, 101.08, 97.15, 171.58, 115.23, 127.55, 117, 115.46, 114.27, 106.68, 116.66, 110.77, 111.88, 114.08, 130.46, 129.04, 126.71, 116.46, 121.66, 119.56, 146.02, 741.23, 3436.16, 14700, 19,336, 8647.53, 4815.84, 4541.84, 4587.21, 5272.62]
function formatData(arr){
let newHashArray = []
for(var i=0;i<arr.length;i++){
let obj={}
let temp = arr[i]
if(arr[i]>0&&arr[i]<1){
arr[i]=arr[i]*3000
}else if(arr[i]>1&&arr[i]<100){
arr[i]=3000+arr[i]*(3000/99)
}else if(arr[i]>100&&arr[i]<300){
arr[i]=6000+arr[i]*(3000/200)
}else if(arr[i]>300&&arr[i]<500){
arr[i]=9000+arr[i]*(3000/200)
}else if(arr[i]>500&&arr[i]<1000){
arr[i]=12000+arr[i]*(3000/500)
}else if(arr[i]>1000&&arr[i]<10000){
arr[i]=15000+arr[i]*(3000/9000)
}
obj.value = arr[i]
obj.formatV = temp
newHashArray.push(obj)
}
return newHashArray;
}
let wxArray = formatData(wxdata)
//二、在series中直接设置data,data会直接取value值
{
name: '微信小程序浏览量',
type: 'line',
areaStyle: {},
lineStyle:{
color:['rgb(7,193,96)'],
},
data:wxArray
},
//三、修改tooltip的值
tooltip: {
trigger: 'axis',
formatter(param){
return `微信访问:${param[7].data.formatV}`
}
},
这个折线就是模拟,精度肯定是不那么准确,但是看趋势还是不错的,而且tooltip的值也是准确的。还不错。
Echarts实现不均匀刻度的方法,自定义刻度(转)的更多相关文章
- ECharts图表中级入门之formatter:夜谈关于ECharts图表内的数据格式化方法
来源于:http://www.ithao123.cn/content-3751220.html 格式化之所以存在,主要是因为我们想把一些不够人性化的内容通过某种处理让其变得人性化,便于用户更好地理解内 ...
- C#Winform使用扩展方法自定义富文本框(RichTextBox)字体颜色
在利用C#开发Winform应用程序的时候,我们有可能使用RichTextBox来实现实时显示应用程序日志的功能,日志又分为:一般消息,警告提示 和错误等类别.为了更好地区分不同类型的日志,我们需要使 ...
- [Effective JavaScript 笔记]第20条:使用call方法自定义接收者来调用方法
不好的实践 函数或方法的接收者(即绑定到特殊关键字this的值)是由调用者的语法决定的.方法调用语法将方法被查找的对象绑定到this变量,(可参阅之前文章<理解函数调用.方法调用及构造函数调用之 ...
- plot sin示意图(隐藏刻度,自定义刻度)
plot sin示意图(隐藏刻度,自定义刻度) 隐藏坐标轴刻度 自定义坐标轴刻度 Code #!/usr/bin/env python # -*- coding: utf-8 -*- import n ...
- AntD框架的upload组件上传图片时使用customRequest方法自定义上传行为
本次做后台管理系统,采用的是 AntD 框架.涉及到图片的上传,用的是AntD的 upload 组件. 我在上一篇文章<AntD框架的upload组件上传图片时使用customRequest方法 ...
- 初次体验百度eCharts遇到的问题和解决方法
前言 上周在厌烦Highchart下,体验了下百度的eCharts,支持IE6.7.8+外,对数据在线编辑还有工具栏支持,体验时遇到了几个小问题,最近两天在尝试得到了一个解决方法. Tooltip时单 ...
- 用MVC的辅助方法自定义了两个控件:“可编辑的下拉框控件”和“文本框日历控件”
接触MVC也没多长时间,一开始学的时候绝得MVC结构比较清晰.后来入了门具体操作下来感觉MVC控件怎么这么少还不可以像ASP.net form那样拖拽.这样设计界面来,想我种以前没学过JS,Jquer ...
- Echarts 数据视图 生成Excel的方法
一.生成Excel,两大方向:1后台生成Excel 查询数据库,使用NOPI生成Excel.2前台js生成Excel三种方式1)jquery.table2excel.js --采用,优势:兼容IE和C ...
- python魔法方法-自定义序列
自定义序列的相关魔法方法允许我们自己创建的类拥有序列的特性,让其使用起来就像 python 的内置序列(dict,tuple,list,string等). 如果要实现这个功能,就要遵循 python ...
- 在Echarts 柱形图的单击事件中写入自定义的参数
标签: 逻辑:(点击柱形图的某个实例(注意:三个柱子表示的是一个实例)) 参考链接:http://echarts.baidu.com/doc/example/event.html { name: ‘c ...
随机推荐
- Vue 非单文件组件(不常用)3步骤(创建、注册、使用)和几个注意点、组件的本质(VueComponent)
Vue中使用组件的三大步骤: 1.定义组件(创建) 2.注册组件 3.使用组件(写组件标签) 一.如何定义一个组件? 使用Vue.extend(options)创建,其中options 和 new V ...
- 01-搭建小巧完善的Kubernetes环境
安装Docker Docker安装和基础命令 安装Minikube minkkube start 安装minikube curl -LO https://storage.googleapis.com/ ...
- url 获取 值
https://blog.csdn.net/weixin_50878675/article/details/126348725
- JavaSE总结(2)
控制语句idea.方法重载控制语句1.顺序结构从上到下从左到右依次执行2.判断结构 a.if(判断表达式){ 语句体; } b.if(判断表达式){ 语句 ...
- 【剑指Offer】【树】二叉树中和为某一值的路径
题目:输入一颗二叉树的根节点和一个整数,打印出二叉树中结点值的和为输入整数的所有路径.路径定义为从树的根结点开始往下一直到叶结点所经过的结点形成一条路径.(注意: 在返回值的list中,数组长度大的数 ...
- Windows Python2.7环境 安装paramiko模块(转)
http://t.zoukankan.com/staffyoung-p-5587450.html 链接,网上大多数都是同一篇文章 Paramiko是用python语言写的一个模块,遵循SSH2协议,支 ...
- Echarts 环形图 每项之间有间隙
option = { tooltip: { trigger: 'item' }, legend: { top: '5%', left: 'center', textStyle:{ color:'#ff ...
- Ubuntu20下载安装Docker
安装Docker 卸载旧版本 sudo apt-get remove docker \ docker-engine \ docker.io 使用apt安装 sudo apt-get update su ...
- Docker部署Springboot+Vue项目
1 docker使用nginx部署vue项目 1.1 打包vue项目 npm run build vue项目路径下会增加一个dist文件夹,里面就是网页文件 1.2 使用docker 拉取nginx ...
- 8.class 类
一.基础语法 class 类名 { } 二.类的属性 基础语法: class 类名 { 属性名: 数据类型 = 属性值; contructor(形参名: 数据类型) { this.属性名 = 属性值; ...