备案审核专用网站模板

快速生成一个符合备案审核条件的静态网站

整理echarts的一些常用配置

echarts的基础用法就不讲了,官网上有很多demo,复制粘贴就能跑。这里主要整理一下笔者在公司中的常用配置。

1.双Y轴

当你的数据出现多条折线,而有的线条的数据很大,有的线条的数据很小,如果都统一放在一条Y轴上显示数据,则数据量小的会非常贴近X轴,这样就看不出数据的变化趋势,此时可以将数据分别展示,数据量大的在一边展示,数据量小的在另一边展示。

image.png

只需要配置好options.yAxis,然后在options.series中,给每个数据配置yAxisIndex即可,0是左边,1是右边。

options = {
    series: [
        {
            data: [...],
            type: "line",
            yAxisIndex: 0,
        },
        {
            data: [...],
            type: "line",
            yAxisIndex: 1,
        },
        ...
    ],
    yAxis: [
      {
        type: 'value',
        name: '',
        axisLabel: {
          formatter: '{value}',
        },
        alignTicks: true,
        axisLine: {
          show: true,
        },
      },
      {
        type: 'value',
        name: '',
        axisLabel: {
          formatter: '{value}',
        },
        alignTicks: true,
        axisLine: {
          show: true,
        },
      },
    ],
}
复制代码

2.loading效果

echarts自带了loading,在数据加载时可以调用showLoading(),取消加载时可以用hideLoading()

录制_2022_10_08_17_17_03_520.gif

3.no-data占位

echarts没有提供什么好的no-data占位,只能用title魔改。当没有数据的时候,首先是手动清空X轴和Y轴,然后再添加title;而当有数据的时候,删除delete title。

image.png

options = {
  title: {
    text: '此时间段暂无数据',
    textStyle: {
      color: 'black',
      fontWeight: 'normal',
      fontSize: 25,
    },
    left: '45%',
    top: '30%',
  },
};
复制代码

4.标签带单位

echarts的默认标签是没有带单位的,它也没有提供比较好的配置方法。但是echarts允许你自定义标签的html,此时可以在formatter的html里面添加单位。

image.png

配置如下,根据自己的项目自行更改:

option = {
    tooltip:{
        formatter: function (params) {
        const list: string[] = [];

        for (let i = 0; i < params.length; i++) {
          list.push(`
              <div style="width:250px">
                <i style="display: inline-block; width: 10px; height: 10px; border-radius: 50%; background-color: ${
                  params[i].color
                }; margin-right: 5px;"></i>
                <span >${params[i].seriesName}</span>
                <span style="float: right; font-weight: 800;">${params[i].data}  ${
            mapUnit[params[i].seriesName] ?? ''
          }</span>
              </div>
              `);
        }

        return `
              <div>
                <div style="text-align: center; font-weight: 800; margin-bottom: 10px;">${
                  params[0].axisValue
                }</div>
                ${list.join('')}
              </div>
            `;
      },
    }
}
复制代码

image.png