Echarts开发小技巧


Echarts开发小技巧

格式化数字,三个数字一个逗号

export function parseNumber(num) {
    try {
        let newNum = parseInt(num)
        return newNum.toLocaleString()
    } catch (error) {
        return 0
    }
}

环形图添加百分比显示

在 series 中添加如下代码表示在页面上会显示百分比

Snipaste_2022-05-07_17-19-57.png

label: {
    formatter(val) {
        return `${val.name} ${parseNumber(val.value)} (${val.percent}%)`
    }
}

在 tooltip 中添加如下代码,会在鼠标悬浮上去时显示百分比,其中 val.marker 表示每个颜色小圆点

Snipaste_2022-05-07_17-21-26.png

formatter(val) {
    return `${val.marker}${val.name} ${parseNumber(val.value)} (${val.percent}%)`
}

图示

Snipaste_2022-05-07_17-23-46.png

设置柱状图的x轴位置倾斜

在 xAxis 中添加如下代码即可实现文字倾斜,在文字过长时使用

Snipaste_2022-05-07_17-28-50.png

axisLabel: {
    rotate: 20 // 倾斜30度
}

图示

Snipaste_2022-05-07_17-30-58.png

修改环形图圆环大小

在 series 中添加 radius,第一个数字表示中心圆的大小,数字越大,中心的圆越大。第二个数字表示环形图本身的大小

Snipaste_2022-05-07_17-36-39.png

图示

Snipaste_2022-05-07_17-38-59.png

Snipaste_2022-05-07_17-40-07.png

x轴数据过长时显示滚动条

和 xAxis 平级添加如下代码即可实现滚动条

Snipaste_2022-05-07_17-32-59.png

dataZoom: [
    {
        type: 'slider',
        realtime: true,
        start: 0,
        end: 40, // 数据窗口范围的结束百分比。范围是:0 ~ 100。
        height: 20, // 组件高度
        left: 5, // 左边的距离
        right: 5, // 右边的距离
        bottom: 10, // 下边的距离
        show: true, // 是否展示
        fillerColor: 'rgba(17, 100, 210, 0.42)', // 滚动条颜色
        borderColor: 'rgba(17, 100, 210, 0.12)',
        handleSize: 0, // 两边手柄尺寸
        showDetail: false, // 拖拽时是否展示滚动条两侧的文字
        zoomLock: true, // 是否只平移不缩放
        moveOnMouseMove: false // 鼠标移动能触发数据窗口平移
        // zoomOnMouseWheel: false, //鼠标移动能触发数据窗口缩放
    },
    {
        type: 'inside', // 支持内部鼠标滚动平移
        start: 0,
        end: 40,
        zoomOnMouseWheel: false, // 关闭滚轮缩放
        moveOnMouseWheel: true, // 开启滚轮平移
        moveOnMouseMove: true // 鼠标移动能触发数据窗口平移
    }
],

图示

Snipaste_2022-05-07_17-33-42.png

添加局部Loading

首先封装 loading.js

import Vue from 'vue'
 
// loading框设置局部刷新,且所有请求完成后关闭loading框
let loading
let needLoadingRequestCount = 0 // 声明一个对象用于存储请求个数
function startLoading (targetdq) {
  loading = Vue.prototype.$loading({
    lock: true,
    text: '', // 显示的loading文字
    background: 'rgba(255,255,255,.4)',
    target: document.querySelector(targetdq) // 设置加载动画区域
  })
}
 
function endLoading () {
    loading.close()
}
export function showLoading (targetdq) {
  if (needLoadingRequestCount === 0) {
    startLoading(targetdq)
  }
  needLoadingRequestCount++
}
export function hideLoading () {
  if (needLoadingRequestCount <= 0) return
  needLoadingRequestCount--
  if (needLoadingRequestCount === 0) {
    endLoading()
  }
}
 
export default {
  showLoading,
  hideLoading
}

然后导出使用

import { showLoading, hideLoading } from '../../../utils/loading'

showLoading('.b-white')

setTimeout(() => {
    hideLoading()
}, 2000);

效果

Snipaste_2022-05-07_17-42-33.png

设置数据的最大值,不让柱状图直接顶到头

在 xAxis 中设置 max,放置柱状图直接订到头,不好看

Snipaste_2022-05-07_17-45-38.png

效果:

Snipaste_2022-05-07_17-47-09.png

上图中左右对比图的实现代码





设置在柱状图中显示数字

在 series 中添加 position,表示数字的显示位置

 label: {
     show: true,
         position: 'top',
             color: 'black'
 }

效果

Snipaste_2022-05-07_17-51-24.png

设置图例分页

当图例过多时,会拥挤到一块不好看,我们通过让图例分页,只在一行展示

在 legend 中添加如下代码

type: 'scroll'

Snipaste_2022-05-07_17-53-59.png

效果:

Snipaste_2022-05-07_17-55-11.png

Snipaste_2022-05-07_17-55-42.png