实现如下效果:

效果展示: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. 9.3 Django框架

    Django 是一个非常流行的 Python Web 开发框架,它是完整且强大的,适用于构建大型 Web 应用.在这一章节中,我们将详细介绍 Django 的基本概念.组件和用法.为了便于理解,我们将 ...

  2. java利用jni调用dll方法

    准备工作: 需要用到的插件jni4net:这个需要去官网下载:https://sourceforge.net/projects/jni4net/files/ (1)     jni4net 是一个开源 ...

  3. 使用Docker-compose 搭建 Elasticsearch 集群服务

    Elasticsearch是一个开源的分布式搜索和分析引擎,用于处理大规模数据集.它构建在Apache Lucene搜索引擎库之上,提供了强大的全文搜索.实时数据分析和可扩展性. 以下是Elastic ...

  4. C#/VB.NET:快速而简单的免费SVG到PDF转换技巧

    在日常工作中,我们常常需要将SVG转换为PDF格式.这是因为SVG格式的图像在打印时可能会出现问题,例如失去分辨率或无法正确适应纸张大小.与此相比,PDF格式则专门用于打印和共享文档,可以确保高质量输 ...

  5. @Deprecated注解的使用

    被注解@Deprecated标记的程序元素是不鼓励使用的程序元素,通常是因为它很危险,或者是因为存在更好的替代方案. 除了对象自身引用自己用@Deprecated标记的方法外,其他情况使用@Depre ...

  6. PHP生成随机中文姓名

    <?phpfunction &xingming(){ for ($i = 0; $i < 1; $i++) { $xing = "赵,钱,孙,李,周,吴,郑,王,冯,陈, ...

  7. eclipse在主题商城下载安装黑色主题

    Eclipse配置黑色主题方法: 1. 借用国外一个Elipse主题网站分享的主题配置文件来配置一个黑色的主题. 主题网址 2. 在这个网站下载自己喜欢的主题,单击主题进入下载页面,建议大家选择EPF ...

  8. JNI c++ 与 java 通信过程

    JNI(Java Native Interface)是Java提供的一种机制,用于在Java和本地C/C++代码之间进行通信.下面是JNI C++与Java通信的一般过程: 1. 编写Java代码:首 ...

  9. Cloudflare 重定向配置

    最近把之前的一个网站域名换成另一个域名,想要添加一下重定向,避免流量流失(虽然本来就没流量).然后在 Cloudflare 配置时尝试多次都失败了,遇到各种 Your connection is no ...

  10. 应用debezium将postgresql数据送至kafka(官网示例,本地docker部署)

    版本 conncet 2.2 postgresql 15.2 1 postgresql 1.1 获取 docker pull debezium/example-postgres 1.2 运行 dock ...