【Echarts系列】带图片的饼图

【Echarts系列】带图片的饼图

    • 前提说明
    • 示例
    • 数据格式
    • 代码
    • 动态旋转图片

为了节省后续开发学习成本,这个系列将记录我工作所用到的一些echarts图表。

前提说明

因为饼图中间需要添加图片,所以比较特殊,对于饼图中间数据的对齐很容易出现问题,大家参考时以具体要求进行修改。【本人对于对齐的处理过于简单粗暴,大家有更好的办法可以加以指正】

同时,因Echarts使用版本不同,有些参数可以省略,而有些效果可能也没法呈现,当前示例是基于4.8.0版本的,当前最新版本还可以实现中间图片360°循环旋转的效果。

示例

带图片的饼图如图所示:
在这里插入图片描述
关于代码中:tooltip的内容{b} : {c}公顷 占比{d}%
在这里插入图片描述

数据格式

data = [{value: 117.6,name: '居住'},{value: 1115.2,name: '工业'},{value: 1122.4,name: '商业'},{value: 1114.8,name: '其他'}]

代码

Vue版本以及脚本语言的选择各有不同,核心内容主要是option,重点关注该部分内容即可。

<template><div class="chart" ref="graphicPieRef"></div>
</template><script lang="ts">
import { Component, Prop, Ref, Vue, Watch } from 'vue-property-decorator'
import echarts from 'echarts'@Component({name: 'GraphicPie',components: {}
})
export default class GraphicPie extends Vue {@Prop() data!: any@Ref() graphicPieRef!: anyprivate chart: any = {}@Watch('data')onDataChange() {this.createChart()}lefts = ['18%', '15.5%', '13.5%', '11.5%', '9.5%', '7.5%', '5.5%', '3.5%', '1.5%']createChart() {this.chart = echarts.init(this.graphicPieRef)//添加在饼图中的图片const img = require('@/assets/img/cockpit/center-pie.png')const data = this.data//计算数据的总值let total = this.data.reduce((acc: number, cur: any) => {return acc + cur.value}, 0)total = total.toFixed(1)//此处是为了获取总数相应位数应该对齐的位置let left = this.lefts[total.toString().length - 1]const option = {tooltip: {trigger: 'item',formatter: '{b} : {c}公顷 占比{d}%',confine: true},legend: {icon: 'circle',orient: 'vertical',right: 0,top: 'center',itemGap: 10,itemWidth: 8,itemHeight: 8,formatter: function(name: string) {let target: number = 0let percent: any// 计算对应图例数据的所占百分比for (let i = 0; i < data.length; i++) {if (data[i].name === name) {target = Number(data[i].value)if (target === 0) {percent = 0} else {percent = (target / total * 100).toFixed(2)}}}let formattedName = ''//当图例文字过于长时,可以选择添加换行符for (let i = 0; i < name.length; i += 6) {formattedName += name.substring(i, i + 6) + '\n'}if (formattedName.endsWith('\n')) {formattedName = formattedName.slice(0, -1)}var arr = ['{name|' + formattedName + '}','{value|' + target + '}','{unit|公顷}','{value1|' + percent + '}','{unit|%}']return arr.join(' ')},textStyle: {      //使用rich格式化图例数据的展示rich: {name: {width: 70,color: '#757790'},value: {width: 35,color: '#194178',align: 'center'},value1: {width: 27,color: '#194178',align: 'center'},unit: {color: '#757790'}}}},graphic: [{type: 'image',   //添加图片style: {         //设置图片样式image: img,width: 95,height: 95},left: '5%',      //设置图片位置top: 'center'},{type: 'text',    //设置圆环中的总数位置上的样式left: left,top: '40%',style: {text: total,textAlign: 'center',fill: '#194178',fontSize: 24,fontWeight: 400}},{type: 'text',   //设置圆环中的单位位置上的样式left: '12%',top: '55%',style: {text: '总量(公顷)',textAlign: 'center',fill: '#757790',fontSize: 12,fontWeight: 400}}],color: ['#ED5A75','#59C975','#5C87DA','#00A2FF','#B6D7E9','#F9D03F','#E3A256'],series: [{type: 'pie',radius: ['48%', '62%'],  //设置两个圆环的大小center: ['20%', '50%'],  //设置饼图在网格容器中的位置data: data,// 间隔itemStyle: {normal: {borderWidth: 4,borderColor: '#fff'}},label: {  //是否显示饼图数据show: false},labelLine: {  //是否显示引导线show: false}}]}this.chart.setOption(option)}mounted() {this.createChart()window.addEventListener('resize', this.chartResize)}beforeDestroy() {if (this.chart) {window.removeEventListener('resize', this.chartResize)this.chart.dispose()}}chartResize() {if (this.chart) {this.chart.resize()}}
}
</script>
<style lang="scss" scoped>
.chart {width: 100%;height: 400px;
}
</style>

动态旋转图片

如果需要实现图片的动态旋转效果的话,可以在graphic中type属性为image的项中添加如下内容:

keyframeAnimation: [{duration: 200000,       //设置间隔时间loop: true,             //是否开启循环keyframes: [            //动画效果{percent: 0,rotation: 0},{percent: 1,rotation: -360}]}]

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

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

相关文章

正大国际期货:原油投资出现亏损的五种心理弱点

在原油投资当中&#xff0c;有五种心理弱点最容易导致投资者失败&#xff0c;必须注意加以克服! 盲目胆大心理。 有些投资者从未认真系统地学习过投资理论技巧&#xff0c;也没有经过任何模拟训练&#xff0c;甚至连最起码的投资基础知识都不明白&#xff0c;就贸然的进入原油…

【Qt】Qt中QJsonArray类

01. QJsonArray类简介 ​ QJsonArray封装了JSON数组。 ​ JSON数组是值的链表&#xff0c;可以插入和删除QJsonValue。 ​ QJsonArray与QVariantList可以相互转换。QJsonArray可以用size(), insert(), removeAt()进行操作&#xff0c;还可以用标准C的迭代器模式来迭代其内容…

企业管理/市场经营/自我管理,500+个经典职场工具 . rar

​500N个实用管理工具包&#xff0c;精选人力资源从业者必备之132项工具、40个管理者实效管理工具、成功自我管理的29个工具、常见的9种营销分析工具等&#xff0c;成功自我管理必备工具。 与班主任联系&#xff0c;即可获得完整资料包&#xff01; 1.PEST分析 2.五力分析 3.…

哈尔滨等保如何做?

哈尔滨等保测评是确保信息系统安全稳定运行的重要一环&#xff0c;它涉及到对业务、资产、安全技术和安全管理的全面调研和评估。本文将详细阐述哈尔滨等保测评的实施步骤和注意事项&#xff0c;帮助读者更好地理解和执行等保测评工作。 首先&#xff0c;我们需要明确等保测评的…

回溯算法练习题(2024/6/10)

1组合 给定两个整数 n 和 k&#xff0c;返回范围 [1, n] 中所有可能的 k 个数的组合。 你可以按 任何顺序 返回答案。 示例 1&#xff1a; 输入&#xff1a;n 4, k 2 输出&#xff1a; [[2,4],[3,4],[2,3],[1,2],[1,3],[1,4], ] 示例 2&#xff1a; 输入&#xff1a;n …

Hexo+Github搭建个人博客教程

hexo官网&#xff1a;https://hexo.io/zh-cn/ butterfly 主题设置&#xff1a;https://butterfly.js.org/ GitHub地址&#xff1a;https://github.com/jerryc127/hexo-theme-butterfly 基础命令 初始化博客命令&#xff1a;hexo init “文件名” 开启本地服务&#xff08;本…

Docker:Docker容器使用

文章目录 容器与宿主机复制容器环境变量设置镜像的导出和导入 由于篇幅原因&#xff0c;把后续的使用搬到这篇来 容器与宿主机复制 启动一个nginx服务 rootVM-24-7-ubuntu:~# docker run --name nginx -p 80:80 -d nginx 7a1578bedd97ffc48e9516d03a148c69e216a30f2d18f2624…

【MySQL】复合查询+表的内外连接

复合查询表的内外连接 1.基本查询回顾2.多表查询3.自连接4.子查询4.1单列子查询4.2多列子查询 5.在from子句中使用子查询6.合并查询7.表的内连和外连7.1内连接7.2外连接7.2.1左外连接 7.2.2右外连接 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1…

Java程序设计————从控制台输入

向控制台输入信息可以借助Scanner扫描器类来实现 语法&#xff1a; Scanner input new Scanner(System.in); 提示 &#xff08;1&#xff09;在使用Scanner类型之前&#xff0c;需要首先指明Scanner类所在的位置&#xff0c;既通过代码 import java.util.Scanner; &…

C语言:结构体指针

结构体指针 介绍定义结构体指针初始化结构体指针指向现有结构体变量动态分配内存 访问结构体成员使用结构体指针访问成员通过指针和解引用 结构体指针作为函数参数使用结构体指针构建链表 高级用法多级指针&#xff08;指向指针的指针&#xff09;动态二维数组结构体指针与链表…

超强的文本转语音模型ChatTTS,一键打包,免费使用

超强的文本转语音模型ChatTTS&#xff0c;一键打包&#xff0c;免费使用 项目简介项目亮点安装使用python 代码直接引入一键启动包安装部署 ChatTTS webUI 小结一下 文本转语音&#xff08;TTS&#xff09;在生活中的应用非常的广泛&#xff0c;比如有声小说、语音导航&#xf…

电脑安全模式怎么进?详细步骤一学就会!

电脑安全模式是一种特殊的启动模式&#xff0c;加载最少的驱动程序和服务&#xff0c;帮助用户解决系统问题&#xff0c;如驱动程序冲突、病毒感染或系统文件损坏。进入安全模式可以帮助您诊断和修复问题&#xff0c;恢复系统的正常运行。本文将介绍电脑安全模式怎么进的三种方…

仿虎嗅网wordpress模板,新闻网站模板

下载地址&#xff1a;仿虎嗅网wordpress模板,新闻网站模板 服务器环境要求如下&#xff1a; PHP 5.6/PHP7.0以上版本均适用 建议MySQL 5.6/其他版本 WordPress版本4.9&#xff0c;5.0&#xff5e;5.7均适用 主题自带超强SEO功能 可以自定义每一篇文章每一个页面的标题、关键…

DeepSORT(目标跟踪算法)中 可以设置阈值进行异常检测或目标跟踪的原因

DeepSORT&#xff08;目标跟踪算法&#xff09;中 可以设置阈值进行异常检测或目标跟踪的原因 flyfish 代码地址 https://github.com/shaoshengsong/DeepSORT 利用卡方分布的特性来设置合理的阈值进行异常检测或目标跟踪。 设定和定义 假设我们有一个 k k k 维的随机向量…

长期套餐是不是永久套餐?注意:并不是!

当我们在网上选择流量卡时&#xff0c;除了有短期套餐外&#xff0c;还有不少标注着长期套餐的流量卡&#xff0c;那么&#xff0c;长期套餐是不是永久套餐呢&#xff1f;能一直使用吗&#xff1f; ​ 在这里小编要说一下&#xff0c;长期套餐≠永久套餐 长期套餐就是字面意思…

上海斯歌荣获“2023年度杰出数字化转型方案提供商”奖项

为表彰上海斯歌在各行业的数字化转型事业中所做出的突出贡献&#xff0c;经CIO时代、新基建创新研究院专家组评审认定&#xff0c;授予上海斯歌“2023年度杰出数字化转型方案提供商”奖项。荣获该殊荣&#xff0c;不仅是业界对上海斯歌解决方案专业能力及落地实施能力的又一次认…

字符编码字符集那些事

此篇文章仅为网上资料的汇总&#xff0c;方便自己查询使用&#xff0c;原文如下&#xff1a; 参考文章1:一文读懂字符编码 参考文章2:菜鸟教程字符集 参考文章3:百度字符集 参考文章4:一个线上BUG彻底搞懂MySQL字符集&#xff0c;工作也快搞丢了 参考文章5:深入理解MySQL字符集…

Kaggle -- Titanic - Machine Learning from Disaster

新手kaggle之旅&#xff1a;1 . 泰坦尼克号 使用一个简单的决策树进行模型构建&#xff0c;达到75.8%的准确率&#xff08;有点低&#xff0c;但是刚开始&#xff09; 完整代码如下&#xff1a; import pandas as pd import numpy as npdf pd.read_csv("train.csv&quo…

我用香橙派做了一个Klipper 3D打印控制器

一个好用的Klipper 3D打印机&#xff0c;一定离不开一个可以稳定进行无线通信&#xff0c;而且性能足够&#xff0c;最重要是价格亲民的上位机。 所谓Klipper&#xff0c;简单来说就是一套可以通过联动上、下位机来有效提升3D打印精度的固件。它拥有高精度的步进电机控制&#…

【持久层】PostgreSQL使用教程

详细教程点击PostgreSQL 12.2 手册&#xff0c;观看官网中文手册。 PostgreSQL 是一个功能强大且开源的对象关系数据库系统&#xff0c;以其高扩展性和符合标准的优势广受欢迎。随着大数据时代的到来&#xff0c;PostgreSQL 也在大数据处理方面展示了其强大能力。本文将介绍 P…