vue2实现数据聚合【scatter-clustering】组件封装
实现如下效果:

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

1 <template>
2 <div ref="echarts" style="width: 100%; height:300px;"></div>
3 </template>
4 <script>
5 /* eslint-disable */
6 import { setClusterOption } from "@/util/clusterConfig";
7 import ecStat from 'echarts-stat';
8
9 export default {
10 name: 'ClusterDom',
11 props: ["simulationList", "pieCount"],
12 data() {
13 return {
14 }
15 },
16 mounted() {
17 this.$nextTick(() => {
18 this.loadBars();
19 });
20 },
21 methods: {
22 loadBars() {
23 this.$nextTick(function () {
24 let myChart = this.$echarts.init(this.$refs.echarts) // 绘制图表
25 this.$echarts.registerTransform(ecStat.transform.clustering);
26
27 // 指定图表的配置项和数据
28 let text = "", axisData = [];
29
30 if(this.simulationList.length){
31 this.simulationList.forEach((item, index) => {
32 axisData[index] = item.map(Number);
33 });
34 }
35
36 text = `聚类分布模拟呈现`;
37 let option = setClusterOption(text, axisData, this.pieCount);
38
39 // 使用刚指定的配置项和数据显示图表。
40 myChart.setOption(option);
41 window.addEventListener('resize', function () {
42 setTimeout(function () {
43 myChart.resize();
44 }, 200)
45 });
46 });
47 }
48 }
49 }
50 </script>
- clusterConfig.js

1 import color from '@/util/colorConfig.js';
2
3 // 散点图
4 export const setClusterOption = (text, data, pieCount) => {
5 const CLUSTER_COUNT = pieCount;
6 const DIENSIION_CLUSTER_INDEX = 2;
7 let colorArr = color.slice(0, pieCount);
8
9 let option = {
10 title: {
11 text,
12 textStyle: {
13 color: "#666",
14 fontSize: 16,
15 fontWeight: "normal",
16 top: "0"
17 }
18 },
19 dataset: [
20 {
21 source: data
22 },
23 {
24 transform: {
25 type: 'ecStat:clustering',
26 config: {
27 clusterCount: CLUSTER_COUNT,
28 outputType: 'single',
29 outputClusterIndexDimension: DIENSIION_CLUSTER_INDEX
30 }
31 }
32 }
33 ],
34 tooltip: {
35 position: 'top'
36 },
37 visualMap: {
38 show: false,
39 type: 'piecewise',
40 top: 'middle',
41 min: 0,
42 max: CLUSTER_COUNT,
43 left: 10,
44 splitNumber: CLUSTER_COUNT,
45 dimension: DIENSIION_CLUSTER_INDEX
46 },
47 grid: {
48 top: "15%",
49 left: "0",
50 // right: "0",
51 bottom: "0",
52 containLabel: true
53 },
54 xAxis: {},
55 yAxis: {},
56 series: {
57 type: 'scatter',
58 encode: { tooltip: [0, 1] },
59 symbolSize: 10,
60 itemStyle: {
61 borderColor: '#555'
62 },
63 data: data.map(item => {
64 return {
65 value: item,
66 itemStyle: {
67 normal: {
68 color: colorArr[item.pop()],
69 },
70 }
71 }
72 }),
73 datasetIndex: 1
74 }
75 };
76 return option;
77 }
- 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实现数据聚合【scatter-clustering】组件封装的更多相关文章
- vue2.0项目 calendar.js(日历组件封装)
最近一直闲来无事,便寻思着做一下自己的个人项目,也想说能使用现在比较流行的一些mvvm框架来做,于是就选用了这样的一个技术栈vue2.0+vue-router+vuex+webpack来做,做得也是多 ...
- Vuejs 页面的区域化与组件封装
组件的好处 当我用vue写页面的时候,大量的数据页面渲染,引入组件简化主页面的代码量,当代码区域块代码差不多相同时,组件封装会更加简化代码.组件是Vue.js最强大的功能之一. 组件可以扩展HTML元 ...
- Hadoop大数据生态系统及常用组件(山东数漫江湖)
经过多年信息化建设,我们已经进入一个神奇的“大数据”时代,无论是在通讯社交过程中使用的微信.QQ.电话.短信,还是吃喝玩乐时的用到的团购.电商.移动支付,都不断产生海量信息数据,数据和我们的工作生活密 ...
- vue组件封装及父子组件传值,事件处理
vue开发中,把有统一功能的部分提取出来,作为一个独立的组件,在需要使用的时候引入,可以有效减少代码冗余.难点在于如果封装,使用,如何传参,派发事件等,我会采取倒叙的方式进行说明.(本文总结于Vue2 ...
- [druid]大数据挑战——如何使用Druid实现数据聚合
-- 知道你为什么惧组件很多的一些开源软件? 因为缺乏阅读能力. 最近我接手了druid+kafka+elk一套等日志系统. 但是我对druid很陌生, 周旋了几天, 官网文档快速开始照着做了下. 看 ...
- vue教程3-05 vue组件数据传递、父子组件数据获取,slot,router路由
vue教程3-05 vue组件数据传递 一.vue默认情况下,子组件也没法访问父组件数据 <!DOCTYPE html> <html lang="en"> ...
- picker(级联)组件及组件封装经验
组件封装的几个经验 a.参数:最佳方式,仅一个object参数,所需要的实际参数,作为对象属性传入. 如此,便于数据的处理和扩展.例如,后期扩展需要增加参数,或者调整参数时,如果使用的对象传入,老的调 ...
- vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据
在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-se ...
- Spring Cloud(六):Hystrix 监控数据聚合 Turbine【Finchley 版】
Spring Cloud(六):Hystrix 监控数据聚合 Turbine[Finchley 版] 发表于 2018-04-17 | 更新于 2018-05-07 | 上一篇我们介绍了使用 H ...
- Linux组件封装(五)一个生产者消费者问题示例
生产者消费者问题是计算机中一类重要的模型,主要描述的是:生产者往缓冲区中放入产品.消费者取走产品.生产者和消费者指的可以是线程也可以是进程. 生产者消费者问题的难点在于: 为了缓冲区数据的安全性,一次 ...
随机推荐
- CSS中常见的场景实现
如何实现两栏布局 实现两栏布局一般指的是左边固定,右边自适应,这里给出几个案例给大家参考 直接使用 calc 计算 right 宽度 .left { width: 200px; background: ...
- Linux系统运维之Zookeeper集群配置
一.简介 ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.ZooKeeper的目标就是封装好复杂易 ...
- 面试官:讲讲MySql索引失效的几种情况
索引失效 准备数据: CREATE TABLE `dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAUL ...
- FFmpeg合并视频和音频文件
使用IDM下载Bilibili的视频会出现音视频分离的问题,通常文件大的是视频(没有声音),文件小的是单独的音频. 将两个文件都下载下来后,可以使用FFmpeg将其合并成一个视频文件.首先去FFmpe ...
- MySQL 存储引擎 InnoDB 内存结构之缓冲池
缓冲池是主存储器中的一个区域,在访问 table 和索引数据时InnoDB会对其进行缓存.缓冲池允许直接从内存中访问频繁使用的数据,从而加快处理速度.在专用服务器上,通常将高达 80% 的物理内存分配 ...
- 【小小Demo】微信公众号如何接入微信机器人
微信对话开放平台文档 官方文档 平台简介 微信对话开放平台开放了微信在对话领域积累多年的的智能对话技术,开发者及非开发者可简单.快速地搭建智能对话机器人(智能客服), 并接入公众号.小程序等,为业务赋 ...
- CVPR 2023 | RCF:完全无监督的视频物体分割
TLDR: 视频分割一直是重标注的一个task,这篇CVPR 2023文章研究了完全不需要标注的视频物体分割.仅使用ResNet,RCF模型在DAVIS16/STv2/FBMS59上提升了7/9/5% ...
- 学习 HBase
1 由来 HBase 应大数据而生,是Apache Hadoop项目孵化而来的一种NoSQL数据库,HBase 是 Hadoop Database 的简称. 它的出现有以下几个原因: 大数据时代的到来 ...
- 使用sqlplus
1. 执行一个SQL脚本文件 SQL>start file_name SQL>@ file_name 可以将多条sql语句保存在一个文本文件中,这样当要执行这个文件中的所有的sql语句时, ...
- Burnside 定理
Burnside 定理 问题: 给定一个 \(n\) 个点,\(n\) 条边的环,有 \(m\) 种颜色,给每个顶点染色,问有多少种本质不同的染色方案,答案对 \(10^9+7\) 取模 注意本题的本 ...