网站建设补贴/发帖推广百度首页
项目需要实现花瓣图,但是改图表在echarts,highCharts等案例中均未出现,有类似的韦恩图,但是和需求有所差距;
为实现该效果,静态图表上采取svg来手动绘制花瓣:
- 确定中心点,以该点为中心,向四周绘制椭圆,该图像为均等分布(椭圆圆心不在中心点,而是有一定的偏移度)
- 在中心点处,绘制花心,为一个圆形,用于展示多朵花瓣的交集
- 花瓣的长度,颜色均可调整
技术点1:svg绘制花瓣图
<svg id="flower-svg" :width="flowerWidth" :height=" flowerHeight "><!-- 动态生成花瓣 --><g class="flower-svg-leaf" transform="translate(320, 200)"><g v-for="(leaf, index) in leafCount" :key="index" :transform="`rotate(${(index * 360) / leafCount}) translate(55, 0)`"><!-- 椭圆,背景颜色来自于 colors 数组 --><!-- 花瓣边框的颜色和透明度stroke="rgb(255, 106, 0)" stroke-opacity="1"--><ellipse class="svg-leaf-item-ellipse" :rx="leafSize.rx" :ry="leafSize.ry":fill="colors[index]" fill-opacity="0.5"></ellipse><!-- 椭圆的内部数据 --><text class="svg-leaf-item-text" font-size="12px" font-family="Arial" fill="#000000" text-anchor="end" dominant-baseline="middle"transform="rotate(0)" dx="53" visibility="visible" dy="2">50</text><!-- 椭圆内部数据对应的外部标签 --><text class="svg-leaf-item-group" font-size="12px" font-family="Arial" fill="#000000" text-anchor="start"dominant-baseline="middle" transform="rotate(0)" dy="2" dx="110" visibility="visible">Leaf {{ index + 1 }}</text></g></g><!-- 花心 --><g class="flower-svg-center" transform="translate(320, 200)"><circle class="flower-svg-center-self" :r="leafSize.ry - 5" fill="rgb(241, 43, 11)" fill-opacity="0.5"stroke="rgb(241, 43, 11)" stroke-opacity="0.5"></circle><text class="flower-svg-center-text" font-size="12px" font-family="Arial" fill="rgb(255, 255, 255)" visibility="visible"text-anchor="middle" dominant-baseline="middle" dy="3">141</text></g></svg>
静态代码详解:
transform="translate(320, 200)"
,svg 的宽高分别为640,400,所以以偏移一半为中心<g v-for="(leaf, index) in leafCount" :key="index" :transform="rotate(${(index * 360) / leafCount}) translate(55, 0)
">:leafCount
为花瓣的数量,对应transform
为旋转角度,等分显示每一朵花瓣- 用
ellipse
来绘制椭圆,涉及的参数有长半轴,短半轴,填充颜色等一些基础配置,后期均改为动态参数
技术点2:el-select下拉框回显色卡
原始下拉框options为:
colorTemplates: [
{name: "色系1",value: "1",colors: ["rgba(255, 106, 0, 0.5)","rgba(255, 209, 26, 0.5)","rgba(255, 72, 0, 0.5)","rgba(255, 153, 51, 0.5)","rgba(204, 102, 0, 0.5)","rgba(255, 51, 51, 0.5)","rgba(255, 128, 0, 0.5)","rgba(204, 0, 102, 0.5)","rgba(255, 51, 153, 0.5)","rgba(204, 51, 0, 0.5)",],
},
{name: "色系2",value: "2",colors: ["rgba(0, 153, 255, 0.5)","rgba(0, 102, 204, 0.5)","rgba(0, 72, 204, 0.5)","rgba(0, 204, 255, 0.5)","rgba(51, 204, 255, 0.5)","rgba(102, 255, 255, 0.5)","rgba(51, 102, 255, 0.5)","rgba(0, 255, 204, 0.5)","rgba(51, 255, 204, 0.5)","rgba(0, 153, 204, 0.5)",],
},
{name: "色系3",value: "3",colors: ["rgba(34, 139, 34, 0.5)","rgba(0, 255, 0, 0.5)","rgba(0, 128, 0, 0.5)","rgba(60, 179, 113, 0.5)","rgba(0, 255, 127, 0.5)","rgba(144, 238, 144, 0.5)","rgba(34, 139, 34, 0.5)","rgba(127, 255, 0, 0.5)","rgba(46, 139, 87, 0.5)","rgba(85, 107, 47, 0.5)",],
},
],
需要将每组对象中的颜色,以色卡的形式展示在下拉框中,并且在选项框中回显
下拉框展示色卡:在el-option
里面通过自定义内容,遍历color的十个颜色,拼接成色卡
<el-selectv-model="selectedTemplate"placeholder=""@change="handleTemplateChange"style="width: 250px"ref="selectRef"><el-optionv-for="(template, index) in colorTemplates":key="index":label="template.name":value="template.name"><div style="display: flex; gap: 5px"><!-- 展示每个模板下的颜色方块 --><divv-for="(color, colorIndex) in template.colors":key="colorIndex"class="color-box":style="{backgroundColor: color,width: '20px',height: '20px',}"></div></div></el-option></el-select>
选择框回显色卡:
- 首先,清空选择框绑定的默认值
selectedTemplate
(在此之前已经将该值传给Vuex),不能通过this.$refs["selectRef"].value
去修改【不应该直接修改通过 props 传递过来的数据,因为 Vue 会在每次重新渲染时重置这些值。】- 将色卡的十组数据,生成
svg
字符串,转化为base64
编码,以background:url()
的方式,回显到选择框中
getSvgString(colors) {const svgContent = `<svg xmlns="http://www.w3.org/2000/svg" width="200" height="20">${colors.map((color, index) =>`<rect x="${index * 20}" width="20" height="20" fill="${color}"/>`).join("")}</svg>`;// 将SVG内容转换为Base64const base64EncodedSvg = btoa(unescape(encodeURIComponent(svgContent))); // btoa编码,encodeURIComponent避免特殊字符问题// 返回Base64编码后的SVG字符串,用作背景图this.selectSVG = `url('data:image/svg+xml;base64,${base64EncodedSvg}')`;// console.log(this.$refs["selectRef"].$el.children[0].children[0]);this.$refs["selectRef"].$el.children[0].children[0].setAttribute("style",`background:${this.selectSVG};background-repeat:no-repeat;background-position:15px;`);},
相关文章:

vue2+svg+elementui实现花瓣图自定义el-select回显色卡图片
项目需要实现花瓣图,但是改图表在echarts,highCharts等案例中均未出现,有类似的韦恩图,但是和需求有所差距; 为实现该效果,静态图表上采取svg来手动绘制花瓣: 确定中心点,以该点为中…...

记录一次网关异常
记一次网关异常 网关时不时就会出现下面的异常。关键是不知道什么时候就会报错,并且有时候就算什么都不操作,也会导致这个异常。 ERROR org.springframework.scheduling.support.TaskUtils$LoggingErrorHandler - Unexpected error occurred in schedul…...

计算机网络——不同版本的 HTTP 协议
介绍 HTTP,即超文本传输协议(HyperText Transfer Protocol),是应用层的一个简单的请求-响应协议,它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。本文将介绍 HTTP 协议各个版本。 HTTP/1.0 HTTP/1…...

使用 LLaMA-Factory 微调
git clone https://github.com/hiyouga/LLaMA-Factory.git cd LLaMA-Factory pip install -e . pip install tf-keras[dataset_info.json](dataset_info.json) 包含了所有可用的数据集。如果您希望使用自定义数据集,请**务必**在 dataset_info.json 文件中添加*数据…...

vue2 虚拟DOM 和 真实DOM (概念、作用、Diff 算法)
虚拟 DOM 和 真实DOM(概念、作用、Diff 算法) 1.1 概念 真实 DOM(Document Object Model):是浏览器中用于表示文档结构的树形结构。 <h2>你好</h2>虚拟DOM:用 JavaScript 对象来模拟真实 DOM…...

GEOBench-VLM:专为地理空间任务设计的视觉-语言模型基准测试数据集
2024-11-29 ,由穆罕默德本扎耶德人工智能大学等机构创建了GEOBench-VLM数据集,目的评估视觉-语言模型(VLM)在地理空间任务中的表现。该数据集的推出填补了现有基准测试在地理空间应用中的空白,提供了超过10,000个经过人工验证的指…...

说说Elasticsearch查询语句如何提升权重?
大家好,我是锋哥。今天分享关于【说说Elasticsearch查询语句如何提升权重?】面试题。希望对大家有帮助; 说说Elasticsearch查询语句如何提升权重? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 在 Elasticsearch 中&…...

2-2-18-9 QNX系统架构之文件系统(一)
阅读前言 本文以QNX系统官方的文档英文原版资料为参考,翻译和逐句校对后,对QNX操作系统的相关概念进行了深度整理,旨在帮助想要了解QNX的读者及开发者可以快速阅读,而不必查看晦涩难懂的英文原文,这些文章将会作为一个…...

Unity类银河战士恶魔城学习总结(P156 Audio Settings音频设置)
【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节实现了音频的大小设置与保存加载 音频管理器 UI_VolumeSlider.cs 定义了 UI_VolumeSlider 类,用于处理与音频设置相关的…...

springboot vue 会员收银系统 (12)购物车关联服务人员 订单计算提成 开源
前言 完整版演示 http://120.26.95.195/ 开发版演示 http://120.26.95.195:8889/ 在之前的开发进程中,我们完成订单的挂单和取单功能,今天我们完成购物车关联服务人员,用户计算门店服务人员的提成。 1.商品关联服务人员 服务人员可以选择 一…...

P3916 图的遍历(Tarjan缩点和反向建边)
P3916 图的遍历 - 洛谷 | 计算机科学教育新生态 写法一:Tarjan 思路:先运用Tarjan算法得到每个连通块中最大的编号,然后对每个连通块进行缩点重新建图,进行dfs,得到缩点后的连通块能够达到的最大编号。 Code: conste…...

Android13 允许桌面自动旋转
一)需求-场景 Android13 实现允许桌面自动旋转 Android13 版本开始后,支持屏幕自动旋转,优化体验和兼容性,适配不同屏幕 主界面可自动旋转 二)参考资料 android framework13-launcher3【06手机旋转问题】 Launcher默…...

cocotb value cocotb—基础语法对照篇
cocotb—基础语法对照篇 import cocotb from cocotb.triggers import Timer from adder_model import adder_model from cocotb.clock import Clock from cocotb.triggers import RisingEdge import randomcocotb.test() async def adder_basic_test(dut):"""Te…...

001-SpringBoot整合日志
SpringBoot整合日志 一、引入依赖二、配置 application.yml三、配置文件 logback.xml四、配置文件 WebConfigurerAdapter五、配置常量文件六、配置拦截器七、效果展示一、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId&…...

【Java基础面试题011】什么是Java中的自动装箱和拆箱?
相关知识补充:《Java从入门到精通(JDK17版)》_尚硅谷电子书.pdf Autism_Btkrsr/Blog_md_to_pdf - 码云 - 开源中国 (gitee.com) 回答重点 自动装箱:Java编译器自动将基本数据类型转换为包装类型 自动拆箱:Java编译器自动将包装类转换为基…...

ERROR in [eslint] Invalid Options ‘extensions‘ has been removed.
看着这个报错 感觉是版本不对引起的 ERROR in [eslint] Invalid Options: - Unknown options: extensions - extensions has been removed. ERROR in Error: Child compilation failed: [eslint] Invalid Options: - Unknown options: extensions - extensions has b…...

消息传递神经网络(Message Passing Neural Networks, MPNN)
消息传递神经网络(Message Passing Neural Networks, MPNN) 一、引言二、消息传递框架概述1.消息传递阶段(1)消息生成与传播-message(2)消息聚合-aggregate(3)消息更新-update&#…...

常用图像变换方法
伽马变换: void gamma_transform(cv::Mat &img, double gamma) {cv::Mat normalized;img.convertTo(normalized, CV_64F...

从被动响应到主动帮助,ProActive Agent开启人机交互新篇章
在人工智能领域,我们正见证着一场革命性的变革。传统的AI助手,如ChatGPT,需要明确的指令才能执行任务。但现在,清华大学联合面壁智能等团队提出了一种全新的主动式Agent交互范式——ProActive Agent,它能够主动观察环境…...

力扣hot100道【贪心算法后续解题方法心得】(三)
力扣hot100道【贪心算法后续解题方法心得】 十四、贪心算法关键解题思路1、买卖股票的最佳时机2、跳跃游戏3、跳跃游戏 | |4、划分字母区间 十五、动态规划什么是动态规划?关键解题思路和步骤1、打家劫舍2、01背包问题3、完全平方式4、零钱兑换5、单词拆分6、最长递…...

工业齐套管理虚拟现实仿真模拟软件
工业齐套管理虚拟现实仿真模拟软件是与法国最大的汽车制造商合作开发的一款虚拟现实仿真模拟软件,借助身临其境的虚拟现实环境,无需停止生产线,即可模拟仓库和提货区域。 工业齐套管理虚拟现实仿真模拟软件不仅适用于汽车工业,安全…...

ARP表、MAC表、路由表的区别和各自作用
文章目录 ARP表、MAC表、路由表的区别和各自作用同一网络内:ARP表request - 请求reply - 响应 MAC地址在同一网络内,交换机如何工作? 不同网络路由表不同网络通信流程PC1到路由器路由器到PC2流程图 简短总结 ARP表、MAC表、路由表的区别和各自作用 拓扑图如下: 同一网络内:…...

Android 使用OpenGLES + MediaPlayer 获取视频截图
概述 Android 获取视频缩略图的方法通常有: ContentResolver: 使用系统数据库MediaMetadataRetriever: 这个是android提供的类,用来获取本地和网络media相关文件的信息ThumbnailUtils: 是在android2.2(api8)之后新增的一个,该类为…...

浏览器的事件循环机制
浏览器和Node的事件循环机制 引言浏览器的事件循环机制 引言 由于JS是单线程的脚本语言,所以在同一时间只能做一件事情,当遇到多个任务时,我们不可能一直等待任务完成,这会造成巨大的资源浪费。为了协调时间,用户交互…...

Z2400032基于Java+Mysql+SSM的校园在线点餐系统的设计与实现 代码 论文
在线点餐系统 1.项目描述2. 技术栈3. 项目结构后端前端 4. 功能模块5. 项目实现步骤注意事项 6.界面展示7.源码获取 1.项目描述 本项目旨在开发一个校园在线点餐系统,通过前后端分离的方式,为在校学生提供便捷的餐厅点餐服务,同时方便餐厅和…...

k8s使用的nfs作为sc。
k8s使用的nfs作为sc。 当前出现一个问题: 1.有一个pod他是通过流进行文件解压并写入到nfs服务器对应的目录中。 2.一个大压缩包下有20多个压缩包,递归解压。解压完成后应该是20多个文件夹,文件夹下有.json文件。 3.pod中的程序解压后去找以.j…...

linux下Qt程序部署教程
文章目录 [toc]1、概述2、静态编译安装Qt1.1 安装依赖1.2 静态编译1.3 报错1.4 添加环境变量1.5 下载安装QtCreator 3、配置linuxdeployqt环境1.1 在线安装依赖1.2 使用linuxdeployqt提供的程序1.3 编译安装linuxdeployqt 4、使用linuxdeployqt打包依赖1.1 linuxdeployqt使用选…...

tp6 合成两个pdf文件(附加pdf或者替换pdf)
最近在做项目有个需求,项目中需要根据设置的html合同模板自动生成PDF合同供客户下载签署,并根据回传的已签署合同尾页来替换原来未签署合同的尾页,合成新的已签署合同文本。 读取两个PDF文件并合成的 具体代码记录如下: use set…...

工作:三菱PLC防止程序存储器爆满方法
工作:三菱PLC防止程序存储器爆满方法 一、防止程序存储器爆满方法1、编程时,添加行注释时,记得要选“外围”,这样不会占用PLC程序存储器内存;2、选择“外围”的注释,前面会有个*星号,方便检查 二…...

jmeter 获取唯一全局变量及多线程读写的问题
一、jmeter 获取唯一ID号全局变量 在JMeter中获取唯一ID号并设置为全局变量,可以通过以下几种方法实现: 使用JMeter内置的UUID函数: JMeter提供了一个内置的函数__UUID,可以生成一个随机的UUID,这个UUID是全局唯一的。…...