echarts使用小结

666 阅读2分钟

安装   

npm i echarts -S

使用

在模板中定义canvas区域

<template>
    <div id="charts" ref="charts" style="width: 300px; height: 200px;"></div>
</template>

初始化echart
<script>
import echarts from 'echarts';
import { columnarOption } from './echart.config.js';
export default {
  mounted() {
    const myChart = echarts.init(this.$refs.charts);
    myChart.setOption(columnarOption);
  }
};
</script>

  接下来是最重要的地方 echarts的配置
echart.config.js文件:


tooltip

export const columnOption = {
    tooltip: { // 提示框组件
        trigger: 'axis', // 触发类型:坐标轴触发
        formatter: function(params, ticket, callback) { // 自定义提示内容
            let str = '';
            // item.marker:icon标识符
            // item.key和item.value:自己在data中设置的内容
            params.forEach(item=>{
                str += `</br>${item.marker}${item.key}:${item.value}`
            })
            return str
        }
    },
    calculable: true, // 是否启用拖拽重计算特性,默认关闭(即值为false)
}

提示框组件:


grid

  直角坐标系内绘图网格,单个 grid 内最多可以放置上下两个 X 轴,左右两个 Y 轴。可以在网格上绘制折线图,柱状图,散点图(气泡图)。

grid: {
    top: 20 // grid 组件离容器顶部的距离
}

使用前:

使用后:


legend(图例组件)

  图例组件展现了不同系列的标记(symbol),颜色和名字。可以通过点击图例控制哪些系列不显示。

legend: {
  data: ['年度实际计划完成率', '三年计划完成率'], // 注意这样需要与series配置项的name一致
  selectedMode: false, // 控制是否可以通过点击图例改变系列的显示状态。(通过点击让其相应的数据显示or隐藏)
  bottom: 15, // 距离底部的距离
  itemWidth: 7, // icon的宽度
  itemHeight: 7, // icon的高度
  itemGap: 40, // 项与项之间的距离
  icon: 'circle', // icon的形状
  textStyle: { // 设置文字的样式
    color: '#fff',
    fontSize: 8
  }
}

显示如下:


xAxis、yAxis

  直角坐标系 grid 中的 x 轴,一般情况下单个 grid 组件最多只能放上下两个 x 轴,多于两个 x 轴需要通过配置 offset 属性防止同个位置多个 x 轴的重叠。

xAxis: [
  {
    axisLabel: {  
      textStyle: {
        color: '#ffffff',
        fontSize: 8
      },
      interval: 0 // 强制设置坐标轴分割间隔(默认是20,如果间隔过大则部分data会背隐藏)
      // rotate: 0  旋转字体
    },
    data: ['广州市', '深圳市', '佛山市', '东莞市', '中山市', '珠海市']
  }
]


同理设置y轴

yAxis: [
  {
    type: 'value',
    splitLine: { // 去除网格线
      show: false
    },
    axisLabel: {  
      textStyle: {
        color: '#ffffff',
        fontSize: 8
      }
    }
  }
]

series

  系列中的数据内容数组。数组项通常为具体的数据项。

series: [
  {
    name: '年度实际计划完成率',
    type: 'pictorialBar', // 象形柱图
    symbol: `image://data:image/png;base64,${blueColumImg}`, // 这里需要使用base64格式
    symbolSize: ['60%', '100%'],
    symbolOffset: ['150%', '0%'],
    // data: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7],
    data: dataHandler.yearData,
    itemStyle: {
      normal: {
        color: '#41A0EF'
      }
    }
  },
  {
    name: '三年计划完成率',
    // type: 'bar',
    type: 'pictorialBar',
    // barGap: '-20%',
    symbol: `image://data:image/png;base64,${greenColumImg}`,
    symbolSize: ['60%', '100%'],
    symbolOffset: ['150%', '0%'],
    // data: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7],
    data: dataHandler.threeYearData,
    itemStyle: {
      normal: {
        color: '#33F8A3'
      }
    }
  }, {
    // 蓝色柱子的球
    name: 'ball',
    type: 'pictorialBar',
    barGap: '0%',
    symbolPosition: 'end',
    symbolSize: 20,
    // symbolOffset: ['-140%', '-150%'],
    symbolOffset: dataHandler.ballOffset, // 球往x轴、y轴挪动的距离(为了保证球在柱体的上方)
    color: '#41A0EF',
    data: dataHandler.yearBallData  // 球的数据与柱体数据保持一致
    // data: [{
    //   value: 2.0,
    //   symbolSize: 7
    // }, {
    //   value: 4.9,
    //   symbolSize: 7
    // }, {
    //   value: 7.0,
    //   symbolSize: 7
    // }, {
    //   value: 23.2,
    //   symbolSize: 7
    // }, {
    //   value: 25.6,
    //   symbolSize: 7
    // }, {
    //   value: 76.7,
    //   symbolSize: 7
    // }]
  }, {
    // 绿色柱子的球
    name: 'ball',
    type: 'pictorialBar',
    barGap: '0%',
    symbolPosition: 'end',
    symbolSize: 20,
    // symbolOffset: ['-140%', '-150%'],
    symbolOffset: dataHandler.ballOffset,
    color: '#33F8A3',
    data: dataHandler.threeYearBallData
    // data: [{
    //   value: 2.6,
    //   symbolSize: 7
    // }, {
    //   value: 5.9,
    //   symbolSize: 7
    // }, {
    //   value: 9.0,
    //   symbolSize: 7
    // }, {
    //   value: 26.4,
    //   symbolSize: 7
    // }, {
    //   value: 28.7,
    //   symbolSize: 7
    // }, {
    //   value: 70.7,
    //   symbolSize: 7
    // }]
  }
]

显示的是中间的内容,这里实际上是4个数据(蓝色柱体与蓝色球为一条,绿色柱体与绿色球为一条)