vue中使用echarts实现人体动态图

最近一直处于开发大屏的项目,在开发中遇到了一个小知识点,在大屏中如何实现人体动态图。然后看了下echarts官方文档,根据文档中的示例调整出来自己想要的效果。
在这里插入图片描述
根据文档上发现 seriestype 类型设置为 象形柱形图,象形柱图是可以设置各种具象图形元素(如图片、SVG PathData 等)的柱状图。然后边采用SVG PathData来实现,通过SVG PathData实现后发现图片更省事。这也算是长见识了,哈哈。
参考文档
详细的文档大家也可以参考下官方文档:https://echarts.apache.org/zh/option.html#series-pictorialBar

接下来还是老规矩,看代码:

let symbols = [
	/*这里我使用的是base64方式,大家也可以根据喜好设置为 path://*/
	"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA",
	"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA",
	"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA",
	"image://data:image/png;base64,iVBORw0KGgoAAAANSUhEUgA",
];


option = {
  tooltip: {
    show: false, //鼠标放上去显示悬浮数据
  },

  grid: {
     left: '5%',
     right: '20%',
    top: "20%",
    bottom: "20%",
    containLabel: true,
  },
  xAxis: {
    data: ["a", "x", "b"],
    axisTick: {
      show: false,
    },
    axisLine: {
      show: false,
    },
    axisLabel: {
      show: false,
    },
  },
  yAxis: {
    max: 100,
    splitLine: {
      show: false,
    },
    axisTick: {
      show: false,
    },
    axisLine: {
      show: false,
    },
    axisLabel: {
      show: false,
    },
  },
  series: [
    {
      name: "",
      type: "pictorialBar",
      symbolClip: true,
      symbolBoundingData: 100,
      label: {
        normal: {
          show: true,
          position: "bottom",
          offset: [0, 10],
          formatter: "{b}\n{c}%",
          textStyle: {
            fontSize: 16,
            color: "#686868",
          },
        },
      },
      symbolSize: ['50%', '100%'],
      data: [
        {
          name: "低体重",
          value: 35,
          //采用base64方式
          symbol: symbols[0],
         //symbolSize: ['50%', '50%'],
          itemStyle: {
            normal: {
              color: "rgba(73, 107, 168)", //单独控制颜色
            },
          },
        },
        {
          name: "正常",
          value: 25,
          symbol: symbols[1],
          itemStyle: {
            normal: {
              color: "rgba(98, 123, 81)", //单独控制颜色
            },
          },
        },
        {
          name: "超重",
          value: 20,
          symbol: symbols[2],
          itemStyle: {
            normal: {
              color: "rgba(163, 126, 46)", //单独控制颜色
            },
          },
        },
        {
          name: "肥胖",
          value: 30,
          symbol: symbols[3],
          itemStyle: {
            normal: {
              color: "rgba(180, 79, 33)", //单独控制颜色
            },
          },
        },
      ],
      z: 10,
    },

    {
      // 设置背景底色,不同的情况用这个
      name: "",
      type: "pictorialBar", //异型柱状图 图片、SVG PathData
      symbolBoundingData: 100,
      animationDuration: 10,
      z: 10,
      symbolSize: ['50%', '100%'],
      data: [
        {
          itemStyle: {
            normal: {
              color: "rgba(73, 107, 168, 0.2)",
              opacity: 0.4,
            },
          },
          value: 100,
          symbol: symbols[0],
          
        },

        {
          itemStyle: {
            normal: {
              color: "rgba(98, 123, 81,0.40)", //单独控制颜色
              opacity: 0.4,
            },
          },
          value: 100,
          symbol: symbols[1],
        },
        {
          itemStyle: {
            normal: {
              color: "rgba(163, 126, 46,0.40)", //单独控制颜色
              opacity: 0.4,
            },
          },
          value: 100,
          symbol: symbols[2],
        },
        {
          itemStyle: {
            normal: {
              color: "rgba(180, 79, 33, 0.4)", //单独控制颜色
              opacity: 0.4,
            },
          },
          value: 100,
          symbol: symbols[3],
        },
      ],
    },
  ],
};

以上代码便是使用base64方式实现,
另外后面优化代码采用了 图片方式,其实与base64方式区别在于引用。

const option = {
					 tooltip: {
					    show: false, //鼠标放上去显示悬浮数据
					  },
					
					  grid: {
					    left: '5%',
					    right: '25%',
					    top: "10%",
					    bottom: "20%",
					    containLabel: true,
					  },
					  xAxis: {
					    data: ["a", "x", "b"],
					    axisTick: {
					      show: false,
					    },
					    axisLine: {
					      show: false,
					    },
					    axisLabel: {
					      show: false,
					    },
					  },
					  yAxis: {
					    max: 100,
					    splitLine: {
					      show: false,
					    },
					    axisTick: {
					      show: false,
					    },
					    axisLine: {
					      show: false,
					    },
					    axisLabel: {
					      show: false,
					    },
					  },
					  series: [
					    {
					      name: "",
					      type: "pictorialBar",
					      symbolClip: true,
					      symbolBoundingData: 100,
					      label: {
					        normal: {
					          show: true,
					          position: "bottom",
					          offset: [0, 10],
					          formatter: "{b}\n{c}%",
					          textStyle: {
					            fontSize: 14,
					            color: "#fff",
					          },
					        },
					      },
					      data: [
					        {
					          name: "低体重",
					          value: 35,
					          symbol: 'image://' + require("../assets/images/1-image.png"),
							  symbolSize: ['50%', '100%'],
					          itemStyle: {
					            normal: {
					              color: "rgba(73, 107, 168)", //单独控制颜色
					            },
					          },
					        },
					        {
					          name: "正常",
					          value: 25,
					          symbol: 'image://' + require("../assets/images/2-image.png"),
							  symbolSize: ['50%', '100%'],
					          itemStyle: {
					            normal: {
					              color: "rgba(98, 123, 81)", //单独控制颜色
					            },
					          },
					        },
					        {
					          name: "超重",
					          value: 20,
					         symbol: 'image://' + require("../assets/images/3-image.png"),
							  symbolSize: ['50%', '100%'],
					          itemStyle: {
					            normal: {
					              color: "rgba(163, 126, 46)", //单独控制颜色
					            },
					          },
					        },
					        {
					          name: "肥胖",
					          value: 30,
					          symbol: 'image://' + require("../assets/images/4-image.png"),
							  symbolSize: ['50%', '100%'],
					          itemStyle: {
					            normal: {
					              color: "rgba(180, 79, 33)", //单独控制颜色
					            },
					          },
					        },
					      ],
					      z: 10,
					    },
					
					    {
					      // 设置背景底色,不同的情况用这个
					      name: "",
					      type: "pictorialBar", //异型柱状图 图片、SVG PathData
					      symbolBoundingData: 100,
					      animationDuration: 10,
					      z: 10,
					      data: [
					        {
					          itemStyle: {
					            normal: {
					              opacity: 0.6,
					            },
					          },
					          value: 100,
					         symbol: 'image://' + require("../assets/images/1-image.png"),
							  symbolSize: ['50%', '100%'],
					        },
					
					        {
					          itemStyle: {
					            normal: {
					              opacity: 0.6,
					            },
					          },
					          value: 100,
					          symbol: 'image://' + require("../assets/images/2-image.png"),
							  symbolSize: ['50%', '100%'],
					        },
					        {
					          itemStyle: {
					            normal: {
					              opacity: 0.6,
					            },
					          },
					          value: 100,
					          symbol: 'image://' + require("../assets/images/3-image.png"),
							  symbolSize: ['50%', '100%'],
					        },
					        {
					          itemStyle: {
					            normal: {
					              opacity: 0.6,
					            },
					          },
					          value: 100,
					          symbol: 'image://' + require("../assets/images/4-image.png"),
							  symbolSize: ['50%', '100%'],
					        },
					      ],
					    },
					  ],	
				};

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/429775.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Gitlab 安装部署

目录 1、Jenkins 结合 Gitlab 构建 CI/CD 环境 CI/CD 介绍 CI/CD 流程 Jenkins 简介 GitLab 简介 项目部署方式 CI系统的工作流程 2、搭建 GitLab 安装 GitLab 配置 GitLab 修改root密码 访问 GitLab 开机自启 3、使用 GitLab 管理 GitLab 关闭 GitLab 注册功能…

Conda笔记--移动Conda环境后pip使用异常的解决

1--概述 由于各种原因,需要将Anaconda转变为Minicoda,为了保留之前安装的所有环境,直接将anaconda3/envs的所有环境拷贝到Miniconda/envs中,但在使用移动后环境时会出现pip的错误:bad interpreter: No such file or di…

AWS的RDS数据库开启慢查询日志

#开启慢日志两个参数 slow_query_log 1 设置为1,来启用慢查询日志 long_query_time 5 (单位秒) sql执行多长时间被定义为慢日志1. 点击RDS然后点击参数组,选择slow_query_log,设置为1【表示开启慢日志】点击保存…

力扣hot9---滑动窗口

题目: 先记录一下(没想到有生之年,还能):其实还能优化,后面会讲述优化思路 思路: 滑动窗口的大小就是固定的,就是len_p。那么依次将窗口从s的最左端向右滑动。在当下的窗口中&#x…

python概率分析:为什么葫芦娃救爷爷是一个一个地救成功率最高?

关键词: Python 、葫芦娃 、 概率计算 、 数学 、 建模 前言 过完年了返工后想起了小孩子们爱看的葫芦娃救爷爷的动画片,葫芦娃为什么是一个一个前去救爷爷,为什么不等着七个一起去救爷爷。带着这个疑问,我决定今天用数学的角度…

微信小程序用户隐私保护指引设置

场景:开发小程序时,有时候需要获取用户隐私信息,在提交小程序审核时,需要填写一份隐私保护协议,经常由于填写不规范导致审核不通过,在网上找到了一份模块可供参考 步骤:小程序后台-》设置-》服…

MySQL 学习笔记(基础篇 Day1)

「写在前面」 本文为黑马程序员 MySQL 教程的学习笔记。本着自己学习、分享他人的态度,分享学习笔记,希望能对大家有所帮助。 目录 0 课程介绍 1 MySQL 概述 1.1 数据库相关概念 1.2 MySQL 数据库 2 SQL 2.1 SQL 通用语法 2.2 SQL 分类 2.3 DDL 2.4 图形…

周最佳:詹姆斯场均30.3分8.7助 杰伦-布朗场均28.3分分别当选

直播吧指定地址:www.bdky.cn 3月5日讯 今日NBA官方公布了本赛季第19周周最佳球员,湖人球星勒布朗-詹姆斯和绿军球星杰伦-布朗分别当选。 上周詹姆斯场均可以得到30.3分4.7篮板8.7助攻,湖人取得2胜1负战绩。 布朗场均可以得到28.3分5.3篮板…

Linux中断实验:定时器实现按键消抖处理实验一

一. 简介 前面文章学习了Linux驱动按键中断实验,文章地址如下: Linux驱动按键中断实验:按键中断功能的实现-CSDN博客 本文在Linux驱动按键中断实现的基础上,使用定时器实现按键消抖处理。 二. Linux中断实验:定时器…

java:String和StringBuilder 的相互转换实现字符串拼接

public class StringDemo {/* 练习题:字符串拼接升级版1.定义一个int类型的数组,用静态初始化完成数组元素的初始化2.定义一个方法,用于把int数组中的数据按照指定格式拼接成一个字符串返回3.在方法中用StringBuilder按照要求进行拼接&#x…

新生儿放屁的温馨小贴士:呵护宝宝舒适健康成长

引言 新生儿的生活充满了各种令人惊喜和可爱的瞬间,其中包括他们放臭屁的时刻。尽管这看似简单的行为可能引发父母的担忧,但实际上,它通常是宝宝健康发展的自然表现。在这篇文章中,我们将分享一些关于新生儿放臭屁的注意事项&…

面试经典150题 -- 回溯 (总结)

总的链接 : 面试经典 150 题 - 学习计划 - 力扣(LeetCode)全球极客挚爱的技术成长平台 17 . 电话号码的字母组合 1 . 先创建一个下标 与 对应字符串映射的数组,这里使用hash表进行映射也是可以的 ; 2 . 对于回溯 ,…

MySQL性能优化-Mysql索引篇(1)

什么是索引? 数据库中的索引,就好比一本书的目录,它可以帮我们快速进行特定值的定位与查找,从而加快数据查询的效率。索引就是帮助数据库管理系统高效获取数据的数据结构。如果我们不使用索引,就必须从第 1 条记录开始…

什么台灯护眼效果好?一文搞懂如何正确挑选护眼台灯

现在的孩子学习状态可以用四个字来形容,“学业繁重”,不少孩子从上小学开始,晚上完成功课到八九点都是在正常不过的事情了,因此室内的光线环境是非常重要的,直接影响了视力健康尤其是书桌上的那一盏台灯,有…

012 Linux_线程控制

前言 本文将会向你介绍线程控制(创建(请见上文),终止,等待,分离) 线程控制 线程终止 pthread_t pthread_self(void); 获取线程自身的ID 如果需要只终止某个线程而不终止整个进程,可以有三种…

SparkShop开源可商用,匹配小程序H5和PC端带分销功能!

SparkShop(星火商城)B2C商城是基于thinkphp6 elementui的开源免费可商用的高性能商城系统;包含小程序商城、H5商城、公众号商城、PC商城、App,支持页面diy、秒杀、优惠券、积分、分销、会员等级。营销功能采用插件化的方式方便扩展、二次开发 源码下载…

表单验证、属性绑定(一个属性根据另一个属性有无进行操作)

表单验证 一个属性根据另一个属性有无进行操作(属性绑定) 1、问题描述 ​ 需求:表单里面后两个属性需要根据前面一个属性进行有无判断。如果前面属性没有输入值,则不需要进行操作;如果前面属性有输入值,则…

Docker Swarm全解析:实现微服务高可用与故障转移的秘密武器

🐇明明跟你说过:个人主页 🏅个人专栏:《Docker入门到精通》 《k8s入门到实战》🏅 🔖行路有良友,便是天堂🔖 目录 一、基本概念和介绍 1、Docker Swarm 是什么,它与 …

Rabbitmq消息丢失-消费者消息丢失(二)

说明:消费端在处理消息的过程中出现异常,例如:业务逻辑异常,或者消费者被停机,或者网络断开连接等,以上等情况使消息没有得到正确恰当的处理,也会使消息丢失。 分析:分析就是说明中…

【MATLAB第97期】基于MATLAB的贝叶斯Bayes算法优化BiGRU双向门控循环单元的多输入单输出回归预测模型,含GRU与BiGRU多层结构优化选择

【MATLAB第97期】基于MATLAB的贝叶斯Bayes算法优化BiGRU双向门控循环单元的多输入单输出回归预测模型,含GRU与BiGRU结构层数优化 前言 前面在【MATLAB第10期】讲解了基于贝叶斯Bayes算法优化LSTM长短期记忆网络的多输入单输出回归预测模型。 本次模型难点包括&am…