echarts 全局换肤 echarts根据系统颜色换肤,echarts自定义icon,echarts发光效果

2023-05-16

官网定义颜色网址
效果
在这里插入图片描述
代码

<template>
  <div :id="id"></div>
</template>
<script>
import echarts from 'echarts';
import theme from './theme.json'; // 定义颜色的json
import { mapGetters } from 'vuex';
export default {
  props: ['id', 'pieData'],
  data() {
    return {
      charts: null,
      pieNames: [],
      imageUrl: require('@/assets/chart/chartalarm.png'), // icon图片
      color: [
        'rgba(226, 59, 65,1)',
        'rgba(201, 20, 34, 1)',
        'rgba(185, 40, 41, 1)',
        'rgba(253, 173, 56, 1)',
        'rgba(253, 195, 68, 1)',
        'rgba(251, 105, 164, 1)',
      ],
    };
  },
  watch: {
    pieData(val) {
      this.pieData.forEach((ele) => {
        this.pieNames.push(ele.name);
      });
      if (val.length > 0) {
        this.$nextTick(() => {
          if (this.theme === 'white-theme') {
            this.imageUrl = require('@/assets/chart/chartalarm2.png');
            this.initChart(this.id, theme.whitetheme);
          } else {
            this.imageUrl = require('@/assets/chart/chartalarm.png');
            this.initChart(this.id, theme.blacktheme);
          }
        });
      }
    },
    theme: {
      handler(val) {
        // 每次切换先销毁echarts实例,重新绘制echarts
        this.charts.dispose();
        if (val === 'white-theme') {
          this.$nextTick(() => {
            this.imageUrl = require('@/assets/chart/chartalarm2.png');
            this.initChart(this.id, theme.whitetheme);
          });
        } else {
          this.$nextTick(() => {
            this.imageUrl = require('@/assets/chart/chartalarm.png');
            this.initChart(this.id, theme.blacktheme);
          });
        }
      },
    },
  },
  computed: {
    ...mapGetters(['theme']),
  },
  methods: {
    initChart(id, themeType) {
      // 注册主题
      echarts.registerTheme('slef-theme', themeType);
      // 创建实例
      this.charts = echarts.init(document.getElementById(id), 'slef-theme');
      let option = {
        // animation: true, // 是否开启动画 默认为true
        // animationDuration: 500, // 动画时长 可以接受 回调函数
        // animationEasing: 'cubicInOut', // 缓动动画 动画样式方法
        // animationThreshold: 8, // 动画阈值 data 里面的元素多余8个停止动画
        color: this.color, // 色值
        // 定义icon
        graphic: {
          elements: [
            {
              type: 'image',
              style: {
                image: this.imageUrl,
                width: 130,
                height: 130,
              },
              left: 'center',
              top: 'center',
            },
          ],
        },
        tooltip: {
          trigger: 'item',
          formatter: '{a} <br/>{b} : {c} ({d}%)',
          position: 'inside',
        },
        legend: {
          bottom: 'bottom',
          data: this.pieNames,
        },
        series: [
          {
            name: '报警分析',
            type: 'pie',
            radius: ['43%', '55%'],
            data: this.createChartData(),
          },
        ],
      };
      // true 可选。是否不跟之前设置的 option 进行合并。默认为 false。即表示合并。如果为 true,表示所有组件都会被删除,然后根据新 option 创建所有新组件。
      this.charts.setOption(option, true);
    },
    // 创建Ecahrts数据,定义颜色
    createChartData() {
      let pieChartData = this.pieData;
      let data = [];
      for (var i = 0; i < pieChartData.length; i++) {
        data.push({
          value: pieChartData[i].value,
          name: pieChartData[i].name,
          itemStyle: {
            normal: {
              // borderWidth: 5,
              shadowBlur: 30,
              // borderColor: this.color[i],
              shadowColor: this.color[i],
            },
          },
        });
      }
      return data;
    },
  },
};
</script>

theme.json 文件

{
    "blacktheme": {
        "legend": {
            "textStyle": {
                "color": "#fff"
            }
        }
    },
    "whitetheme": {
        "legend": {
            "textStyle": {
                "color": "#262626"
            }
        }
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

echarts 全局换肤 echarts根据系统颜色换肤,echarts自定义icon,echarts发光效果 的相关文章

  • Ceres 自动求导解析-从原理到实践

    Ceres 自动求导解析 从原理到实践 文章目录 Ceres 自动求导解析 从原理到实践1 0 前言2 0 Ceres求导简介3 0 Ceres 自动求导原理3 1 官方解释3 2 自我理解 4 0 实践4 1 Jet 的实现4 2 多项式
  • 深度学习环境搭建之cuda、cudnn以及pytorch和torchvision的whl文件安装方法

    一 前言 假设已经装好了pycharm anaconda xff0c 并且新建了一个conda虚拟环境 xff08 我的虚拟环境名为pytorch xff09 接下来需要安装新版的显卡驱动 xff0c 安装cuda cudnn pytorc
  • FreeRtos快速入门

    堆和栈 堆 堆即为一块空闲的内存 xff0c 从这块内存中来取出一部分用完之后再把它释放回去 span class token comment 此时heap buf就相当于一块空闲的内存 span span class token comm
  • GNURadio 3.9 使用 OOT 自定义模块问题记录

    最近由于 GR3 8 里的卷积编码模块有问题就换用了 GR3 9 xff0c 发现 GR3 9 可以正常使用 xff0c 关于 GR3 8 里的卷积编码模块为什么不能用就先不深究了 xff0c 之前写过 GR3 8 编写 OOT 的流程 x
  • 2021-02-11

    多旋翼飞行器学习笔记 一 多旋翼基本组成 1 1机架 xff08 机身 起落架 涵道 xff09 1 机身 机身要考虑的有 xff1a 尺寸 布局 材料 强度 重量 指标参数包括 xff1a 重量 轴距 xff08 外圈电机围城圆的直径 x
  • JAVA学习51-线程礼让

    线程礼让 礼让线程 xff0c 让当前正在执行的线程暂停 xff0c 但不阻塞 将线程从运行状态转换为就绪状态 让CPU重新调度 xff0c 礼让不一定成功 xff0c 看CPU心情 span class token keyword pub
  • Jetson nano安装librealsense和realsense ROS wrapper

    1 安装librealsense librealsense可以使用外国dalao的安装脚本一键安装 git clone https github com JetsonHacksNano installLibrealsense git 这里选
  • ACFly A9飞控使用T265作为位置传感器

    使用一块Jetson nano读取T265数据发送给飞控代替光流实现室内定点飞行 1 Jetson nano数据发送 sudo apt get install ros melodic serial cd ros ws src catkin
  • In grDevices::dev.off() : agg could not write to the given file

    R语言画图保存是报的错误 stackoverflow和github上都没有相关问题 原因是 xff0c 保存的名字字符或标点不对 名字中的标点符号之类的不符合命名原则
  • C++ 创建txt文件,并实现读写txt文件

    最近在逐渐接触C 43 43 xff0c 看了网上很多回答 xff0c 做个汇总的记录 xff0c 方便以后查看 include lt fstream gt include lt iostream gt include lt string
  • eslint:vue报错 error Component name ““ should always be multi-word

    在使用vue cli创建项目 xff0c 命名好组件的时候 xff0c 报错 xff1a error Component name xxx should always be multi word xff0c 解决办法看最后 原因是官方的建议
  • PX4仿真

    XTDrone仿真 运行PX4仿真 span class token builtin class name cd span PX4 Firmware roslaunch px4 mavros posix sitl launch 通过下条命令
  • 安卓期末考试复习题

    安卓试题题型 1 选择题 xff08 10x1 39 xff09 2 填空题 xff08 5x2 39 xff09 3 简答题 xff08 4x5 39 xff09 4 程序分析题 xff08 10 39 xff09 5 编程题 xff08
  • GNURadio 运行报错:ERROR thread[thread-per-block[12]: <block ofdm_cyclic_prefixer(8)>]: Buffer too small

    在修改 GR 的 OFDM 例程时 xff0c 将 OFDM 子载波数从原来的 64 调整为 128 后运行出现了这个问题 xff0c 更全的错误提示如下 xff1a gr log ERROR thread body wrapper ERR
  • kalibr标定realsenseD435i(三)--imu+双目标定

    步骤一 xff1a 编写camchain yaml 具体的参数参考上面得到的yaml文件 xff0c 没有的参数可以删除 cam0 camera model pinhole distortion coeffs 0 3741003900681
  • VINS定位和即时八叉树建图步骤

    在工作空间catkin ws终端运行 1 先source一下 xff0c 以免报错 xff08 注 xff1a 后面每一步都可以source一下 xff09 source catkin ws devel setup bash 2 打开D43
  • ros中的launch文件

    对照运行的mav path plan launch文件进行一个学习 xff08 一 xff09 什么是roslaunch roslaunch是ROS提供的一个启动工具 xff0c 它能够使得启动多个ROS节点的过程变得简单 xff0c 同时
  • EGO Planner代码解析----CMakeLists.txt和package.xml

    ROS本质上就是由一个又一个的package组成的 xff0c package可以说是ROS的细胞 在catkin make的时候它会一个一个的去找package然后生成目标文件 一个package可以有多个节点 判断是否为Package
  • EGO Planner代码解析bspline_optimizer部分(3)

    1 int BsplineOptimizer earlyExit void func data const double x const double g const double fx const double xnorm const d
  • EGO Swarm翻译

    目录 摘要 介绍 相关工作 A 单四旋翼局部规划 B 拓扑规划 C 分布式无人机集群 基于梯度的局部规划隐式拓扑轨迹生成 A 无需ESDF梯度的局部路径规划 B 隐式拓扑轨迹生成 无人机集群导航 A 机间避碰 B 定位漂移补偿 C 从深度图

随机推荐