实现如下效果:

效果展示: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】组件封装的更多相关文章

  1. vue2.0项目 calendar.js(日历组件封装)

    最近一直闲来无事,便寻思着做一下自己的个人项目,也想说能使用现在比较流行的一些mvvm框架来做,于是就选用了这样的一个技术栈vue2.0+vue-router+vuex+webpack来做,做得也是多 ...

  2. Vuejs 页面的区域化与组件封装

    组件的好处 当我用vue写页面的时候,大量的数据页面渲染,引入组件简化主页面的代码量,当代码区域块代码差不多相同时,组件封装会更加简化代码.组件是Vue.js最强大的功能之一. 组件可以扩展HTML元 ...

  3. Hadoop大数据生态系统及常用组件(山东数漫江湖)

    经过多年信息化建设,我们已经进入一个神奇的“大数据”时代,无论是在通讯社交过程中使用的微信.QQ.电话.短信,还是吃喝玩乐时的用到的团购.电商.移动支付,都不断产生海量信息数据,数据和我们的工作生活密 ...

  4. vue组件封装及父子组件传值,事件处理

    vue开发中,把有统一功能的部分提取出来,作为一个独立的组件,在需要使用的时候引入,可以有效减少代码冗余.难点在于如果封装,使用,如何传参,派发事件等,我会采取倒叙的方式进行说明.(本文总结于Vue2 ...

  5. [druid]大数据挑战——如何使用Druid实现数据聚合

    -- 知道你为什么惧组件很多的一些开源软件? 因为缺乏阅读能力. 最近我接手了druid+kafka+elk一套等日志系统. 但是我对druid很陌生, 周旋了几天, 官网文档快速开始照着做了下. 看 ...

  6. vue教程3-05 vue组件数据传递、父子组件数据获取,slot,router路由

    vue教程3-05 vue组件数据传递 一.vue默认情况下,子组件也没法访问父组件数据 <!DOCTYPE html> <html lang="en"> ...

  7. picker(级联)组件及组件封装经验

    组件封装的几个经验 a.参数:最佳方式,仅一个object参数,所需要的实际参数,作为对象属性传入. 如此,便于数据的处理和扩展.例如,后期扩展需要增加参数,或者调整参数时,如果使用的对象传入,老的调 ...

  8. vue+vuex+axios从后台获取数据存入vuex,组件之间共享数据

    在vue项目中组件间相互传值或者后台获取的数据需要供多个组件使用的情况很多的话,有必要考虑引入vuex来管理这些凌乱的状态,今天这边博文用来记录这一整个的过程,后台api接口是使用webpack-se ...

  9. Spring Cloud(六):Hystrix 监控数据聚合 Turbine【Finchley 版】

    Spring Cloud(六):Hystrix 监控数据聚合 Turbine[Finchley 版]  发表于 2018-04-17 |  更新于 2018-05-07 |  上一篇我们介绍了使用 H ...

  10. Linux组件封装(五)一个生产者消费者问题示例

    生产者消费者问题是计算机中一类重要的模型,主要描述的是:生产者往缓冲区中放入产品.消费者取走产品.生产者和消费者指的可以是线程也可以是进程. 生产者消费者问题的难点在于: 为了缓冲区数据的安全性,一次 ...

随机推荐

  1. OpenSSL 是什么?

    OpenSSL 是什么? OpenSSL 是开源的程序套件,该套件由三部分组成: libcrypto:具有通用功能的加密库,里面包含众多加密算法 libssl:实现 SSL/TLS 功能 openss ...

  2. 自研API 网关 - 媲美美团这套Shepherd网关架构!

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获! 我说:"很多互联网大厂,很少基于 SpringMVC 模块对外提供 WEB 服务的 ...

  3. 企业级GitLab搭建

    企业级GitLab搭建 一.简介 1.GitLab概述 是一个利用 Ruby on Rails 开发的开源应用程序,实现一个自托管的Git项目仓库,可通过Web界面进行访问公开的或者私人项目. Rub ...

  4. 精讲Mybatis··#{}和${}

    题目 笔记Notes 面试题目:#{}和${}的区别是什么? 网上的答案是:#{}是预编译处理,${}是字符串替换.mybatis在处理#{}时, 会将sql中的#{}替换为?号,调用Prepared ...

  5. 前端:Uncaught TypeError: Cannot set property 'value' of null;

    1.在写JS代码中的绑定事件时(将JS与HTML标签分开时),发现会有如下错误提示: Uncaught TypeError: Cannot set property 'onclick' of null ...

  6. 创建 Code Interpreter Demo: 一次实践的探索

    好消息,好消息,Code Interpreter可以测试使用了!!! 在这篇文章中,我们将探索如何创建一个 Code Interpreter Demo.提交一个2023年1-5月份的融资记录数据,让它 ...

  7. Seal AppManager v0.2 发布:进一步简化应用部署体验

    经过近3个月的研发,Seal AppManager v0.2 已正式发布. Seal AppManager 是一款基于平台工程理念的应用统一部署管理平台,于今年4月首次推出.在上一版本中,我们已经释出 ...

  8. 解决安装报错 mysqlclient-1.4.6-cp38-cp38-win32.whl is not a supported wheel on this platform.

    解决方法, 重命名 先查看pip对应匹配的名称 在PyCharm中查看 打开下边栏的Terminal,输入 pip debug --verbose 修改为一致后  最后进行安装 进入该安装包目录下,c ...

  9. EaselJS 源码分析系列--第二篇

    在 第一篇 中我们大致分析了从: 创建舞台 -> 添加显示对象-> 更新显示对象 的源码实现 这一篇将主要分析几个常用显示对象自各 draw 方法的实现 让我们看向例子 examples/ ...

  10. [Spring+SpringMVC+Mybatis]框架学习笔记(五):SpringAOP_顾问

    上一章:[Spring+SpringMVC+Mybatis]框架学习笔记(四):Spring实现AOP 下一章:[Spring+SpringMVC+Mybatis]框架学习笔记(六):Spring_A ...