D3 二维图表的绘制系列(二十一)仪表盘图

D3 二维图表的绘制系列(一)介绍 1 介绍 D3 (或者叫 D3.js )是一个基于 web 标准的 JavaScript 可视化库. D3 可以借助 SVG, Canvas 以及HTML 将你的数据生动的展现出来. D3 结合了强大的可视化交互技术以及数据驱动 DOM 的技术,让你可以借助于现代浏览器的强大功能自由的对数据进行可视化 学习了d3一个多月,通过绘制一些简单的二维图表,总算入门了d3。强烈推荐《D3数据可视化实战... 阅读详情

上一篇: 河流图 https://blog.youkuaiyun.com/zjw_python/article/details/98592543

下一篇: 桑基图 https://blog.youkuaiyun.com/zjw_python/article/details/98611559

代码结构和初始化画布的Chart对象介绍,请先看 https://blog.youkuaiyun.com/zjw_python/article/details/98182540

本图完整的源码地址: https://github.com/zjw666/D3_demo/tree/master/src/gauge/basicGauge

1 图表效果

在这里插入图片描述

2 数据

仪表盘图的数据很简单,就是一个值,其被包含到config配置中了,没有单独的数据文件

3 关键代码

一些样式配置、数值的范围、仪表盘的弧度分段等

const config = {
   
   
    margins: {
   
   top: 80, left: 80, bottom: 50, right: 80},
    textColor: 'black',
    title: '仪表盘',
    totalAngle: 270,
    totalValue: 100,
    showValue: 90,
    width: 25,
    domain: [0, 20, 80, 100],
    lineColor: 'white',
    animateDuration: 500
}

尺度转换,根据画布大小计算仪表盘的宽度

/* ----------------------------计算半径-----------------------------  */

const radius = d3.min([chart.getBodyWidth()*0.95, chart.getBodyHeight()*0.95])/2;

渲染仪表盘轮廓,总体上就是一个具有内半径的大角度扇形,计算一下角度,用arc渲染即可

/* ----------------------------渲染弧形仪表盘轮廓------------------------  */
chart.renderSlices = function(){
   
   
    const drawAngles = config.domain.map((value, i, domain) => {
   
   
        const angle = value / config.totalValue * config.totalAngle;
        if (i !== domain.length-1){
   
   
            return {
   
   
                startAngle: (angle - config.totalAngle/2) * Math.PI/180,
                endAngle: (domain[i+1] / config.totalValue * config.totalAngle - config.totalAngle/2) * Math.PI/180
            }
        }
    });

    drawAngles.pop();

    const arc = d3.arc()
     
vue2.x-echarts公共组件封装--简易篇(3d柱状图,炫酷仪表盘,折线,曲线图) 阅读详情

相关推荐

【信息科学与工程学】【审计学】第一篇 招投标领域审计算法02

给定人、事、时、地、物等实体集合V和证据事实集合F, 构建一个概率图模型, 计算任意两个实体/事实之间存在关联关系的概率。:构建一个深度贝叶斯网络, 其中顶层为待推断的心理特征P, 中间层为可观测的行为模式B, 底层为多模态证据E。:基于现场痕迹、行为模式、通讯内容等证据E, 推断嫌疑人的心理特征向量P(如反社会性、冲动性、策划能力)。:对高风险的案件, 自动检索关联当事人、律师涉及的其他历史案件, 形成关联视图。:定义如“当事人-律师-当事人”、“当事人-多案件”等路径, 捕捉隐蔽关联。

weixin_49199313的博客 418

前端ECharts数据可视化大屏实战模板——集成3D沙盘与大数据实时监控

前端数据可视化是利用Web技术将结构化或非结构化数据通过图形、图表、地图等形式直观呈现的过程。其核心在于“以图释数”,借助视觉感知加速信息理解,广泛应用于实时监控、趋势预测和决策支持等场景。

weixin_31315007的博客 1192

HTML5 Canvas实现炫酷仪表盘进度条特效

在现代数据可视化仪表盘中,动态指针作为核心交互元素之一,承担着将抽象数值转化为直观视觉反馈的重要任务。一个流畅、精准且具备良好用户体验的指针动画系统,不仅依赖于底层图形绘制能力,更需要深入理解Canvas坐标变换机制、路径构造逻辑以及浏览器动画驱动原理。本章聚焦于指针组件从静态路径定义到动态旋转呈现的全过程,系统剖析如何通过moveTo()与lineTo()构建自定义形状,利用和rotate()完成空间变换,并借助实现高性能动画循环。

weixin_33812391的博客 564

d3-gauge:建立在 d3 之上的仪表可视化

d3-规 建立在 d3 之上的仪表可视化。 var d3gauge = require ( 'd3-gauge' ) ; var gauge = d3gauge ( document . getElementById ( 'simple-gauge' ) ) ; gauge . write ( 39 ) ; 注意:请确保在您的页面中 ,否则您将看到的只是一个大黑圈。 安装 npm install d3-gauge 尝试一下 npm explore d3-gauge npm run demo 应用程序接口 ####gauge (el[, opts])* 创建一个附加到给定 DOM 元素的仪表。 @name 仪表 @function参数: el DOMElement仪表附加到 opts 具有以下属性的对象仪表配置,所有这些属性都具有合理的默认值: 出现在仪表顶部的标签 {Stri

d3gauge:带有自定义最大值和最小值的d3量规

D3量规 使用d3的简单量规。 您可以在此仪表中存储最大值和最小值。 压力表可以自动缩放。 要查看运行中的压力表,请下载repo,npm install,然后使用webpack在本地运行以查看其外观。 量规示例 范例程式码 这是一个示例代码片段: var gauge = new Gauge ( '#idOfSelectedElement' , { size : 300 , clipWidth : 300 , clipHeight : 300 , ringWidth : 60 , maxValue : 10 , transitionMs : 4000 } ) ; gauge . render ( ) ; 全面的配置设置 { size : 200 , clipWidth : 200 ,

基于Vuejs框架构建的企业级数据可视化大屏展示平台_包含3D立体柱状图_环形跑道图_多彩雷达扫描_动态轮播折线图_金字塔趋势动画_环形饼图_仪表盘监控_词云热力_业务范围分布_.zip

基于Vuejs框架构建的企业级数据可视化大屏展示平台_包含3D立体柱状图_环形跑道图_多彩雷达扫描_动态轮播折线图_金字塔趋势动画_环形饼图_仪表盘监控_词云热力_业务范围分布_.zip

D3.js实现简洁实用的动态仪表盘的示例

本文介绍了D3.js实现简洁实用的动态仪表盘的示例,分享给大家,具体如下: 动态效果图: 仪表盘效果图 细看上面的动态效果图,可以发现: 一个值变换到一个新的值时,是一个渐变的过程; 圆弧末尾有一个竖线,作为仪表盘的指针,在仪表盘数值变化时,有一个弹性的动画效果。 一开始,我是用Echarts来实现仪表盘,但是它无法满足上面的两点需求。所以后来改成用D3.js。 D3.js可以完美地实现图表的定制,从细节上,完美地满足我们的需求。 初始化仪表盘 1、首先定义一个svg元素: <svg id="myGauge" width="80" height="108" ></svg> 然后

MagicDraw小白必看:BDD图中模块的5种属性详解(含SysML v1.6最新端口配置指南)

本文面向MagicDraw初学者,详细解析SysML BDD图中模块的五种核心结构属性,包括组成部分、引用、值、约束属性及端口。重点阐述了SysML v1.6中端口设计的范式转移,对比了完整端口与代理端口的区别与应用场景,并通过实战案例指导如何利用代理端口进行清晰的接口定义与系统架构设计。

rum55的博客 374

Python-OpenCV及cv2,numpy库最新安装教程[最全步骤]

安装教程目录前言OpenCV-Python安装教程报错解决cv2安装numpy安装opencv安装(附加)总结 前言 首先,我知道一些看到我的Blog的人已经在网上找了很多歪路子,现在已经火冒三丈了(我也是这样过来的hhhh),那么现在,深呼吸,跟着我的教程,不要着急,每一步都要读一遍。完整安装过程需要1个小时左右(仅供参考,本人第一次安装python花了一天(确信)) OpenCV-Python...

qq_45425286的博客 7431

在工作台 LS-DYNA 中检索和变换反作用力分量

在结构仿真中,通常需要由施加的位移或速度边界条件产生的反作用力。此外,通常需要根据用户定义的坐标系解析反作用力分量。在本文中,详细介绍了在Workbench (WB) LS-DYNA 中,相对于用户定义的坐标系检索和变换反作用力分量的过程。

jkh920184196的博客 885

SystemVerilog新手实战指南:iverilog与VScode的完美组合

本文为SystemVerilog新手提供了一套高效入门方案,详细介绍了如何利用开源编译器iverilog与轻量编辑器VScode搭建学习环境。内容涵盖十分钟快速安装配置、首个工程从编码到查看波形的完整流程,并演示了动态数组和队列等SystemVerilog新特性的使用,旨在帮助初学者避开复杂商业工具,快速掌握数字电路设计与验证的核心技能。

f6g7h8i9j的博客 513

基于SAHI算法优化YOLOv8的小目标检测性能研究

SAHI(SliceAwareHyperInference)是一种推理优化算法,通过将大图切片为小块并分别推理的方式,实现更精细的小目标检测。提升小目标检测精度:切片后的小目标在每个小块中占比更大,模型能够更好地聚焦。兼容性强:可直接集成到现有目标检测框架中(如YOLO系列、Detectron2等)。支持大分辨率图片和视频推理:减少硬件对大图推理的限制。本文详细探讨了如何通过SAHI(切片辅助超推理算法)结合YOLOv8模型,有效提升小目标检测性能,尤其是在高分辨率图片和视频场景中表现优异。

博客 2371

GEE案例:Landsat 5、7、8影像构建1985-2023年rsei生态遥感指数详细代码

rsei(Regional Silviculture Ecological Index,地区林业生态指数)是一种生态遥感指标,用于评估森林生态系统的健康状况和生态服务。构建1985-2023年的rsei生态遥感指,主要需要使用Landsat 5、7和8的遥感影像数据。以下是一种可能的构建方法:1. 数据获取:从美国地质调查局(USGS)或其他可靠数据提供商处获取Landsat 5、7和8的遥感影像数据。确保选择的影像具有适当的空间和时间分辨率,以覆盖所需的时间段。

此星光明博客 3411

【C++/嵌入式梳理】bootloader

【C++/嵌入式笔试面试八股】bootloader

Hi 1210

【AI智能体】Dify 搭建数据分析应用实战操作详解

Dify 搭建数据分析应用实战详解

congge 7296

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

上一篇: D3 二维图表的绘制系列(二十)河流图
下一篇: D3 二维图表的绘制系列(二十三)旭日图
PAT-python-zjw
博客等级 码龄10年 381粉丝 408原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值