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.生成的饼图有详细文字的说明. 具体的实现步骤: > ...
随机推荐
- 函数接口(Functional Interfaces)
定义 首先,我们先看看函数接口在<Java语言规范>中是怎么定义的: 函数接口是一种只有一个抽象方法(除Object中的方法之外)的接口,因此代表一种单一函数契约.函数接口的抽象方法可以是 ...
- CF1817E Half-sum
题意 有一个大小为 \(N\) 的非负整数集合 \(A\),每次你可以从集合中取任意两个数,并将它们的平均数放回序列.不停操作,知道集合最后剩下两个数.请求出这两个数的差的绝对值的最大值对 \(10^ ...
- Pinot2的无人机传感器和摄像头
目录 1. 引言 2. 技术原理及概念 2.1 基本概念解释 2.2 技术原理介绍 2.3 相关技术比较 无人机传感器和摄像头在Pinot 2中得到广泛应用,其目的是为Pinot 2提供全面的传感器和 ...
- ASIC加速技术在ASIC加速性能优化中的新应用与挑战
目录 1. 引言 2. 技术原理及概念 3. 实现步骤与流程 4. 应用示例与代码实现讲解 5. 优化与改进 1. 引言 随着计算机技术的发展,芯片的性能和面积都得到了极大的提升.为了进一步提高芯片的 ...
- 图书商城项目练习②后端服务Node/Express/Sqlite
本系列文章是为学习Vue的项目练习笔记,尽量详细记录一下一个完整项目的开发过程.面向初学者,本人也是初学者,搬砖技术还不成熟.项目在技术上前端为主,包含一些后端代码,从基础的数据库(Sqlite).到 ...
- 4.10 x64dbg 反汇编功能的封装
LyScript 插件提供的反汇编系列函数虽然能够实现基本的反汇编功能,但在实际使用中,可能会遇到一些更为复杂的需求,此时就需要根据自身需要进行二次开发,以实现更加高级的功能.本章将继续深入探索反汇编 ...
- 即构低延迟直播产品L3,打造更优质的实时互动体验
以短视频.直播为代表的音视频互动,正成为互联网主流的交互方式.拿直播举例,它从一种娱乐形式,逐渐融合于教育.娱乐.电商.旅游等多种生态中.未来,直播还将成为像水.电一样的基础设施. 然而,仅仅可进行音 ...
- CMOS信噪比与感光面积的关系
前言 一般情况下,相同分辨率的sensor,如果感光面积越大,则其单位像素的感光面积也越大,成像质量也会越好.即相同分辨率品质相当的sensor,2/3"的传感器成像质量一般情况就要优于1/ ...
- Redis的设计与实现(3)-字典
Redis 的数据库使用字典实现, 对数据库的增, 删, 查, 改也是构建在对字典的操作之上的. 字典是哈希键的底层实现之一: 当一个哈希键包含的键值对比较多, 又或者键值对中的元素都是比较长的字符串 ...
- switch写法详解
我们在开发项目中经常遇到对数据的判断进行相应的逻辑(if..else ,三元运算等),Switch 语句用来选择多个需要执行的代码块 ,一定程度上简化了if....else 1. 语法 switch ...