用Highcharts 创建可拖拽三维散点立方体3D图表

发布时间:2026/7/24 0:01:07

用Highcharts 创建可拖拽三维散点立方体3D图表
该案例基于Highchartsscatter3d三维散点图实现空间立方体散点可视化核心特色三维 X/Y/Z 三轴空间所有散点分布在0~10立方体空间内散点使用径向渐变实现立体 3D 圆球质感支持鼠标 / 触屏拖拽画布自由旋转三维视角带 3D 立体边框框架还原空间盒子视觉。依赖前置scatter3d三维图表依赖扩展包highcharts-3d.js必须引入才能渲染三维坐标轴、拖拽旋转逻辑。代码分模块深度解析模块 1全局渐变统一配置Highcharts.setOptionsHighcharts.setOptions({ colors: Highcharts.getOptions().colors.map(function (color) { return { radialGradient: { cx: 0.4, cy: 0.3, r: 0.5 }, stops: [ [0, color], [1, Highcharts.color(color).brighten(-0.2).get(rgb)] ] }; }) });全局覆盖所有系列默认颜色将纯色替换为径向渐变渐变圆心偏移cx/cy模拟球体高光渐变终点将基础颜色压暗 20%形成球体明暗对比平面圆点呈现立体圆球效果配合colorByPoint: true每个散点自动分配不同渐变色彩。模块 2Chart 画布与 3D 核心配置chart: { renderTo: container, margin: 100, type: scatter3d, animation: false, options3d: { enabled: true, alpha: 10, // 垂直俯仰角度 beta: 30, // 水平旋转角度 depth: 250, // 三维纵深深度 viewDistance: 5, fitToPlot: false, frame: { // 立方体三维边框 bottom: { size: 1, color: rgba(0,0,0,0.02) }, back: { size: 1, color: rgba(0,0,0,0.04) }, side: { size: 1, color: rgba(0,0,0,0.06) } } } }关键 3D 参数说明alpha上下俯仰角度数值越大俯视越明显beta左右水平旋转角度depth控制 3D 透视拉伸程度frame绘制立方体底面、背面、侧面边框打造封闭空间盒子animation: false关闭渲染动画拖拽旋转更流畅。模块 3散点样式 plotOptionsplotOptions: { scatter: { width: 10, height: 10, depth: 10 } }三维散点长宽高统一为 10 单位形成标准正立方体小球长宽深一致保证球体不变形。模块 4三轴坐标轴配置xAxis/yAxis/zAxis: { min:0, max:10 }三轴统一值域 0~10构成规整立方体空间隐藏 Z 轴首刻度、Y 轴标题简化画布视觉。模块 5数据系列 Seriesseries: [{ name: Data, colorByPoint: true, // 每个点自动分配不同渐变颜色 data: [ [x,y,z], [x,y,z], ... ] }]数据格式三维数组[横坐标X,纵坐标Y,纵深Z]colorByPoint: true单个散点独立配色区分空间点位accessibility.exposeAsGroupOnly无障碍模式将所有散点识别为一组减少读屏冗余播报。模块 6自定义拖拽旋转事件核心交互扩展原生 3D 图表无内置拖拽旋转逻辑代码手动封装鼠标 / 触屏拖拽监听mousedown/touchstart记录鼠标初始坐标、初始俯仰 / 旋转角度拖动mousemove/touchmove时根据鼠标偏移量实时修改alpha/beta视角参数sensitivity5控制拖拽灵敏度数值越小旋转越灵敏鼠标松开 / 触屏结束mouseup/touchend解绑事件停止旋转同时兼容 PC 鼠标、手机触屏双端操作。可运行代码html 预览!DOCTYPE html html langzh-CN head meta charsetUTF-8 title3D可拖拽立方体散点图/title script srchttps://code.highcharts.com/highcharts.js/script script srchttps://code.highcharts.com/highcharts-3d.js/script style #container { width: 100%; height: 650px; } /style /head body div idcontainer/div script // 全局配置散点径向渐变实现3D圆球质感 Highcharts.setOptions({ colors: Highcharts.getOptions().colors.map(function (color) { return { radialGradient: { cx: 0.4, cy: 0.3, r: 0.5 }, stops: [ [0, color], [1, Highcharts.color(color).brighten(-0.2).get(rgb)] ] }; }) }); // 初始化3D图表 const chart new Highcharts.Chart({ chart: { renderTo: container, margin: 100, type: scatter3d, animation: false, options3d: { enabled: true, alpha: 10, beta: 30, depth: 250, viewDistance: 5, fitToPlot: false, frame: { bottom: { size: 1, color: rgba(0,0,0,0.02) }, back: { size: 1, color: rgba(0,0,0,0.04) }, side: { size: 1, color: rgba(0,0,0,0.06) } } } }, title: { text: 可拖拽三维立方体散点图 }, subtitle: { text: 按住鼠标拖动画布可360°旋转三维空间 }, plotOptions: { scatter: { width: 10, height: 10, depth: 10 } }, yAxis: { min: 0, max: 10, title: { text: Y轴 } }, xAxis: { min: 0, max: 10, title: { text: X轴 }, gridLineWidth: 1 }, zAxis: { min: 0, max: 10, title: { text: Z轴 }, showFirstLabel: false }, legend: { enabled: false }, series: [{ name: 空间采样点, colorByPoint: true, accessibility: { exposeAsGroupOnly: true }, data: [ [1, 6, 5], [8, 7, 9], [1, 3, 4], [4, 6, 8], [5, 7, 7], [6, 9, 6], [7, 0, 5], [2, 3, 3], [3, 9, 8], [3, 6, 5], [4, 9, 4], [2, 3, 3], [6, 9, 9], [0, 7, 0], [7, 7, 9], [7, 2, 9], [0, 6, 2], [4, 6, 7], [3, 7, 7], [0, 1, 7], [2, 8, 6], [2, 3, 7], [6, 4, 8], [3, 5, 9], [7, 9, 5], [3, 1, 7], [4, 4, 2], [3, 6, 2], [3, 1, 6], [6, 8, 5], [6, 6, 7], [4, 1, 1], [7, 2, 7], [7, 7, 0], [8, 8, 9], [9, 4, 1], [8, 3, 4], [9, 8, 9], [3, 5, 3], [0, 2, 4], [6, 0, 2], [2, 1, 3], [5, 8, 9], [2, 1, 1], [9, 7, 6], [3, 0, 2], [9, 9, 0], [3, 4, 8], [2, 6, 1], [8, 9, 2], [7, 6, 5], [6, 3, 1], [9, 3, 1], [8, 9, 3], [9, 1, 0], [3, 8, 7], [8, 0, 0], [4, 9, 7], [8, 6, 2], [4, 3, 0], [2, 3, 5], [9, 1, 4], [1, 1, 4], [6, 0, 2], [6, 1, 6], [3, 8, 8], [8, 8, 7], [5, 5, 0], [3, 9, 6], [5, 4, 3], [6, 8, 3], [0, 1, 5], [6, 7, 3], [8, 3, 2], [3, 8, 3], [2, 1, 6], [4, 6, 7], [8, 9, 9], [5, 4, 2], [6, 1, 3], [6, 9, 5], [4, 8, 2], [9, 7, 4], [5, 4, 2], [9, 6, 1], [2, 7, 3], [4, 5, 4], [6, 8, 1], [3, 4, 0], [2, 2, 6], [5, 1, 2], [9, 9, 7], [6, 9, 9], [8, 4, 3], [4, 1, 7], [6, 2, 5], [0, 4, 9], [3, 5, 9], [6, 9, 1], [1, 9, 2] ] }] }); // 自定义鼠标、触屏拖拽旋转逻辑 (function (H) { function dragStart(eStart) { eStart chart.pointer.normalize(eStart); const posX eStart.chartX, posY eStart.chartY, alpha chart.options.chart.options3d.alpha, beta chart.options.chart.options3d.beta, sensitivity 5, handlers []; function drag(e) { e chart.pointer.normalize(e); chart.update({ chart: { options3d: { alpha: alpha (e.chartY - posY) / sensitivity, beta: beta (posX - e.chartX) / sensitivity } } }, undefined, undefined, false); } function unbindAll() { handlers.forEach(function (unbind) { if (unbind) unbind(); }); handlers.length 0; } handlers.push(H.addEvent(document, mousemove, drag)); handlers.push(H.addEvent(document, touchmove, drag)); handlers.push(H.addEvent(document, mouseup, unbindAll)); handlers.push(H.addEvent(document, touchend, unbindAll)); } H.addEvent(chart.container, mousedown, dragStart); H.addEvent(chart.container, touchstart, dragStart); }(Highcharts)); /script /body /html业务数据解读所有散点均匀分布在X:0~10、Y:0~10、Z:0~10的标准立方体三维空间无集中聚集区域属于均匀随机三维采样点 拖拽旋转可从正面、侧面、俯视、仰视多角度观察点位空间分布解决二维图表无法表达三维空间关系的痛点。Highcharts 实现 3D 散点图核心优势原生三维坐标轴体系内置scatter3d三维散点、3D 框架渲染自带透视、俯仰 / 旋转参数无需引入 WebGL 复杂三维库灵活图形美化 全局批量配置径向渐变一键实现立体圆球散点不用逐个修改点位样式交互高度可扩展 原生无拖拽旋转但提供完整事件监听 API可自主扩展鼠标、触屏旋转、缩放、框选等交互多端兼容 拖拽逻辑同时适配 PC 鼠标、移动端触屏一套代码兼顾大屏与手机轻量化集成 依托 Highcharts 基础生态可无缝嵌入 Vue/React 后台、数字孪生、数据分析大屏完整无障碍支持 内置 accessibility 配置支持屏幕阅读器读取三维空间数据。附、拓展应用场景工业仿真零部件三维尺寸采样、设备传感器 XYZ 空间点位分布数据分析三维特征聚类、机器学习三维特征散点可视化数字孪生厂房设备三维坐标点位、仓储货物空间分布科研测绘地质三维采样、气象立体空间观测数据教育可视化数学三维坐标系教学演示。

相关新闻

[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解

[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解

2026/7/24 0:01:07

srcampy /libsrcampy 名称释义先明确结论: 官方文档没有公布标准化英文全称,是地平线内部项目缩写;行业公认拆解如下:srcampy Source Amplifier Python bindingsrc Source(图像源:MIPI Sensor、视频源&am…

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

2026/7/24 0:01:07

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

Django毕设项目: 基于 Django社区核酸信息采集与防疫数据分析系统 社区疫情政策推送与居民反馈服务系统(源码+文档,讲解、调试运行,定制等)

Django毕设项目: 基于 Django社区核酸信息采集与防疫数据分析系统 社区疫情政策推送与居民反馈服务系统(源码+文档,讲解、调试运行,定制等)

2026/7/23 23:51:07

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

深度强化学习在混合动力汽车能量管理中的应用与优化

深度强化学习在混合动力汽车能量管理中的应用与优化

2026/7/24 0:51:09

1. 混合动力汽车能量管理策略概述 混合动力汽车(HEV)作为传统燃油车向纯电动车过渡的关键技术路线,其核心挑战在于如何高效协调发动机与电动机的能量分配。能量管理策略(EMS)直接决定了整车燃油经济性、排放性能以及动…

Python「假多态」与 C++「真多态」的核心区别

Python「假多态」与 C++「真多态」的核心区别

2026/7/24 0:51:09

目录 Python「假多态」与 C「真多态」的核心区别 一、先搞懂:C 的「真多态」是什么? 1. 核心实现机制 2. 必须满足的 3 个条件 3. 核心特点 4. C 多态示例代码 二、Python 的「假多态」为什么是「假」的? 1. 核心本质:鸭子…

ADIS16470AMLZ是一款工业级微型六轴传感器

ADIS16470AMLZ是一款工业级微型六轴传感器

2026/7/24 0:51:09

型号介绍ADIS16470AMLZ 是一款工业级微型六轴 MEMS 惯性测量单元,它拥有行业突出的量程与噪声、零偏指标。陀螺仪支持 2000/s 超大角速度测量范围,适配高速旋转、剧烈机动设备;常温 25℃标准工况下运行零偏稳定性达 8/hr,角度随机…

ADXL367BCCZ-RL7,高精度无噪声三轴传感器

ADXL367BCCZ-RL7,高精度无噪声三轴传感器

2026/7/24 0:51:09

型号介绍ADXL367BCCZ-RL7 是一款超低功耗三轴数字 MEMS 加速度计,该芯片支持 1.1V 至 3.6V 宽电压输入,主供电引脚 Vs 与数字 IO 供电 VDDIO 共用这一电压区间,可直接匹配单颗纽扣锂电池,内部集成稳压电路,电源抑制比&…

ADAS1021KCBZ-RL,集成脉冲 / 阻抗检测的 5 通道低电位采集前端

ADAS1021KCBZ-RL,集成脉冲 / 阻抗检测的 5 通道低电位采集前端

2026/7/24 0:51:09

型号介绍ADAS1021KCBZ-RL 是一款高度集成的 5 通道模拟前端,它具备直流导联脱落检测与交流电极接触质量检测两套电路。直流检测覆盖全部 ECG 通道与 RLD 参考电极,检测激励电流、输出极性、脱落判定阈值全部可编程;交流阻抗检测用于评估电极与…

AI 电动抹布清洁机智能功率 MOSFET 完整选型方案

AI 电动抹布清洁机智能功率 MOSFET 完整选型方案

2026/7/24 0:41:09

随着 AI 技术赋能智能家居清洁设备(如自动路径规划、污渍识别、水量精准控制),清洁机对功率 MOSFET 提出了新要求:高效率、低发热、高集成度及低电压驱动。微碧半导体(VBsemi)基于先进的 SGT 与 Trench 工艺…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/23 3:40:08

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/23 4:40:05

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/23 1:54:13

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

Django毕设项目:基于 Django 的 智能化学生综合素质测评审核系统 校园学生评优评奖综合管理系统(源码+文档,讲解、调试运行,定制等)

2026/7/24 0:01:07

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解

[具身智能-634]:Python 封装的地平线 VIO 多媒体库:libsrcampy库详解

2026/7/24 0:01:07

srcampy /libsrcampy 名称释义先明确结论: 官方文档没有公布标准化英文全称,是地平线内部项目缩写;行业公认拆解如下:srcampy Source Amplifier Python bindingsrc Source(图像源:MIPI Sensor、视频源&am…

用Highcharts 创建可拖拽三维散点立方体3D图表

用Highcharts 创建可拖拽三维散点立方体3D图表

2026/7/24 0:01:07

该案例基于Highcharts scatter3d 三维散点图实现空间立方体散点可视化,核心特色:三维 X/Y/Z 三轴空间,所有散点分布在 0~10 立方体空间内;散点使用径向渐变实现立体 3D 圆球质感;支持鼠标 / 触屏拖拽画布,…