vue2实现饼图Pie组件封装
实现如下效果:

效果展示:https://code.juejin.cn/pen/7226656439941955644
如果不会请移步到官网的栗子,请点击查看
直接给大家上代码:
- 整体代码片段

1 <template>
2 <div ref="echarts" style="width: 100%; height:300px;"></div>
3 </template>
4 <script>
5 /* eslint-disable */
6 import { setPieOption } from "@/util/pieConfig";
7
8 export default {
9 name: 'PieDom',
10 props: ["categoryList"],
11 data() {
12 return {}
13 },
14 mounted() {
15 this.$nextTick(() => {
16 this.loadBars();
17 });
18 },
19 methods: {
20 loadBars() {
21 this.$nextTick(function () {
22 let myChart = this.$echarts.init(this.$refs.echarts) // 绘制图表
23 let text = "聚类各项占比";
24 let data = this.categoryList;
25 data.map(item => {
26 let _index = +item.name + 1;
27 item.index = item.name;
28 item.name = '类别' + _index;
29 return item;
30 });
31 let option = setPieOption(text, data);
32
33 // 使用刚指定的配置项和数据显示图表。
34 myChart.setOption(option);
35 window.addEventListener('resize', function () {
36 setTimeout(function () {
37 myChart.resize();
38 }, 200)
39 });
40 });
41 }
42 }
43 }
44 </script>
- 部分代码片段,pieConfig.js

1 import color from '@/util/colorConfig.js';
2
3 // 饼图
4 export const setPieOption = (text, data) => {
5 let newColor = [];
6 data.map((item, index) => {
7 newColor[index] = color[item.index];
8 });
9
10 let option = {
11 title: {
12 show: false,
13 text,
14 textStyle: {
15 color: '#666',
16 fontSize: 16,
17 fontWeight: 'normal',
18 top: '0',
19 left: '30%'
20 }
21 },
22 tooltip: {
23 trigger: 'item'
24 },
25 legend: {
26 type: 'scroll',
27 orient: 'vertical',
28 right: 0,
29 align: 'auto',
30 top: 'center',
31 itemHeight: 8,
32 itemWidth: 8,
33 itemGap: 20,
34
35 icon: 'circle',
36 textStyle: {
37 padding: [4, 0],
38 rich: {
39 a: {
40 fontSize: 14,
41 width: 'auto'
42 // minWidth: '100'
43 },
44 b: {
45 fontSize: 12,
46 width: 3,
47 color: '#ccc'
48 },
49 c: {
50 fontSize: 14,
51 width: 50,
52 color: '#ccc'
53 },
54 d: {
55 fontSize: 14,
56 width: 40
57 }
58 }
59 },
60 formatter: function (params) {
61 // 添加
62 let _index,
63 total = 0;
64 data.forEach((item, index) => {
65 total += item.value;
66 if (item.name == params) {
67 _index = index;
68 }
69 });
70 let a = params.length < 15 ? params : params.slice(0, 15) + '...';
71 let arr = [
72 '{a|' + a + '}',
73 '{b|' + '|}',
74 '{c|' + ((data[_index].value / total) * 100).toFixed(0) + '%}',
75 '{d|' + data[_index]?.value + '条}'
76 ];
77 return arr.join(' ');
78 }
79 },
80 color: newColor,
81 series: [
82 {
83 // name: 'Access From',
84 type: 'pie',
85 radius: '70%',
86 center: ['20%', '50%'],
87 avoidLabelOverlap: false,
88 label: {
89 show: false,
90 position: 'center'
91 },
92 labelLine: {
93 show: false
94 },
95 data,
96 itemStyle: {
97 borderRadius: 0,
98 borderColor: '#fff',
99 borderWidth: 2,
100 emphasis: {
101 shadowBlur: 10,
102 shadowOffsetX: 0,
103 shadowColor: 'rgba(0, 2, 2, 0.3)'
104 }
105 }
106 }
107 ]
108 };
109 return option;
110 };
- 颜色配置代码片段,colorConfig.js

1 let colorArr = [
2 '#4EADFF',
3 '#55D9FA',
4 '#9CA5E9',
5 '#2E98F3',
6 '#5FCAD2',
7 '#69C97F',
8 '#F2CA30',
9 '#FFA97A',
10 '#DAC4AA',
11 '#CF98E9',
12 '#F6B4DE',
13 '#F37379',
14 '#98ACC3',
15 '#75E4C1',
16 '#BEDC63',
17 '#98CFD0',
18 '#9B92F1',
19 '#26A479',
20 '#6068B3',
21 '#AE9E42',
22 '#D17952'
23 ];
24
25 export default colorArr;
鉴定完毕,欢迎友友们一起交流学习!!
vue2实现饼图Pie组件封装的更多相关文章
- vue2.0 如何自定义组件(vue组件的封装)
一.前言 之前的博客聊过 vue2.0和react的技术选型:聊过vue的axios封装和vuex使用.今天简单聊聊 vue 组件的封装. vue 的ui框架现在是很多的,但是鉴于移动设备的复杂性,兼 ...
- Vue2.0的通用组件
饿了么基于Vue2.0的通用组件开发之路(分享会记录) Element:一套通用组件库的开发之路 Element 是由饿了么UED设计.饿了么大前端开发的一套基于 Vue 2.0 的桌面端组件库. ...
- Vuejs 页面的区域化与组件封装
组件的好处 当我用vue写页面的时候,大量的数据页面渲染,引入组件简化主页面的代码量,当代码区域块代码差不多相同时,组件封装会更加简化代码.组件是Vue.js最强大的功能之一. 组件可以扩展HTML元 ...
- 基于vue2.0的分页组件开发
今天安排的任务是写基于vue2.0的分页组件,好吧,我一开始是觉得超级简单的,但是越写越写不出来,写的最后乱七八糟的都不知道下句该写什么了,所以重新捋了思路,小结一下- 首先写组件需要考虑: 要从父组 ...
- vue2.0实现分页组件
最近使用vue2.0重构项目, 需要实现一个分页的表格, 没有找到合适的组件, 就自己写了一个, 效果如下: 该项目是使用 vue-cli搭建的, 如果你的项目中没有使用webpack,请根据代码自己 ...
- ReactNative之从HelloWorld中看环境搭建、组件封装、Props及State
开篇呢,先给大家问个好,今天是中秋节,祝大家中秋节快乐!!虽然是中秋节,但是木有回家还是总结一下知识点写写博客吧,想着昨天总结一下的,但是昨天和几个同学小聚了一下,酒逢知己总是千杯少呢,喝的微醺不适合 ...
- Vue + Element UI 实现权限管理系统 (功能组件封装)
组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...
- Vue + Element UI 实现权限管理系统 前端篇(七):功能组件封装
组件封装 为了避免组件代码的臃肿,这里对主要的功能部件进行封装,保证代码的模块化和简洁度. 组件结构 组件封装重构后,试图组件结构如下图所示 代码一览 Home组件被简化,包含导航.头部和主内容三个组 ...
- picker(级联)组件及组件封装经验
组件封装的几个经验 a.参数:最佳方式,仅一个object参数,所需要的实际参数,作为对象属性传入. 如此,便于数据的处理和扩展.例如,后期扩展需要增加参数,或者调整参数时,如果使用的对象传入,老的调 ...
- c# 通过.net自带的chart控件绘制饼图pie chart
c# 通过.net自带的chart控件绘制饼图pie chart 需要实现的目标是: 1.将数据绑定到pie的后台数据中,自动生成饼图. 2.生成的饼图有详细文字的说明. 具体的实现步骤: > ...
随机推荐
- K8S | 核心原理分析
目录 一.背景 二.持续集成 三.K8S架构 1.核心组件 2.分层结构 3.核心能力 3.1 发现与负载 3.2 调度 3.3 自动伸缩 四.应用案例 1.服务部署 2.交互流程 五.参考源码 整体 ...
- allure的安装与配置
一.安装配置JDK 说明:以win10系统为例 1.Oracle官网下载JDK:https://www.oracle.com/java/technologies/downloads/ 请下载安装JDK ...
- JavaScript如何解决单线程缺陷——webWorker
解决JavaScript单线程问题--webWorkers 参考文档 使用 Web Workers - Web API 接口参考 | MDN (mozilla.org) MDN的介绍为: Web Wo ...
- C# .NET CORE .NET6 RSA 公钥加密 私钥解密
环境说明: .NET CORE 版本:.NET 6 . .NET CORE 对于RSA的支持: 1. .NET 6 中内置了对 PKCS1,PKCS8 2种私钥格式的支持. 2. 如果你要部署在Lin ...
- 沉思篇-剖析JetPack的Lifecycle
这几年,对于Android开发者来说,最时髦的技术当属Jetpack了.谷歌官方从19年开始,就在极力推动Jetpack的使用,经过这几年的发展,Jetpack也基本完成了当时的设计目标--简单,一致 ...
- 将 -Xms 参数设置和-Xmx 参数的相等,对比 -Xms参数 设置为-Xmx 参数的一半,有哪些优势?
将 -Xms 参数设置为与 -Xmx 参数相等,相比于将 -Xms 参数设置为 -Xmx 参数的一半,具有以下优势: 1. 程序启动时间更短 当将 -Xms 参数设置为与 -Xmx 参数相等时,JVM ...
- Visual Studio2019如何添加引用
同一解决方案中添加引用 比如我们想在Test项目中添加Queue项目的引用 1.鼠标右击引用-->添加引用 2."引用管理器"-->项目-->解决方案--&g ...
- Android BottomNavigation底部导航栏使用
原文地址: Android BottomNavigation底部导航栏使用 - Stars-One的杂货小窝 基本使用 本文侧重点记录一些特殊的样式设置,所以基本使用这里就简单概述一下,详细图文可以去 ...
- Unity的IPostGenerateGradleAndroidProject:深入解析与实用案例
Unity IPostGenerateGradleAndroidProject Unity是一款流行的跨平台游戏引擎,它支持多种平台,包括Android.在Unity中,我们可以使用IPostGene ...
- 如何根据oops函数偏移快速定位源码?
如何根据函数偏移快速定位源码? 在内核栈的输出中,你一定注意到每一个函数的输出格式都是函数名+偏移量,而这儿的偏移就是调用下一个函数的位置.那么,能不能根据函数名+偏移量直接定位源码的位置呢? 答案是 ...