Echarts+D3气泡图

Echarts+D3气泡图(相邻效果,气泡之间不叠加)

在这里插入图片描述

<template><div ref="chart" style="width: 500px; height: 500px"></div>
</template><script setup>
import * as echarts from 'echarts/core'
import { DatasetComponent, TooltipComponent, VisualMapComponent } from 'echarts/components'
import { CustomChart } from 'echarts/charts'
import { CanvasRenderer } from 'echarts/renderers'
echarts.use([DatasetComponent, TooltipComponent, VisualMapComponent, CustomChart, CanvasRenderer])
import * as d3 from 'd3'
import { ref, onMounted } from 'vue'const chart = ref(null)const colorList = ['#5470c6','#91cc75','#fac858','#ee6666','#73c0de','#3ba272','#fc8452','#9a60b4','#ea7ccc'
]let option = {}
let seriesData = [{depth: 1,id: 'city',index: 0,value: 2},{depth: 1,id: 'city.孝感',index: 6,value: 6},{depth: 1,id: 'city.武汉',index: 1,value: 36},{depth: 1,id: 'city.荆州',index: 2,value: 26},{depth: 1,id: 'city.咸宁',index: 3,value: 16},{depth: 1,id: 'city.仙桃',index: 4,value: 6},{depth: 1,id: 'city.潜江',index: 5,value: 10},{depth: 1,id: 'city.十堰',index: 6,value: 8}
]let displayRoot = stratify1()function stratify1() {return d3.stratify().parentId(function (d) {return d.id.substring(0, d.id.lastIndexOf('.'))})(seriesData).sum(function (d) {return d.value || 0}).sort(function (a, b) {return b.value - a.value})
}function overallLayout(params, api) {let context = params.contextd3.pack().size([api.getWidth() - 2, api.getHeight() - 2]).padding(0)(displayRoot)context.nodes = {}displayRoot.descendants().forEach(function (node) {context.nodes[node.id] = node})
}function renderItem(params, api) {let context = params.contextlet idx = params.dataIndex// Only do that layout once in each time `setOption` called.// 每次调用“setOption”时,只能进行一次布局。if (!context.layout) {context.layout = trueoverallLayout(params, api)}let nodePath = api.value('id')let nodeName = nodePath.slice(nodePath.lastIndexOf('.') + 1).split(/(?=[A-Z][^A-Z])/g).join('\n')let node = context.nodes[nodePath]if (node.id === 'city') {node.r = 0}if (!node) {// Reder nothing.return}let colorTop = colorList[idx % colorList.length]let colorBottom = colorList[(idx + 1) % colorList.length]// 创建线性渐变对象let linearGradient = new echarts.graphic.LinearGradient(0, 0, 0, 1, [{ offset: 0, color: colorTop },{ offset: 1, color: colorBottom }])//   // 创建线性渐变对象//   let linearGradient = new echarts.graphic.LinearGradient(0, 0, 0, 1, [//     {//       offset: 0,//       color: 'rgb(55, 255, 255)' // 渐变起始颜色//     },//     {//       offset: 0.5,//       color: 'rgb(155, 105, 255)' // 渐变起始颜色//     },//     {//       offset: 1,//       color: 'rgb(255, 0, 255)' // 渐变结束颜色//     }//   ])let z2 = api.value('depth') * 2return {type: 'circle',shape: {cx: node.x,cy: node.y,r: node.r},// transition: ['shape'],z2: z2,textContent: {type: 'text',style: {// transition: isLeaf ? 'fontSize' : null,text: nodeName,fill: '#fff',fontFamily: 'Arial',width: node.r * 1.3,overflow: 'truncate',fontSize: node.r / 3},emphasis: {style: {overflow: null,fontSize: Math.max(node.r / 3, 12)}}},textConfig: {position: 'inside'},style: {fill: linearGradient},emphasis: {style: {fontFamily: 'Arial',fontSize: 12,shadowBlur: 20,shadowOffsetX: 3,shadowOffsetY: 5,shadowColor: 'rgba(0,0,0,0.3)'}}}
}option = {dataset: {source: seriesData},tooltip: {},hoverLayerThreshold: Infinity,series: [{type: 'custom',colorBy: 'data',renderItem: renderItem,progressive: 0,coordinateSystem: 'none',encode: {tooltip: 'value',itemName: 'id'}}]
}const initEcharts = () => {const myChart = echarts.init(chart.value)myChart.setOption(option)
}onMounted(() => {initEcharts()
})
</script>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/513214.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

索引下推 INDEX CONDITION PUSHDOWN

索引下推 (INDEX CONDITION PUSHDOWN&#xff0c;简称ICP)是在 MySQL5.6 针对扫描索引下推二级索引的一项优化改进。 用来在范围查询时减少回表的次数。ICP适用于 MYISAM和INNODB.

爬虫逆向网站案例

一、相关网页 东方财富人气排行榜 二、查找url 三、寻找curl并复制 四、打开Convert curl commands to code (curlconverter.com) 五、修改并执行代码 import requestscookies {st_si: 73974981954644,st_pvi: 39724919122964,st_sp: 2024-03-05%2018%3A27%3A22,st_inirUrl:…

java八股文复习-----2024/03/05----基础---反射,动态代理。序列化

来源一 大彬八股文 来源二 2023 20W字八股文 2024秋招八股文 1.Java创建对象有几种方式&#xff1f; Java创建对象有以下几种方式&#xff1a; 用new语句创建对象。使用反射&#xff0c;使用Class.newInstance()创建对象。调用对象的clone()方法。运用反序列化手段&#x…

鸿蒙 Stage模型-应用组件-配置、UIAbility

前提&#xff1a;基于官网3.1/4.0文档。参考官网文档 基于Android开发体系来进行比较和思考。&#xff08;或有偏颇&#xff0c;自行斟酌&#xff09; 一、概念 可以看到分为运行期、编译器&#xff0c;主要关注UIAbility&#xff08;类似Activity&#xff0c;UI相关&#xff0…

Day09:基础入门-算法逆向散列对称非对称JS源码逆向AESDESRSASHA

目录 算法加密-概念&分类&类型 加密解密-识别特征&解密条件 解密实例-密文存储&数据传输 思维导图 章节知识点&#xff1a; 应用架构&#xff1a;Web/APP/云应用/三方服务/负载均衡等 安全产品&#xff1a;CDN/WAF/IDS/IPS/蜜罐/防火墙/杀毒等 渗透命令&am…

Minio容器化部署并整合SpringBoot

1、启动minio容器 docker run -p 9000:9000 -p 9090:9090 --name minio -d --restartalways -e MINIO_ACCESS_KEYminio -e MINIO_SECRET_KEYminio -v /usr/local/minio/data:/data -v /usr/local/minio/config:/root/.minio minio/minio server /data --console-addr…

Day18:信息打点-小程序应用解包反编译动态调试抓包静态分析源码架构

目录 小程序获取-各大平台&关键字搜索 小程序体验-凡科建站&模版测试上线 小程序抓包-Proxifier&BurpSuite联动 小程序逆向-解包反编译&动态调试&架构 思维导图 章节知识点 Web&#xff1a;语言/CMS/中间件/数据库/系统/WAF等 系统&#xff1a;操作系…

微信报修小程序源码

源码获取方式&#xff1a; 1、搜一搜 万能工具箱合集 然后点击资料库&#xff0c;即可获取资源 一、先看Demo&#xff08;已更新至4.0.0&#xff09; 想看界面图片的&#xff0c;辛苦你爬一下楼&#xff0c;点击下方查看资源&#xff0c;进入官方demo 二、功能介绍 1、当前版…

阿里云搭建私有docker仓库(学习)

搭建私有云仓库 首先登录后直接在页面搜索栏中搜索“容器镜像服务” 进入后直接选择个人版&#xff08;可以免费使用&#xff09; 选择镜像仓库后创建一个镜像仓库 在创建仓库之前我们先创建一个命名空间 然后可以再创建我们的仓库&#xff0c;可以与我们的github账号进行关联…

2024第十二届济南国际生物发酵产品与技术装备展览会胜利开幕

聚焦生物新产品新技术 引领生物产业发展新趋势 3月5日&#xff0c;2024第十二届济南国际生物发酵产品与技术装备展览会在济南市山东国际会展中心隆重举行。这次展览会&#xff0c;由中国生物发酵产业协会主办&#xff0c;山东省生物发酵产业协会协办&#xff0c;上海信世展览…

Zookeeper:常见的面试题和答案

1、什么是Zookeeper&#xff1f;它的作用是什么&#xff1f; 答&#xff1a; Zookeeper是一个开源的分布式协调服务&#xff0c;提供了一些基本的分布式服务&#xff0c;如配置管理、分布式锁、分布式队列等。其主要作用是帮助分布式应用程序进行协调和管理&#xff0c;确保分…

【剑指offer】C++ 翻转字符串里面的单词

目录 题目&#xff1a; 思路&#xff1a; 代码出现 结果 题目&#xff1a; 给定一个字符串&#xff0c;逐个翻转字符串中的每个单词。 示例 1&#xff1a; 输入: "the sky is blue" 输出: "blue is sky the" 示例 2&#xff1a; 输入: " hello…