Echarts基本使用

164 阅读3分钟

1.echarts和图形大小自适应插件安装

通过资源管理器工具(yarn)输入命令

yarn add echarts

yarn add element-resize-detector

引入使用

import * as echarts from "echarts";
import ele from "element-resize-detector";

2.图形渲染

获取目标div的dom节点,设置参数进行渲染,渲染之前需要给定div的宽高

提示:当程序员需根据数据的数量设置宽或高时,调用 echarts.init 之前,如果DOM 容器没有设置宽高,图表显示可能就会有问题。

<template>
  <div class="ranking">
    <div ref="checkIn" id="checkIn"></div>
  </div>
</template>

<script>
import * as echarts from "echarts"
import ele from 'element-resize-detector'
export default {
  methods: {
    drawChart(){
        // let myChart = echarts.init(document.getElementById('checkIn'))
        let myChart = echarts.init(this.$refs.checkIn)
        // 获取dom节点时,不建议使用document.getElementById()来获取,因为当项目中有相同的id渲染不同图形时,会导致图形渲染不出来
        let options = {
            title: {
            
            },
            tooltip: {
                
            },
            grid: {
                
            },
            xAxis: {
                
            },
            yAxis: {
                
            },
            dataset: {
                
            },
            series: [
                
            ]
        }
        myChart.setOption(options)
        // 使用element-resize-detector插件自适应
        ele().listenTo(this.$refs.checkIn, function(e) {
            myChart.resize();
        })
    }
  }
}
</script>

<style lang='less' scoped>
.ranking {
  height: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  #checkIn {
    border-radius: 2%;
    width: 60%;
    height: 55%;
  }
}
</style>

3.options基本参数配置

  1. title-标题
title: {
  show: true, // 是否显示
  text: '', // 图形标题信息
  top: '', // 通过top、bottom、left、right设置标题信息位置
  textStyle: { // 标题信息文字样式
    color: 'rgb()',
    fontSize: ''
  }
}
  1. legend-图例
tooltip: {
  show: true, // 是否显示
  top: '', // 通过top、bottom、left、right设置图例位置
  width: '', // 设置图例宽
  height: '', // 设置图例高
  textStyle: { // 图例文字样式
    color: 'rgb()',
    fontSize: ''
  },
  icon: '' // 图例的icon图形:circle, rect, roundRect, triangle, diamond, pin, arrow, none
}
  1. tooltip-提示框
tooltip: {
  show: true, // 是否显示
  trigger: 'axis', // 触发类型 饼图=>item 柱状图、折线图=>axis 不触发=>none
  axisPointer: {
    type: '' // 指示器类型 line:直线指示器 shadow:阴影指示器 none:无指示器 cross:十字准星指示器
  },
  formatter: params => { // 自定义提示,不设置该属性则按默认格式展示
    // console.log(params) // 当触发该提示框可打印输出查看
    return ''
  },
  textStyle: { // 提示框浮层的文本样式
    color: 'rgb()',
    fontSize: ''
  }
}
  1. grid-直角坐标系
grid: {
  // 与绝对定位相似,top,left,right,bottom 设定是根据上级盒子宽高来计算
  // 如果图形为饼图,则无需配置该项
  top: '',
  bottom: '',
  left: '',
  right: '',
  containLabel: true // 防止标签溢出
}
  1. xAxis-直角坐标系x轴
xAxis: {
  show: true, // 是否显示
  type: '', // 坐标轴类型 value:数值轴 category:类目轴
  name: '', // 坐标轴名称
  boundaryGap: true, // 坐标轴两边是否留白
  inverse: false, // 是否是反向坐标轴
  axisLine: { // 坐标轴轴线设置
    show: false,
    ...
  },
  axisTick: { // 坐标轴刻度设置
    show: false,
    ...
  },
  axisLabel: { // 坐标轴刻度标签设置
    show: false,
    ...
  },
  splitLine: { // 坐标轴在直角坐标系中的分割线设置
    show: false,
    ...
  },
  data: [] // 设置直角坐标系中x轴的数据
}
  1. yAxis-直角坐标系y轴
yAxis: [ // 因为图形的y轴可能有两个,所以用数组包裹y轴的对象属性
{
  show: true, // 是否显示
  type: '', // 坐标轴类型 value:数值轴 category:类目轴
  boundaryGap: true, // 坐标轴两边是否留白
  inverse: false, // 是否是反向坐标轴
  axisLine: { // 坐标轴轴线设置
    show: false,
    ...
  },
  axisTick: { // 坐标轴刻度设置
    show: false,
    ...
  },
  axisLabel: { // 坐标轴刻度标签设置
    show: false,
    ...
  },
  splitLine: { // 坐标轴在直角坐标系中的分割线设置
    show: false,
    ...
  },
  data: [] // 设置直角坐标系中y轴的数据(基本不设置y轴数据)
}
]
  1. dataset-数据集
dataset: { // 个人比较喜欢使用数据集,当然也可以在serise中对象的data属性进行数据设置
  source: [
    ['name', 'value1'],
    ['~', '~'],
    ['~', '~']
  ]
}
  1. series
series: [
  {
    type: 'line', // 折线图
    yAxisIndex: 0, // 当存在多个y轴时,进行区别
    smooth: false, // 是否平滑曲线显示
    label: { // 图形上的文本标签设置
    }
  },
  {
    type: 'bar', // 柱状图
    barWidth: "4", // 设置柱状图图形宽度
    stack: '', // 图形堆叠,将参数相同的stack进行堆叠
    label: { // 图形上的文本标签设置
    }
  },
  {
    type: 'pie', // 饼图
    radius: ["~%", "~%"], // 饼图内圈与外圈大小设置,当内圈不为0且小于外圈可将饼图设置为环形图
    center: ["~%", "~%"], // 饼图中心点设置
    top: '', // 通过top、bottom、left、right设置饼图位置
    avoidLabelOverlap: false, // 是否启用防止标签重叠策略
    legendHoverLink: true, // 是否启用图例 hover 时的联动高亮
    label: { // 图形上的文本标签设置
      // 这里着重说明一下,在使用饼图的label时,如果数据项为零或空,此时对应的label文本找不到对应的图形,会出现在图形的左上角,所以不能确保数据可能为零或空时,不建议再使用该label属性!
    }
  }
]

最后附赠一个千分位函数,用于在echarts上显示数据大于千位时的展示

formatNum(value) {
  if (!value && value !== 0) return 0;
  let str = value.toString();
  let reg =
    str.indexOf(".") > -1 ? /(\d)(?=(\d{3})+\.)/g : /(\d)(?=(?:\d{3})+$)/g;
  return str.replace(reg, "$1,");
}