实现如下效果:

效果展示: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. 【RS】ENVI5.6.3 图像融合

            图像融合是将低空间分辨率的多光谱图像或高光谱数据与高空间分辨率的单波段图像重采样生成一幅高分辨率多光谱图像的遥感图像处理技术,使得处理后的图像既有较高的空间分辨率,又具有多光谱特征.一 ...

  2. Dapr在Java中的实践 之 状态管理

    状态管理 状态管理(State Management)使用键值对作为存储机制,可以轻松的使长时运行.高可用的有状态服务和无状态服务共同运行在我们的服务中. 我们的服务可以利用Dapr的状态管理API在 ...

  3. CANoe _ Panel面板的创建过程

    在Canoe中创建Panel面板,用于显示和操作CAN网络的数据和信号,遵循以下步骤: 1.打开Canoe 启动Canoe软件. 2.打开项目 在Canoe的菜单栏中,选择"File&quo ...

  4. 三路快排Java版(图文并茂思路分析)

    快速排序 这里我们直接开始讲相对的最优解 带随机数的三路快排 好了,中间还有很多版本的快排,但是都有一些问题导致在某种极端情况下造成耗费时间极多. 基础快排:在序列本身有序的情况下复杂度为O(n²) ...

  5. 6. Mybatis的各种查询功能

    6.1.查询一个实体类对象 ‍ /** * 根据用户id查询用户信息 * @param id * @return */ User getUserById(@Param("id") ...

  6. springboot使用Websocket写一个聊天室

    1 <!--websocket 依赖--> 2 <dependency> 3 <groupId>org.springframework.boot</group ...

  7. java调用WebService(未完成)记录篇

    背景: 因工作需要和一个Sap相关系统以WebService的方式进行接口联调,之前仅听过这种技术,但并没有实操过,所以将本次开发相关的踩坑进行记录 通过一个实例来认识webservice 服务端 首 ...

  8. Java猜数字,猜完一局以后,输入y继续下一次游戏,否则结束

    代码如下: public static void main(String[] args) { String x = ""; do { int random = (int) (Mat ...

  9. php处理emoji表情 存数据库

    PHP 处理emoji表情 存数据库 直接过滤掉 1 function filter_emoji($str) { 2 $regex = '/(\\\u[ed][0-9a-f]{3})/i'; 3 $s ...

  10. Unity 4.6 bate 20 or 4.5.5 +vuforia3.0.9 发布到真机错误 解决

    错误图 +错误码 014-11-20 15:45:49.224 youzheng[6527:1035587] ################### enable 32014-11-20 15:45: ...