echarts 饼图中心添加图片

news2025/7/28 0:21:18

需求

在这里插入图片描述

问题 - 暂时无法解决(如果图标居中不存在该问题)

由于此处饼图位置不处于当前 echarts 图表容器的中心位置,而是偏左一点,我们需要设置:

  1. 中心图片所在靠左位置【见 - 主要代码1】官方手册 https://echarts.apache.org/zh/option.html#graphic.elements-image.left
  2. 饼图所在靠左位置【见 - 主要代码2】官方手册 https://echarts.apache.org/zh/option.html#series-pie.radius

【主要代码1】【主要代码2】需要同时修改 距左侧距离:

  1. 固定值 的话浏览器窗口过大 时饼图过大,会导致饼图左侧部分区域 超出
    在这里插入图片描述
  2. 百分比 的话中心图片的距左百分比和饼图距左百分比 对应不上 (中心图片百分比参照容器计算有问题),会导致错位。(也会超出,但此处错位是主要问题)
    在这里插入图片描述

代码

<template>
  <div id="AnomalyStatisticsEcharts" />
</template>

<script>
export default {
  name: 'AnomalyStatisticsEcharts',
  components: {},

  props: {
    theme: {
      type: String,
      required: true
    },
    dataList: {
      type: Array,
      // required: true
      default: () => {
        return [
          { value: 20, name: '测试1', pre: '10' },
          { value: 20, name: '测试2', pre: '10' },
          { value: 20, name: '测试3', pre: '10' },
          { value: 20, name: '倒计时社保卡接收不到三部分但实际福克斯', pre: '10' },
          { value: 20, name: '测试5', pre: '10' },
          { value: 20, name: '测试6', pre: '10' },
          { value: 20, name: '测试7', pre: '10' }
        ]
      }
    }
  },

  data() {
    return {
      Echarts: null
    }
  },

  computed: {
    options() {
      return {
        graphic: {
          /**
           * 【主要代码】图形中心展示图片
           */
          elements: [
            {
              type: 'image',
              style: {
                image: require('@/assets/images/home/home_pie_center.png'), // 图片地址
                width: 120,
                height: 120
              },
              // left: '18.5%',
              left: '60', // 【主要代码1】
              top: 'center'
            }
          ]
        },
        title: {
          show: !this.dataList.length,
          text: '暂无数据',
          left: 'center',
          top: 'center',
          textStyle: {
            color: this.theme === 'light-theme' ? '#000' : '#fff'
          }
        },
        tooltip: {
          trigger: 'item'
        },
        grid: {
          left: 0
        },
        legend: {
          type: 'scroll',
          top: '5%',
          right: 0,
          orient: 'vertical',
          itemGap: 14,
          itemWidth: 14,

          formatter: (name) => {
            for (let i = 0; i < this.dataList.length; i++) {
              if (this.dataList[i].name === name) {
                const count = this.dataList[i].value
                const percent = `${this.dataList[i].pre}%`
                return `{name| ${name}} {count| ${count} |} {percent| ${percent}} `
              }
            }
          },
          textStyle: {
            // rich放在textStyle里面
            rich: {
              name: {
                fontSize: 14
                // width: 100
              },
              count: {
                fontSize: 14
              },
              percent: {
                fontSize: 14
              }
            }
          }
        },
        series: [
          {
            name: '异常点统计分析',
            type: 'pie',
            radius: ['70%', '90%'],
            // center: ['25%', '50%'],
            center: ['120', '50%'], // 【主要代码2】
            avoidLabelOverlap: false,
            itemStyle: {
              // borderRadius: 10,
              borderWidth: 2,
              borderColor: '#fff'
            },
            label: {
              show: false,
              position: 'center'
            },
            emphasis: {
              label: {
                show: true,
                fontSize: 20,
                fontWeight: 'bold',

                renderMode: 'html',
                formatter: ['{b|{b}}', '{c|{c}}'].join('\n'),
                // formatter: (params) => {
                //   console.log('params----', params)
                //   return `<div>aaaaa</div>`
                // },
                rich: {
                  b: {
                    color: '#000',
                    fontSize: 16,
                    padding: [0, 0, 10, 0]
                  },
                  c: {
                    fontSize: 32,
                    color: '#222',
                    fontWeight: 'bold'
                  }
                }
              }
            },
            labelLine: {
              show: false
            },
            data: this.dataList || []
          }
        ]
      }
    }
  },

  watch: {
    theme() {
      this.init()
    },
    dataList() {
      this.init()
    }
  },

  created() {},
  mounted() {
    window.addEventListener('resize', () => {
      if (document.getElementById('AnomalyStatisticsEcharts')) {
        this.Echarts = this.$echarts.init(document.getElementById('AnomalyStatisticsEcharts'))
        this.Echarts.resize()
      }
    })

    this.init()
  },

  methods: {
    init() {
      if (this.Echarts) {
        this.Echarts.dispose()
      }
      this.Echarts = this.$echarts.init(document.getElementById('AnomalyStatisticsEcharts'))

      this.Echarts.setOption(this.options)
      // 高亮
      let currentIndex = 0
      this.Echarts.dispatchAction({
        type: 'highlight',
        seriesIndex: 0,
        dataIndex: currentIndex
      })
      this.Echarts.on('mouseover', (params) => {
        // 取消之前高亮
        this.Echarts.dispatchAction({
          type: 'downplay',
          seriesIndex: 0,
          dataIndex: currentIndex
        })
        // 获取当前高亮索引
        currentIndex = params.dataIndex
        // 设置当前高亮
        this.Echarts.dispatchAction({
          type: 'highlight',
          seriesIndex: 0,
          dataIndex: params.dataIndex
        })
      })
    }
  }
}
</script>

<style lang='scss' scoped>
#AnomalyStatisticsEcharts {
  width: 100%;
  height: 100%;
}
</style>

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

记一次 logback 没有生成独立日志文件问题

背景 在新项目发布后发现日志文件并没有按照期望的方式独立开来&#xff0c;而是都写在了 application.log 文件中。 问题展示 日志文件&#xff1a; 项目引入展示&#xff1a; <include resource"paas/sendinfo/switch/client/sendinfo-paas-switch-client-log.…

全面解析C++ std::move

全面解析C std::move 本篇文章首发知识星球&#xff0c;感兴趣的可以点击下方加入即可。 std::move 是一个非常重要的函数&#xff0c;它提供了一种方式&#xff0c;可以将一个左值对象标记为一个特殊类型的右值对象&#xff0c;即 xvalue。这种转变是为了允许执行移动语义&…

通过wordpress能搭建有影响力的帮助中心

wordpress建站服务是一种提供简单易用的工具和功能&#xff0c;帮助用户轻松创建和管理网站的服务。它适用于各类网站管理员、个人博主和小型企业主&#xff0c;无论是想要搭建个人博客、展示作品集还是开设在线商店&#xff0c;都可以通过wordpress建站服务来实现。 | 一、搭建…

反转链表II(C++解法)

题目 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&#xff1a;[1…

嘴尚绝:健康卤味风靡市场,美味与健康并行

随着人们生活水平的提高&#xff0c;健康饮食成为越来越多人的追求。在卤味市场&#xff0c;传统重口味卤味逐渐被健康卤味所取代。本文将探讨健康卤味如何逐步占领市场&#xff0c;以及其背后的原因和未来的发展趋势。 卤味&#xff0c;作为中国美食的代表之一&#xff0c;有…

【FastBond2阶段1——基于ESP32C3开发的简易IO调试设备】

【FastBond2阶段1——基于ESP32C3开发的简易IO调试设备】 1. 功能介绍2. 主要元器件介绍2.1 主控板&#xff1a;CORE ESP32-C3核心板2.2 传感器2.2.1 旋转编码器&#xff1a;2.2.2 模拟ADC&#xff1a;2.2.3 GPIO接口&#xff1a; 2.3 执行器2.3.1 WS2812:2.3.2 90舵机&#xf…

Linux期末复习——C编程基础

Linux下C语言编译环境概述 编译器&#xff1a;VI 编译器&#xff1a;GCC 调试器&#xff1a;GDB 项目管理器&#xff1a;make vi编辑器 三种模式 命令行模式&#xff1a;默认模式&#xff0c;不可以编辑&#xff0c;只可以上下移动光标“整行删除&#xff0c;删除字符”&…

【C++】多态 ⑨ ( vptr 指针初始化问题 | 构造函数 中 调用 虚函数 - 没有多态效果 )

文章目录 一、vptr 指针初始化问题1、vptr 指针与虚函数表2、vptr 指针初始化时机3、构造函数 中 调用 虚函数 - 没有多态效果4、代码示例 构造函数 的 作用就是 创建对象 , 构造函数 最后 一行代码 执行完成 , 才意味着 对象构建完成 , 对象构建完成后 , 才会将 vptr 指针 指向…

前端面试 面试多起来了

就在昨天 10.17 号,同时收到了三个同学面试的消息。他们的基本情况都是双非院校本科、没有实习经历、不会消息中间件和 Spring Cloud 微服务,做的都是单体项目。但他们投递简历还算积极,从今年 9 月初就开始投递简历了,到现在也有一个多月了。 来看看,这些消息。 为…

自定义表格的表头根据后端的数据进行筛选是否进行自定义表头添加按钮

自定义表格的表头根据后端的数据进行筛选是否进行自定义表头添加按钮 自定义表格的表头根据后端的数据进行筛选是否进行自定义表头添加按钮 <template><div class"box"><el-table :data"msgMapList" border class"table">&l…

药明合联港股IPO,能否撑起生物偶联药物市场的新希望?

据港交所10月29日披露&#xff0c;药明合联生物技术有限公司(简称&#xff1a;药明合联)通过港交所主板上市聆讯&#xff0c;大摩、小摩、高盛为其联席保荐人。 此消息公布后&#xff0c;进一步点燃了市场药明生物的热情&#xff0c;29-30日药明生物收获两根大阳线&#xff0c…

Linux————内置命令大全

&#xff08;一&#xff09;内置命令 Shell 内置命令&#xff0c;就是由 Bash Shell 自身提供的命令&#xff0c;而不是文件系统中的可执行脚本文件。内置命令的执行速度通常优于外部命令&#xff0c;因为执行外部命令不仅会导致磁盘I/O操作&#xff0c;而且还需要为其fork一个…

Rand-RCCA安全接收者匿名

只是学习过程记录供参考,SPHF部分未完 论文&#xff1a;Receiver-anonymity in rerandomizable RCCA-secure cryptosystems resolved(CRYPTO 2021) SPHF论文参考&#xff1a; A practical public key cryptosystem provably secure against adaptive chosen ciphertext attack…

SQLITE3 函数接口

简述 sqlite3 接口的核心元素: 两大对象&#xff0c;八大函数&#xff1b; 其中两个对象指的是: sqlite3 数据库连接对象 数据库的连接句柄(数据库的文件描述符) 代表你打开的那个 sqlite3 的数据库文件,后序对数据库的操作都需要用到这个对象 sqlite3_stmt SQL 语句对象…

android中的Package安装、卸载、更新替换流程

android系统在安装&#xff0c;删除&#xff0c;替换&#xff0c;清除数据等与应用相关的动作时&#xff0c;会发出对应的Broadcast&#xff0c;上层的应用通过注册相应的广播事件来做相应的处理。 官方文档中给出了详尽的罗列&#xff1a; ACTION_PACKAGE_ADDED 一个新应用包已…

批量修改文件名称(现学现卖版)

目录 一、复制所有文件路径二、批量修改 一、复制所有文件路径 ctrlA选中所有文件&#xff0c;点击主页&#xff0c;复制路径 粘贴到excal表格中 添加新文件名 组合命令&#xff0c;插入函数CONCATENATE ren空格<旧文件名>空格<新文件名><后缀名> …

《商业模式的逻辑》-1-为什么要学习商业模式

学习商业模式&#xff0c;也许你的idea会因为有商业模式的加持而变为现实^_^ 视频参考&#xff1a;【商业模式的逻辑】1. 为什么要学习商业模式_哔哩哔哩_bilibili【商业模式的逻辑】1. 为什么要学习商业模式是【商业模式的逻辑】清华大学&#xff08;全11讲&#xff09;沈拓 …

第四章 应用SysML基本特性集的汽车示例 P1|系统建模语言SysML实用指南学习

仅供个人学习记录 汽车模型 主要就是应用练习建模了 Automobile Domain包 用于组织模型的包图 将模型组织入包的包图 应用需求图捕获汽车规范 汽车规范中包含系统需求的需求图 应用块定义图定义车辆及其外部环境 汽车域块定义图 应用用例图表示操作车辆 描述车辆…

照片编辑软件Affinity Photo 2 for Mac v2.1.1中文激活版 2024年最新中文版下载

照片编辑软件Affinity Photo 2 for Mac v2.1.1中文激活版是一款功能强大的专业级图像编辑软件&#xff0c;由Serif公司开发。它提供了广泛的工具和功能&#xff0c;适用于摄影师、设计师和艺术家。 照片编辑软件Affinity Photo 2 for Mac v2.1.1中文激活版软件介绍 TIFF&#…

图扑 HT for Web 手机端运维管理系统

随着信息技术的快速发展&#xff0c;网络技术的应用涉及到人们生活的方方面面。其中&#xff0c;手机运维管理系统可提供数字化、智能化的方式&#xff0c;帮助企业和组织管理监控企业的 IT 环境&#xff0c;提高运维效率、降低维护成本、增强安全性、提升服务质量&#xff0c;…