echarts高级应用

目录

一、显示相关

1.1、主题

1.1.1、内置主题

1.1.2、自定义主题

1.2、调色盘和颜色渐变

1.2.1、主题调色盘<全局调色盘<局部调色盘

1.2.2、线性渐变(linear)、径向渐变(radial)

1.3、直接样式和高亮样式

1.3.1、直接样式

1.3.2、高亮样式

1.4、图表自适应

二、动画的使用

2.1、图表加载动画

2.2、图表增量动画( myChart.setOption)

2.3、图表动画的配置项(animation、animationDuration、animationEasing、animationThreshold)

三、总结(交互API)

3.1、全局Echarts对象的常用方法

3.1.1、init()

3.1.2、registerTheme()

3.1.3、registerMap()

3.1.4、connect()

3.2、echartsInstance对象的常用方法

3.2.1、setOption

3.2.2、resize

3.2.3、on\off

3.2.4、dispatchAction

3.2.5、clear

3.2.6、dispose

一、显示相关

1.1、主题

1.1.1、内置主题

      init方法有两个参数: 第一个参数是一个dom节点,第二个参数是使用的主题;

      默认两套主题: light、dark

let myChart = this.$echarts.init(document.getElementById("main1"),'light');
let myChart = this.$echarts.init(document.getElementById("main1"),'dark');

1.1.2、自定义主题

echarts官网的顶部栏:下载下拉栏中的主题下载,进入后找到定制主题按钮进去,左侧点击下载主题按钮,普通html项目选择JS版本,得到infographic.js文件,放入项目文件夹中。vue项目则选择JSON 版本下载。然后在文件里改成自己想要的颜色即可!或者在主题编辑器”里选好再下载!

网址:主题编辑器 - Apache ECharts

//================引入=======================
import * as ets from "echarts";
import theme from "../../utils/theme.json";
//=================方法里使用=======================
ets.registerTheme("theme", theme); // 注册主题(参数1: 使用时的别名 参数2: 主题配置文件)
let myChart = ets.init(document.getElementById("main1"), theme);

1.2、调色盘和颜色渐变

调色盘是一组颜色,图形、系列会自动从其中选择颜色。

1.2.1、主题调色盘<全局调色盘<局部调色盘

(1)、主题调色盘(以“JS版本”为例):

(1)、全局调色盘:

color: ["red", "green", "blue", "skyblue", "purple"],
xAxis: {.......},
yAxis: {.......},

(1)、局部调色盘:

        series: [
          {
            type: "pie", //决定图标类型(bar、line、pie)
            color: ["red", "green", "blue", "skyblue", "purple"],
          },
        ],

1.2.2、线性渐变(linear)、径向渐变(radial)

        series: [
          {
           itemStyle: {
              color: {
                type: "linear",
                x: 0,
                y: 0,
                x2: 0,
                y2: 1,
                colorStops: [
                  {
                    offset: 0, //0%处颜色
                    color: "red",
                  },
                  {
                    offset: 1, //100%处颜色
                    color: "blue",
                  },
                ],
              },
              // color: {
              //   type: "radial",
              //   x: 0.5,
              //   y: 0.5,
              //   r: 0.5,
              //   colorStops: [
              //     {
              //       offset: 0, //0%处颜色
              //       color: "red",
              //     },
              //     {
              //       offset: 1, //100%处颜色
              //       color: "blue",
              //     },
              //   ],
              // },
            },
          },
        ],

1.3、直接样式和高亮样式

1.3.1、直接样式

itemStyle、textStyle、lineStyle、areaStyle、label

1.3.2、高亮样式

emphasis中包裹itemStyle、textStyle、lineStyle、areaStyle、label

以饼图为例:

pieData: [
        {
          name: "淘宝",
          value: 20,
          itemStyle: { color: "yellow" },
          label: { color: "green" },
          emphasis: {
            itemStyle: { color: "purple" },
            label: { color: "red" },
          },
        },
        { name: "京东", value: 30 },
        { name: "华为", value: 20 },
        { name: "拼多多", value: 10 },
        { name: "唯品会", value: 20 },
      ],
series: [
          {
            type: "pie",
            data: this.pieData,
          },
        ],

1.4、图表自适应

  监听window窗口大小变化的事件里,调用echarts实例对象的resize方法 

      // window.onresize = function () {
      //   myChart.resize();
      // };
      window.onresize =myChart.resize

二、动画的使用

2.1、图表加载动画

显示加载动画(myChart.showLoading())、隐藏加载动画(myChart.hideLoading())

    getDayAttendanceRate() {
      let myChart = this.$echarts.init(this.$refs.myChart);
      myChart.showLoading();//获取数据前,显示加载动画
      keepCountApi
        .getDayAttendanceRate()
        .then((res) => {
          if (res.status) {
            myChart.hideLoading();//当服务器数据获取成功后,隐藏加载动画
            this.optionFun(res.data);
          } else {
            this.$message.error(res.msg);
          }
        })
        .catch(() => {});
    },

2.2、图表增量动画( myChart.setOption)

  数据的更新都通过setOption实现,echarts会自动找到数组之间的差异然后通过‘动画’去表现数据的变化。

  mounted() {
    this.optionFun(this.list);
  },
  methods: {
    updateData() {//修改数据
      let newArr = [
        { time: "一班", value: 100 },
        { time: "二班", value: 200 },
        { time: "三班", value: 290 },
        { time: "四班", value: 300 },
        { time: "五班", value: 110 },
      ];
      this.optionFun(newArr);
    },
    addData() {//增加数据
      this.list.push({ time: "增加班级", value: 160 });
      this.optionFun(this.list);
    },
    optionFun(arr) {
      this.option = {
        xAxis: {
          type: "category",
          data: arr.map((d) => d.time),
        },
        yAxis: {
          type: "value", //数值轴
        },
        series: [
          {
            barWidth: 30,
            type: "bar",
            data: arr.map((d) => d.value),
          },
        ],
      };
      let myChart = this.$echarts.init(this.$refs.echartsMain);
      myChart.setOption(this.option);//因为执行了它,数据才会变化!
      window.onresize = myChart.resize;
    },
  },

2.3、图表动画的配置项(animation、animationDuration、animationEasing、animationThreshold)

        animation: true,//是否开启动画
        // animationDuration:7000,//动画时长
        animationDuration: function (arg) {
          return 2000 * arg;
        },
        animationEasing:'bounceOut',//缓动动画("回弹效果")
        animationThreshold:7,//动画阈值(元素数量>该值时会关闭动画)
        xAxis: {......},
        yAxis: {......},

三、总结(交互API)

网址:Documentation - Apache ECharts

3.1、全局Echarts对象的常用方法

全局Echarts对象是引入echarts.js文件之后就可以直接使用的

3.1.1、init()

初始化Echarts实例对象,使用主题

3.1.2、registerTheme()

注册主题,只有注册过的主题,才能在init方法中使用该主题

3.1.3、registerMap()

(1)、注册地图数据

      $.get("json/map/china.json", function (chinajson) {
        echarts.registerMap("china", chinajson);
      });

(2)、geo组件使用地图数据

      var option = {
        geo: {
          type: "map",
          map: "china",
        },
      };

3.1.4、connect()

  假设一个页面中有多个独立的图表,每个图标都会对应一个echarts实例对象,那么connect()可以实现多图关联,实际使用场景如下:

保存图片的自动拼接、刷新按钮、重置按钮、提示框联动、图例选择、数据范围修改....

    echarts.connect([myChart,myChart2])

3.2、echartsInstance对象的常用方法

echartsInstance对象是通过echarts.init方法调用之后得到的

3.2.1、setOption

  (1)、设置或修改图表实例的配置项以及数据

  (2)、可以多次调用该方法,会合并新旧数据(见增量动画)

3.2.2、resize

  (1)、重新计算和绘制图表

  (2)、一般和window对象的resize事件结合使用(见图表自适应)

3.2.3、on\off

  (1)、绑定或解绑事件处理函数

  (2)、鼠标事件、Echarts事件

myChart.on('click', function (params) {
    console.log(params);
});
myChart.off('click')

3.2.4、dispatchAction

  (1)、触发某些行为

  (2)、使用代码模拟用户的行为

     myChart.dispatchAction({
        type:'highlight',//事件类型
        seriesIndex:0,//图表索引
        dataIndex:1//图表中哪一项高亮
      })

3.2.5、clear

  (1)、清空实例中所有的组件和图表(myChart.clear()

  (2)、清空后可以再次setOption

3.2.6、dispose

   销毁实例myChart.dispose()),销毁后无法再次setOption

有个水球效果,可以参考: https://www.cnblogs.com/tu-0718/p/16722158.html

  • 8
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值