vue中echarts使用案例:饼图(可直接使用)

article/2025/9/8 10:10:10

目录

功能、效果图:

 代码实现

1、下载echarts包:终端运行

2、代码

3.运行项目:终端运行

4、可能遇到的错误

具体代码详解:


功能、效果图:

1.点击对应模块,放大并显示数据

2、点击下方图标,对应饼图模块可以显示/隐藏

 代码实现

1、下载echarts包:终端运行

npm install echarts

2、代码

components/HelloWorld.vue

<template><div :class="className" :style="{height:height,width:width}" />
</template><script>
import echarts from 'echarts'
require('echarts/theme/macarons') // echarts theme
import resize from './mixins/resize'export default {mixins: [resize],props: {className: {type: String,default: 'chart'},width: {type: String,default: '100%'},height: {type: String,default: '300px'}},data() {return {chart: null}},mounted() {this.$nextTick(() => {this.initChart()})},beforeDestroy() {if (!this.chart) {return}this.chart.dispose()this.chart = null},methods: {initChart() {this.chart = echarts.init(this.$el, 'macarons')this.chart.setOption({tooltip: {trigger: 'item',formatter: '{a} <br/>{b} : {c} ({d}%)'},legend: {left: 'center',bottom: '10',data: ['Industries', 'Technology', 'Forex', 'Gold', 'Forecasts']},series: [{name: 'WEEKLY WRITE ARTICLES',type: 'pie',roseType: 'radius',radius: [15, 95],center: ['50%', '38%'],data: [{ value: 320, name: 'Industries' },{ value: 240, name: 'Technology' },{ value: 149, name: 'Forex' },{ value: 100, name: 'Gold' },{ value: 59, name: 'Forecasts' }],animationEasing: 'cubicInOut',animationDuration: 2600}]})}}
}
</script>

在 components文件夹里新建mixins文件夹——>mixins文件夹里新建resize.js文件,代码如下:

import { debounce } from '@/utils'export default {data() {return {$_sidebarElm: null,$_resizeHandler: null}},mounted() {this.$_resizeHandler = debounce(() => {if (this.chart) {this.chart.resize()}}, 100)this.$_initResizeEvent()this.$_initSidebarResizeEvent()},beforeDestroy() {this.$_destroyResizeEvent()this.$_destroySidebarResizeEvent()},// to fixed bug when cached by keep-alive// https://github.com/PanJiaChen/vue-element-admin/issues/2116activated() {this.$_initResizeEvent()this.$_initSidebarResizeEvent()},deactivated() {this.$_destroyResizeEvent()this.$_destroySidebarResizeEvent()},methods: {// use $_ for mixins properties// https://vuejs.org/v2/style-guide/index.html#Private-property-names-essential$_initResizeEvent() {window.addEventListener('resize', this.$_resizeHandler)},$_destroyResizeEvent() {window.removeEventListener('resize', this.$_resizeHandler)},$_sidebarResizeHandler(e) {if (e.propertyName === 'width') {this.$_resizeHandler()}},$_initSidebarResizeEvent() {this.$_sidebarElm = document.getElementsByClassName('sidebar-container')[0]this.$_sidebarElm && this.$_sidebarElm.addEventListener('transitionend', this.$_sidebarResizeHandler)},$_destroySidebarResizeEvent() {this.$_sidebarElm && this.$_sidebarElm.removeEventListener('transitionend', this.$_sidebarResizeHandler)}}
}

与components同级新建utils文件夹——>utils文件夹里新建index.js文件,代码如下:


/*** @param {Function} func* @param {number} wait* @param {boolean} immediate* @return {*}*/
export function debounce(func, wait, immediate) {let timeout, args, context, timestamp, resultconst later = function () {// 据上一次触发时间间隔const last = +new Date() - timestamp// 上次被包装函数被调用时间间隔 last 小于设定时间间隔 waitif (last < wait && last > 0) {timeout = setTimeout(later, wait - last)} else {timeout = null// 如果设定为immediate===true,因为开始边界已经调用过了此处无需调用if (!immediate) {result = func.apply(context, args)if (!timeout) context = args = null}}}return function (...args) {context = thistimestamp = +new Date()const callNow = immediate && !timeout// 如果延时不存在,重新设定延时if (!timeout) timeout = setTimeout(later, wait)if (callNow) {result = func.apply(context, args)context = args = null}return result}
}

3.运行项目:终端运行

npm run dev

4、可能遇到的错误

“export ‘default‘ (imported as ‘echarts‘) was not found in ‘echarts‘...

解决方法

注:

1、本案例可直接使用,本人是在HelloWorld.vue中写的应用代码,新加页面运行记得配置路由,其他文件位置放在与之相对应的位置

2、HelloWorld.vue文件里面的数据、样式可根据自己的要求改动,其余文件里的内容无需改动

具体代码详解:

1、props中的width、height为整个图的宽高

2、series中的

//15空心小圆尺寸,95大圆尺寸
radius: [15, 95],

可以通过改变大圆尺寸改变饼图尺寸

3、series中的data为饼图数据

legend中的data为下方图标

如果想改变数据,需要这两处同时更改

例:

 4、animationDuration: 2600

动画时间

5、更改饼图各部分颜色:与series和legend同级

可单独规定颜色,也可写颜色范围


http://chatgpt.dhexx.cn/article/BhEXr9tp.shtml

相关文章

Python绘制柱状图之可视化神器pyecharts(一)

目录 pyecharts介绍 特性 优势 展示 柱状图模板系列 水晶柱状图 解决X轴标签过长的柱状图 自定义平均刻度标签&#xff08;方便查看超出范围&#xff09; 翻转X Y轴柱状图 可以移动的X轴柱状图&#xff08;适合数据类别过多&#xff09; 可以移动的Y轴柱状图&#x…

已解决:vue echart 动态获取数据且定时刷新

文章目录 写在前面需求①需求②需求③无效的解决办法1&#xff1a;无效的解决办法2有效的解决办法 写在前面 我太难了&#xff0c;搞一个echart仪表盘&#xff0c;需求一步步分解&#xff1a; ①一开始是写死的假数据&#xff0c;图表成功显示在页面上; ②和后台约定数据类型格…

Python绘制柱状图之可视化神器pyecharts(二)

目录 主题介绍 图表参数 主题详解 柱状图模板系列 海量数据柱状图动画展示 收入支出柱状图&#xff08;适用于记账&#xff09; 我们在日常的生活中&#xff0c;有收入也有支出&#xff0c;这个模板就是把收入和支出直观的展示在读者面前。 三维数据叠加 柱状图与折线…

day07 pyecharts制图

目录 Python配置安装pyecharts 一、柱状图的使用二、折线图三、饼图四、地图五、词云六、组合图 Python配置安装pyecharts Python配置国内镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple pycharm配置pyecharts 一、柱状图的使用 # 导入…

vue-echarts主题切换+选择面板实现

通过实现主题选择面板&#xff0c;更方便的对echarts图表进行主题的切换&#xff0c;并且支持饼状图、折线图、柱状图等多类型echarts图表。 目录 1、实现过程 1.1、导入echarts主题JS文件 1.2、添加选择按钮图片 1.3、添加按钮 1.4、主题选择面板实现 1.5、初始化echart…

echarts 2.0 macarons主题安装

2019独角兽企业重金招聘Python工程师标准>>> 主题下载: http://echarts.baidu.com/doc/example/theme/macarons.js 其他主题改名字就好了.[无责任猜测] 这里采用AMD加载方式 [博主用的是requirejs] 在main.js中 require.config({paths:{echarts:js/echarts/echarts…

魔法值及魔法值处理方法

魔法值 什么是魔法值 所谓的魔法值就是在代码中直接出现的数字。   PS&#xff1a;代码中有魔法值会造成代码可读性低&#xff08;与代码量成正比&#xff09;。还会造成维护困难&#xff0c;改动一个数值便要大动干戈&#xff0c;牵一发而动全身。应当尽力消灭或减少魔法值…

别让【魔法值】毁了你的代码!

二分钟&#xff0c;教你一个写代码的好习惯。 大家好&#xff0c;我是鱼皮&#xff0c;今天通过一件事情&#xff0c;分享写代码时的一个重要小技巧。 前段时间&#xff0c;我在编程导航项目中开源了一段代码&#xff0c;实现的功能是&#xff0c;当用户的操作失败时&#xff…

【java】万恶的魔法值

在最近的小云通知项目中&#xff0c;我负责维护后端的开发&#xff0c;也是深刻体会到用魔法值会给维护人员带来多大的痛苦&#xff01;可谓一个bug改一天…… 文章目录 什么是魔法值怎么处理魔法值 什么是魔法值 首先我们说一下什么是魔法值&#xff0c;所谓魔法值&#xff0…

什么是java中的魔法值

自从在idea上用了 《阿里巴巴Java开发手册》的插件之后 这里附上对应的插件安装方法&#xff1a;https://developer.aliyun.com/article/224817 偶然发现自己的代码中出现了所谓的 “魔法值” 什么是魔法值呢 所谓魔法值&#xff0c;就是在代码中直接出现的数值&#xff0c;只…

Java中的魔法值和解决方法

目录 一、什么是魔法值 二、解决方法 一、什么是魔法值 魔法数值、魔法数字、魔法值&#xff0c;这是一个东西&#xff0c;不同的叫法。 所谓魔法值&#xff0c;是指在代码中直接出现的数值&#xff0c;只有在这个数值记述的那部分代码中才能明确了解其含义&#xff0c;数字…

java 不要使用魔法值_为什么阿里巴巴Java开发手册中不允许魔法值出现在代码中?...

武培轩 推荐搜索 JavaSpring Boot数据结构MySQLElasticsearchNginx 在阅读《阿里巴巴Java开发手册》时&#xff0c;发现有一条关于关于常量定义的规约&#xff0c;具体内容如下&#xff1a; 图中的反例是将数据缓存起来&#xff0c;并使用魔法值加链路 id 组成 key&#xff0c;…

java 项目减少魔法值_项目代码中魔法值的优雅处理

经常在代码里面会用一些表示有意义的数字&#xff0c;但是如果不写注释的话&#xff0c;过了一段时间我们自己再回去优化代码的时候&#xff0c;可能自己也不清楚这些数字表示的是什么意思了。 如果写注释的话&#xff0c;就要每次使用数字的时候都要写注释了&#xff0c;这样的…

java 魔法值_Java 开发技巧:减少魔法值的使用

1. 前言 重构老代码中遇到了类似这种写法&#xff1a; public void attend(String value){ if ("0".equals(value)) { //todo } else if ("1".equals(value)) { //todo } else { //todo } } 脑壳疼&#xff01;从 Java 语法上无懈可击&#xff0c;但是从业…

IDEA快速去除魔法值

背景 写代码有的时候为了方便&#xff0c;会在代码里面留下很多字符串之类的变量。这种便便会被定义为魔法值。 这种变量正常来讲不影响阅读的。所以一般情况下&#xff0c;我们都不会去处理它。 但是当项目越来越大的时候&#xff0c;我们发现很多地方都有可能使用了同一个…

魔法值与解决办法

1.什么是魔法值 魔法值是指代码中突然出现的数字&#xff0c;之所以称为魔法值&#xff0c;是因为这个20可以有多种意义。在新来的员工接手你的代码时&#xff0c;他们产生疑问&#xff1a;为什么要设这个20&#xff0c;背后有什么秘密吗。大大降低了代码的可维护性。 2.解决办…

java怎么字符连接换行_Java中的换行、转义字符和连接字符-Go语言中文社区

语句输出的换行 我们之前完成了我们的第一个Java输出语句&#xff0c;接下来我们可以做一个简单的输出换行与不换行操作。 例如&#xff1a;我们输出天王盖地虎和宝塔镇河妖 public class Demo1 { public static void main(String[] args) { System.out.println("天王盖地…

java csv 换行_javacsv如何换行输入

javacsv如何换行输入 [2021-02-10 01:25:25] 简介: php去除nbsp的方法:首先创建一个PHP代码示例文件;然后通过“preg_replace("/(\s|\&nbsp\;| |\xc2\xa0)/", " ", strip_tags($val));”方法去除所有nbsp即可。推荐:《PHP视频教 java怎么输入换行…

java输出流怎样换行_Java中输出流续写和换行写方法,需要用到的构造方法的知识点...

/* FileOutputStream​(String name, boolean append) 创建文件输出流以指定的名称写入文件。 FileOutputStream​(File file, boolean append) 创建文件输出流以写入由指定的 File对象表示的文件。 创建指定File对象表示的文件中写入数据的文件输出流 构造方法的参数: String …

Java输入换行结束

问题出现 &#xff1a; 我在写一个程序的时候&#xff0c;会发现当我想要用while()循环得到一组数字的时候&#xff0c;不加控制条件while()循环就不会停止。 Scanner scanner1 new Scanner(System.in);while(scanner1.hasNext()){System.out.println(scanner1.nextInt());} …