原文地址

今天突然有个我们的咨询公司找我问一个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. Spring Security 5 ----默认的filter都有什么用?

    我去找参考资料时,大部分只是来自于官网,但是很少分析为什么这么干,所以网络代码只停留于demo,生产级的应用却需要另外思考,不思考会有坑哦.大部分资料,合理不合理先不说,反正通了就行.本文试图去找寻, ...

  2. 【问题】Windows(CR LF)和Unix(LF)

    问题描述: 在获取一张JPG图片的信息数组后, 再将这些信息存入新建JPG文件, 却发现新建图片异常. image.jpg为原图 image1.jpg为新建图片 原因: 在Windows环境下, 使用 ...

  3. python中的上下文管理器以及python内建模块contextlib的contextmanager方法

    上下文管理器 上下文管理器是实现了上下文管理协议的对象,其特有的语法是"with -as".主要用于保存和恢复各种全局状态,关闭文件等,并为try-except-finally提供 ...

  4. 采集存储计算处理卡设计原理图:619-基于6U VPX的双FMC ZU19EG 采集存储计算处理卡

    619-基于6U VPX的双FMC ZU19EG 采集存储计算处理卡   基于6U VPX的双FMC ZU19EG 采集存储计算处理卡 一.板卡概述 该板卡是采集.存储.计算.管理一体的高集成度.加固 ...

  5. .net5 winform 打开文件夹

    直接使用System.Diagnostics.Process.Start("路径"),有可能会包拒绝访问的异常,建议采用以下写法: var  newPath="" ...

  6. 汇总-软件-分类:SSH客户端工具

    官网-FinalShell 官网-Tabby GitHub-Tabby

  7. String、StringBuffer、StringBuilder他们的区别

    String.StringBuffer.StringBuilder他们的区别 String: String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,然后将指针新的对 ...

  8. python官方文档:https://pypi.org/

    https://pypi.org/ Find, install and publish Python packages with the Python Package Index

  9. 设置view的圆角和阴影

    1.设置view圆角 self.backView.clipsToBounds = YES; self.backView.layer.cornerRadius = 6.f; 2.设置view阴影 sel ...

  10. GUI程序中使用Write语句调试

    Lazarus GUI程序中使用Write语句调试 比如像VB 下的 Debug.print 可直接在立即窗口中打印出调试内容 其实可以使用 WriteLn('XXXX ', XXX); Write( ...