提供3000多款全球软件/控件产品
针对软件研发的各个阶段提供专业培训与技术咨询
根据客户需求提供定制化的软件开发服务
全球知名设计软件,显著提升设计质量
打造以经营为中心,实现生产过程透明化管理
帮助企业合理产能分配,提高资源利用率
快速打造数字化生产线,实现全流程追溯
生产过程精准追溯,满足企业合规要求
以六西格玛为理论基础,实现产品质量全数字化管理
通过大屏电子看板,实现车间透明化管理
对设备进行全生命周期管理,提高设备综合利用率
实现设备数据的实时采集与监控
利用数字化技术提升油气勘探的效率和成功率
钻井计划优化、实时监控和风险评估
提供业务洞察与决策支持实现数据驱动决策
翻译|使用教程|编辑:杨鹏连|2021-03-10 09:45:09.950|阅读 192 次
概述:在本教程中,我们将向您展示如何使用Highcharts构建彩票轮。由于高度可定制的库功能,这是可能的,您几乎可以创建任何基于SVG的交互式可视化,例如交互式拼图或蛇游戏。
# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>
Highcharts是一款纯JavaScript编写的图表库,为你的Web网站、Web应用程序提供直观、交互式图表。当前支持折线、曲线、区域、区域曲线图、柱形图、条形图、饼图、散点图、角度测量图、区域排列图、区域曲线排列图、柱形排列图、极坐标图等几十种图表类型。
在本教程中,我们将向您展示如何使用Highcharts构建彩票轮。由于高度可定制的库功能,这是可能的,您几乎可以创建任何基于SVG的交互式可视化,例如交互式拼图或蛇游戏。
下图显示了一个彩票轮和四个设置选项:
让我们检查代码,并了解如何创建这样的演示。
该代码有四个主要部分:
第一步是使用箭头创建轮子。
车轮代码简单明了。这只是一个基本的饼图:
chart = Highcharts.chart('container', { chart: { animation: false, marginTop: 100, events: { ... }, title: { text: 'Chance wheel' }, series: [{ type: 'pie', size: '100%', dataLabels: { distance: -20 }, data: [ ['Pudding', 1], ['Cake', 1], ['Salad', 1], ['Potato', 1], ['Bread', 1] ], startAngle: 360 * Math.random() }] });使用Highcharts时未提供开箱即用的箭头,因此您必须从头开始构建它。由于使用了renderer方法,您可以轻松地将任何自定义路径添加到Highcharts代码。
triangle = chart.renderer.path([ ['M', chart.chartWidth / 2 - 10, chart.plotTop - 5], ['L', chart.chartWidth / 2 + 10, chart.plotTop - 5], ['L', chart.chartWidth / 2, chart.plotTop + 10], ['Z'] ]) .attr({ fill: 'black' }) .add();完成此部分后,就该移动到动画部分了。
旋转动画
对于旋转动画,有两个主要部分:
// Create the arrow at the top. t = setInterval(() => { // Animation loop if (!physics.isActive) { startAngle += diff; if (startAngle > 360) { startAngle -= 360; } diff *= 0.98; chart.series[0].update({ startAngle });借助此巧妙公式中的diff变量,车轮每次旋转后速度都会降低。现在,车轮能够旋转并停止。让我们看看如何选择一个赢家。diff *= 0.98;
选择获胜者
轮子停止运动后,findWinner如果箭头位置在切片起始角度和阈值之内,则以下方法将遍历数据集或切片并进行处理winThreshold。如果存在匹配项,则findWinner返回切片的索引以获取标签并显示获胜者。
const findWinner = (data) => { const sliceSize = 360 / data.length; const winThreshold = 360 - sliceSize; let sliceBeginning; for (let i in data) { sliceBeginning = radToDeg(data[i].shapeArgs.start) + 90; if (sliceBeginning > 360) { ... } } return -1; }
到目前为止,该演示包含所有彩票轮组件(请参见下面的演示):
但是,我们还没有完成。让我们玩得开心,添加一些虚构的物理运动🙂
春季动画
产生人造物理学运动的最重要变量是力,阻力,当前角度,目标角度,强度和阈值。让我们将它们全部收集在一个物体物理下:
let physics = { force: 0, angleVel: 0, angle: 0, prevAngle: 0, // only used to calculate winner strength: 0.003 + strengthSlider.value / 10000, // tweakable drag: 0.98 + dragSlider.value / 1000, // tweakable threshold: 2 + lengthSlider.value / 10, // tweakable targ: 0, isActive: false };从春季动画中选择获胜者
本教程的最后一步是选择获胜者。随着方向盘左右移动,我们会读取每个方向改变的临时获胜者。如果连续两次选择获胜者的索引,则肯定选择了获胜者(请参见下面的代码):
if (physics.prevAngle >= physics.angle && currentWinner < 0) { currentWinner = findWinner(chart.series[0].data); foundPossibleWinner = true; } else if ( physics.prevAngle <= physics.angle && foundPossibleWinner ) { const nextWinner = findWinner(chart.series[0].data); if (currentWinner == nextWinner) { chart.setTitle({ text: 'The winner is ' + chart.series[0].data[currentWinner].name + '!' }); foundPossibleWinner = false; button.disabled = false; } else { currentWinner = -1; foundPossibleWinner = false; } }
APS帮助提升企业生产效率,真正实现生产计划可视化呈现与控制,快速有效响应不同场景的生产计划,提高准时交货能力,提高产能和资源利用率
想要购买Highcharts正版授权,或了解更多产品信息请点击
本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@capbkgr.cn
文章转载自:在 Microsoft Excel 中,复制行、列和单元格是日常数据处理中的常见操作。本文将介绍如何使用 Spire.XLS for Java 和 Java 在 Excel 中复制行、列和单元格数据并保留格式。
雷达图又称蜘蛛图,是一种显示二维多元数据的图形方法。图表上的每个辐条代表一个不同的变量,数据点沿着这些辐条绘制。雷达图尤其适用于比较不同实体在多个标准中的表现。本文将演示如何使用 Spire.XLS for Python 通过 Python 在 Excel 中创建雷达图。
本文将为大家介绍如何使用图表控件SciChart WPF实现WPF应用程序的DPI感知,欢迎下载最新版组件体验!
本文将演示如何使用DevExpress WPF Grid控件实现移动和调整列大小,欢迎下载最新版组件体验!
服务电话
重庆/ 023-68661681
华东/ 13452821722
华南/ 18100878085
华北/ 17347785263
客户支持
技术支持咨询服务
服务热线:400-700-1020
邮箱:sales@capbkgr.cn
关注我们
地址 : 重庆市九龙坡区火炬大道69号6幢