原文地址

今天突然有个我们的咨询公司找我问一个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实现不均匀刻度的方法,自定义刻度(转)的更多相关文章

  1. ECharts图表中级入门之formatter:夜谈关于ECharts图表内的数据格式化方法

    来源于:http://www.ithao123.cn/content-3751220.html 格式化之所以存在,主要是因为我们想把一些不够人性化的内容通过某种处理让其变得人性化,便于用户更好地理解内 ...

  2. C#Winform使用扩展方法自定义富文本框(RichTextBox)字体颜色

    在利用C#开发Winform应用程序的时候,我们有可能使用RichTextBox来实现实时显示应用程序日志的功能,日志又分为:一般消息,警告提示 和错误等类别.为了更好地区分不同类型的日志,我们需要使 ...

  3. [Effective JavaScript 笔记]第20条:使用call方法自定义接收者来调用方法

    不好的实践 函数或方法的接收者(即绑定到特殊关键字this的值)是由调用者的语法决定的.方法调用语法将方法被查找的对象绑定到this变量,(可参阅之前文章<理解函数调用.方法调用及构造函数调用之 ...

  4. plot sin示意图(隐藏刻度,自定义刻度)

    plot sin示意图(隐藏刻度,自定义刻度) 隐藏坐标轴刻度 自定义坐标轴刻度 Code #!/usr/bin/env python # -*- coding: utf-8 -*- import n ...

  5. AntD框架的upload组件上传图片时使用customRequest方法自定义上传行为

    本次做后台管理系统,采用的是 AntD 框架.涉及到图片的上传,用的是AntD的 upload 组件. 我在上一篇文章<AntD框架的upload组件上传图片时使用customRequest方法 ...

  6. 初次体验百度eCharts遇到的问题和解决方法

    前言 上周在厌烦Highchart下,体验了下百度的eCharts,支持IE6.7.8+外,对数据在线编辑还有工具栏支持,体验时遇到了几个小问题,最近两天在尝试得到了一个解决方法. Tooltip时单 ...

  7. 用MVC的辅助方法自定义了两个控件:“可编辑的下拉框控件”和“文本框日历控件”

    接触MVC也没多长时间,一开始学的时候绝得MVC结构比较清晰.后来入了门具体操作下来感觉MVC控件怎么这么少还不可以像ASP.net form那样拖拽.这样设计界面来,想我种以前没学过JS,Jquer ...

  8. Echarts 数据视图 生成Excel的方法

    一.生成Excel,两大方向:1后台生成Excel 查询数据库,使用NOPI生成Excel.2前台js生成Excel三种方式1)jquery.table2excel.js --采用,优势:兼容IE和C ...

  9. python魔法方法-自定义序列

    自定义序列的相关魔法方法允许我们自己创建的类拥有序列的特性,让其使用起来就像 python 的内置序列(dict,tuple,list,string等). 如果要实现这个功能,就要遵循 python ...

  10. 在Echarts 柱形图的单击事件中写入自定义的参数

    标签: 逻辑:(点击柱形图的某个实例(注意:三个柱子表示的是一个实例)) 参考链接:http://echarts.baidu.com/doc/example/event.html { name: ‘c ...

随机推荐

  1. crypto-gmsm国密算法库

    crypto-gmsm国密算法库 一.开发背景 crypto-gmsm国密算法库是国密商密算法(SM2,SM3,SM4)工具类封装,国产密码算法(国密算法)是指国家密码局认定的国产商用密码算法,目前主 ...

  2. ImportError: cannot import name 'six' from 'django.utils'的解决办法

    解决办法 对于3.x版本的django,安装django-utils-six2.0 pip install django-utils-six

  3. oracle 根据逗号拆分字符串一行转多行

    SELECT A.*, REGEXP_SUBSTR( A.PRODUCTNUMS, '[^,]+', 1, L ) AS PRODUCTNUM,L FROM LG_ZJQH_PRODUCTVALUES ...

  4. 人眼对led灯的闪烁识别度:写单片机的时候,小于15ms,我们人眼视为常亮

    人眼对于每11毫秒闪烁一次约83赫兹基本感觉不到,每15毫秒闪烁一次约66赫兹轻微频闪. 所以写单片机的时候,小于15ms,我们人眼视为常亮

  5. Java笔记_this关键字_HomeWork(5 - 9 题)

    第五题 /** * @ClassName HomeWork05 * @Description TODO * @Author Orange * @Date 2021/4/25 10:09 * @Vers ...

  6. PhpSpreadsheet导出科学记数转成字符串

    $logistic_code."\t"   加上\t即可转成字符串

  7. .net code 3.0 获取配置文件 json 和 config 中的值

    using Microsoft.Extensions.Configuration;using Microsoft.Extensions.FileProviders; using System.IO; ...

  8. openGL 学习笔记 (一) 了解 OpenGL,创建第一个OpenGL窗口

    // 序章最开始我以为OpenGL是一系列的API,他给出了一系列对计算机图像的操作接口.但其实OpenGL其实并不是一个API,他是由khronos组织制定并维护的规范. 早期的OpenGL使用立即 ...

  9. vue 分页显示 引用Element框架

    VUE组件 父页面-子组件-传值 单表查询图片上传: 注释为简单方法 图片显示方法: 红框处应该为地址+存图片的文件夹名  +当前图片的值 在vue中引用Element需要的步骤 1.在终端中输入网址 ...

  10. VS2010配置WTL

    1.首先去下载WTL 地址:http://wtl.svn.sourceforge.net/viewvc/wtl/?view=tar 2.安装App Wizard 找到"VS安装目录\VC\V ...