billboardjs elease:新的区域步长图表!

新的 v3.13 版本今天发布了!此版本包含 4 个新功能、2 个错误修复和工具改进。

详细发布信息请查看发行说明:https://github.com/naver/billboard.js/releases/tag/3.13.0

什么是新的?

面积步长范围图

范围类型对于从基线值可视化“范围值”很有用。从这个版本开始,将为变体提供新的“步骤”类型。

billboardjs elease:新的区域步长图表!

演示:https://naver.github.io/billboard.js/demo/#chart.funnelchart

import bb, {areasteprange} from "billboard";bb.generate({  data: {    columns: [     ["data1", [70, 40, 30],     [155, 130, 115],     [160, 135, 120],     [200, 120, 110],     [95, 50, 40],     [199, 160, 125]    ]],    type: areasteprange()  }});

区域渲染改进

要使用虚线渲染某些范围,请使用 data.regions 选项。但是渲染虚线的方式,需要将多个路径命令组合成虚线来完成。

billboardjs elease:新的区域步长图表!

从上面的示例截图来看,需要多个路径命令来绘制虚线。

## multiple path commandm5,232l95,136m99,139l104,142 m109,145l114,149 ... m l m l ...## single path commandm4,232,136l139,192l206,23l274,164l341,108

这种方法导致了一些渲染问题(#1,#2),我们尝试以原生方式改进这个问题。

我们不再使用路径命令绘制虚线,而是使用stroke-dasharray 样式属性进行渲染。

billboardjs elease:新的区域步长图表!

之前:路径命令/之后:行程-dasharray

演示:https://naver.github.io/billboard.js/demo/#chart.linechartwithregions

在缩放交互上,动画帧性能从 84ms → 5ms 得到了提升!

billboardjs elease:新的区域步长图表!

更新到3.12,无需更改任何代码即可获得好处。

legend.format:提供原始数据id
当指定 data.names 选项时,它会使显示的数据名称与原始名称(id)不同。

{  data: {    names: {      // will make data1 and data2, displayed in different values.      data1: "detailed name",      data2: "name detailed"    },    columns: [       ["data1", 71.4],       ["data2", 10]    ]  }}

这种情况下,legend.format回调,会收到data.names替换后的值,而不是原来的id。

data: {    names: {      // will make data1 and data2, displayed in different values.      data1: "detailed name",      data2: "name detailed"    },}legend: {    format: function(id) {       // id will be 'detailed name' and 'name detailed'    }}

从此版本中将提供原始的“id”值和替换的名称。

data: {    names: {      // will make data1 and data2, displayed in different values.      data1: "detailed name",      data2: "name detailed"    },}legend: {    format: function(id, dataid) {        // id will be 'detailed name' and 'name detailed'        // dataid will be 'data1' and 'data2'    }}

演示:https://naver.github.io/billboard.js/demo/#legend.legendformat

bar.width 回调

以前,bar.width 可以指定绝对值或比率值。绝对不能反映图表动态调整大小,比率可以反映但有一些限制。

路比是根据以下公式计算的。

x axis tick interval * ratio

例如,如果图表宽度为 500px,轴刻度数为 5 x,则间隔大约为 100px。

billboardjs elease:新的区域步长图表!

在这种情况下,如果指定 bar.ratio=0.5,则公式如下,bar 的宽度将为 49.9px。

100(exact value is 99.8) * 0.5 = 49.9

为了更好地控制调整栏的宽度值,将增强 bar.width 选项以接受带有方便参数的回调函数。

演示:https://naver.github.io/billboard.js/demo/#barchartoptions.barwidth

bar: {    width: function(width, targetsNum, maxDataCount) {         // - width: chart area width         // - targetsNum: number of targets         // - maxDataCount: maximum data count among targets   }}

还有一件事,更新测试框架

我们采用了 karma + mocha 作为我们的测试框架,维护 billboard.js 稳定是很棒的经验。

遗憾的是,karma 宣布弃用,我们需要迁移一些其他现代测试框架,以保持库稳定并遵循现代生态系统。

经过一番研究,我们决定转向 vitest。我们在此版本中成功迁移,本地测试改进高达 63%!

套餐 持续时间 业力差异

业力(摩卡+柴)142.382-vitest(webdriverio:chrome)144.364*+1.39%vitest(剧作家:chromium)51.606**-63.75%

填写更多详情,请查看 https://github.com/naver/billboard.js/pull/3866

闭幕式

这就是我们本次发布的全部内容,感谢您的关注!

以上就是billboardjs elease:新的区域步长图表!的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1490858.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月19日 13:30:01
下一篇 2025年12月19日 13:30:12

相关推荐

  • Petite-Vue开发指南:正确处理事件绑定与响应式数据

    本文旨在指导读者如何在Petite-Vue应用中正确实现事件绑定和响应式数据管理。我们将解释为何事件处理器不显示在编译后的HTML中,并强调Petite-Vue不直接支持Vue Options API的特性。通过提供直接定义响应式属性和方法的正确范例,本文旨在帮助开发者避免常见错误,构建高效的轻量级…

    2025年12月20日
    000
  • Petite-Vue 开发指南:正确处理事件绑定与响应式数据

    本文旨在解决Petite-Vue应用中常见的事件绑定不生效和响应式属性未定义的问题。通过详细解析Petite-Vue精简的API设计,我们将演示如何正确定义组件的响应式数据和方法,避免使用传统Vue Options API的误区,并提供实用的代码示例,确保您的Petite-Vue应用能够按预期工作,…

    2025年12月20日
    000
  • 深入解析 Petite-Vue v-for 渲染问题与解决方案

    本文旨在解决 Petite-Vue 中使用 v-for 进行列表渲染时遇到的常见问题,特别是由于重复导入、不正确的模块引入方式以及数据初始化错误导致的渲染失败。通过详细分析两种正确的 Petite-Vue 初始化方法(CDN全局引入与ES模块导入)及其对应的数据管理模式,文章提供了清晰的示例代码和最…

    好文分享 2025年12月20日
    000
  • 解决 TypeScript 模块解析错误:找不到模块声明文件

    本文旨在帮助开发者解决 TypeScript 项目中引入 JavaScript 库时出现的 “Could not find a declaration file for module” 错误。我们将探讨该错误的原因,并提供有效的解决方案,包括检查包名、安装类型声明、以及创建自…

    2025年12月20日
    000
  • ElectronJS中精确调整窗口大小以适应DOM元素:解决缩放因子问题

    在ElectronJS应用中,当尝试使用window.resizeTo或Electron特有的setSize/setBounds方法将窗口精确调整为DOM元素的clientWidth和clientHeight时,可能会发现窗口实际尺寸远大于预期。本文揭示了这一问题通常由Electron的持久化zoo…

    2025年12月20日
    000
  • 在GitHub上更新JSON文件:理解限制与正确方法

    本文旨在阐明通过客户端JavaScript直接修改GitHub上静态JSON文件的局限性,特别是涉及CORS策略的POST请求失败问题。我们将探讨为何这种直接操作不可行,介绍GitHub官方API作为文件更新途径,并最终推荐使用后端服务结合数据库的专业解决方案,以确保数据操作的安全性和可持续性。 1…

    2025年12月20日
    000
  • 如何在GitHub上通过API更新JSON文件内容及替代方案

    本文深入探讨了在GitHub Pages等静态托管环境中,为何无法直接通过客户端HTTP POST请求修改JSON文件内容,并解释了CORS错误的原因。教程将指导读者如何利用GitHub API进行文件更新,同时强调了客户端操作的潜在安全风险,并推荐使用专业的后端服务与数据库作为更健壮的动态数据管理…

    2025年12月20日
    000
  • 在GitHub上安全更新JSON文件:理解CORS限制与API应用实践

    本文深入探讨了在GitHub上直接通过客户端JavaScript修改JSON文件时遇到的CORS错误,并解释了其背后的安全原理。我们将介绍两种正确的解决方案:利用GitHub REST API进行文件内容管理,以及更健壮的后端服务与数据库方案,旨在帮助开发者理解并实践安全有效的数据更新策略。 问题剖…

    2025年12月20日
    000
  • 如何调试第三方库问题?

    答案是调试第三方库需通过复现隔离、查阅文档、分析堆栈、使用调试器和日志等手段定位问题,针对无源码库可采用反编译、抓包、行为分析等方式,当问题严重、社区活跃且具备修复能力时,应贡献代码而非仅用临时方案。 调试第三方库问题,核心在于隔离、定位和理解。这通常意味着你需要从纷繁复杂的外部依赖中抽丝剥茧,找到…

    2025年12月20日
    000
  • 如何配置JS版本管理?

    配置JS版本管理需使用包管理器固定依赖版本并确保环境一致性。1. 通过package.json的dependencies字段定义依赖,采用^、~或精确版本控制粒度,生产环境推荐精确版本以避免意外更新。2. 利用package-lock.json或yarn.lock锁定依赖树,确保各环境安装一致,必须…

    2025年12月20日
    000
  • JavaScript数字格式化:精确到两位小数的实用指南

    本教程旨在详细介绍如何在JavaScript中将数字(包括整数和浮点数)格式化为始终带有两位小数的字符串表示形式。我们将重点讲解 Number.prototype.toFixed() 方法的使用,并通过示例代码演示其功能,同时强调该方法返回字符串的特性及其在实际应用中的注意事项。 在前端开发中,尤其…

    2025年12月20日
    000
  • Node.js中如何操作数字?

    答案是使用内置方法、类型转换函数、高精度库和BigInt处理数字操作及精度问题。Node.js基于JavaScript的双精度浮点数类型进行数字操作,提供基本运算符和Math对象处理常见数学任务;通过parseInt、parseFloat和Number进行类型转换,并用Number.isFinite…

    2025年12月20日
    000
  • Node.js中如何创建子进程?

    Node.js子进程创建方式有四种:spawn用于流式处理和长时间运行任务;exec通过shell执行简单命令并缓冲输出;execFile直接执行可执行文件更安全高效;fork专用于Node.js进程间通信,支持IPC消息传递。 在Node.js中创建子进程,核心在于利用内置的 child_proc…

    2025年12月20日
    000
  • 如何安装Node.js运行环境?

    Node.js安装最推荐使用官方LTS版安装包或NVM版本管理器,确保环境变量配置正确后,通过node -v和npm -v验证安装,配合nvm可高效管理多版本切换,适用于不同项目兼容性需求。 Node.js的安装,其实比想象中要直接得多。核心流程无非就是从官方渠道获取安装包,或者借助系统自带的包管理…

    2025年12月20日
    000
  • JavaScript中数字格式化:使用toFixed()方法保留固定小数位

    本教程详细讲解如何在JavaScript中将数字格式化为固定两位小数的字符串,即使是整数也能显示为”#.00″的形式。我们将重点介绍Number.prototype.toFixed()方法的使用,包括其语法、功能、示例代码以及需要注意的关键点,如其返回类型始终为字符串。 在前…

    2025年12月20日
    000
  • JavaScript中数字格式化为两位小数的教程

    本教程详细介绍了在JavaScript中将数字格式化为始终显示两位小数的方法,即使是整数也能转换为”##.00″的形式。核心解决方案是使用Number.prototype.toFixed(2)方法,该方法返回一个字符串,确保数值以统一的两位小数格式呈现,适用于各种显示需求。 …

    2025年12月20日
    000
  • 怎样配置ESLint代码检查?

    配置ESLint需先生成.eslintrc文件并安装依赖,通过extends继承规则集、plugins扩展功能,结合Prettier统一代码风格,并利用缓存、lint-staged和.eslintignore优化性能,最后集成到IDE和Git Hooks中实现自动化检查与修复。 配置ESLint代码…

    好文分享 2025年12月20日
    000
  • 如何配置JS灾难恢复?

    配置JavaScript灾难恢复需建立主动预防、快速响应和有效回溯机制。首先,部署如Sentry等监控平台,集成SDK并上传Source Map以实现错误聚合与堆栈还原;其次,通过try-catch、unhandledrejection监听及输入验证提升代码健壮性;采用灰度发布与CI/CD支持快速回…

    2025年12月20日
    000
  • 如何配置JS项目多环境?

    配置JS项目多环境的核心是通过环境变量、配置文件分离和构建工具结合,实现不同部署场景下的参数动态加载。首先,利用NODE_ENV区分开发、测试、生产环境,并通过.env文件配合dotenv库管理各环境变量,确保敏感信息不泄露。其次,采用配置文件分离(如config.development.js)存储…

    2025年12月20日
    000
  • 如何配置JS自动部署?

    自动化部署通过CI/CD流水线实现JS项目从代码提交到上线的全流程自动化,核心包括版本控制、CI/CD工具选择、构建流程、部署策略及缓存处理,可显著提升效率、降低错误率、加速迭代并保障发布一致性。 JS项目的自动化部署,核心在于构建一个持续集成/持续部署(CI/CD)的流水线,让代码从提交到最终上线…

    2025年12月20日
    000

发表回复

登录后才能评论
关注微信