2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

基于 Canvas 的图表类库 Chart.js 0.1 发布

  • 2013-03-26
  • 本文字数:1183 字

    阅读完需:约 4 分钟

Nick Downie 于 3 月 17 日发布了一款基于 canvas 的 JavaScript 图表类库 Chart.js ,该类库基于 MIT 开源许可发布,是 SVG 图表类库的一种替代方案。

“我想创建一个开箱即用的图表解决方案,该解决方案提供简单且易于理解的 API,Web 设计者能够通过这些 API 实现美观的图表,同时它也需要足够的轻量便利,以便开发人员能够在复杂的 Web 应用中引用它”Downie 说。

Chart.js 暴露了 6 种不同的图表类型,它们建立在数据和选项相结合的 API 之上。Downie 花了一个月的时间为他这个大学期间最后的项目构建类库及支持文档。在 17 日开放源码之后,“我完全没有料到会有这么多的响应,真是惊呆了——我在 Hacker News 上发布了一个帖子,一天之后就有几万人访问了这个网站,同时 Github 上的问题和贡献收件箱都满了,”Downie 说。

与 SVG 图表类库不同的是, 对于每一个图表元素而言,chart.js 使用一个单独的 canvas 节点进行输出,而不是输出多个 DOM 节点。由于使用了单独的节点输出,所以 chart.js 只有一个事件监听器钩子,同时“保持对任何区域的跟踪都需要在内存中交互,在检查当前的鼠标位置时需要迭代这些内容。用户每次移动他们的鼠标时都需要加载整个循环。同时这也意味着如果我们直接在 canvas 上绘制工具提示那么需要对 canvas 进行清除和重画。”Downie 说。“谈到这方面的定制化,我认为要实现一个简单的能够满足所有人需要的 API 几乎不可能——有些人可能想要工具提示,其他人可能想要在图表上画线,还有人想要高亮数据点,各种需要不一而足。如果都满足那么它很快就会变得非常复杂,”Downie 说。与可能需要添加工具提示相比,Downie 更愿意推动 chart.js 成为一个替代方案,“让那些想要在自己的网站和应用中包含简单、静态图形的开发者使用 Chart.js,而不再使用过度复杂且超负载的解决方案(基于 SVG 的图表方案)”。

虽然简化 API 是 canvas 方式的一个优点,但是 Chart.js 失去了基于向量的 SVG 图表工具所具有的伸缩性,因为它依赖于 canvas 所产生的光栅图像。在这种情况下,“(为 canvas)声明基于百分比的 CSS 宽度进行响应布局。对于高 DPI 显示设备而言,Chart.js 会通过 CSS 自动地扩展到正确的设备像素比(devicePixelRatio)并缩放回正确的设备像素大小,”Downie 说。

Canvas 本身就具有通过 toDataUrl 导出 base64 图片的能力。“我希望在将来的发布版中能够向创建完成的图表中添加一些实用功能,这样用户便能够很容易地清除、更新或者导出图表了——本质上 Chart.js 会为这个功能提供一个封装,”Downie 说。

Downie 将在春天毕业,他希望向 Chart.js 中添加一些其他的功能,也希望能在毕业之后集中精力做好全职工作。“(Chart.js)给了我一个非常好的理由,让我能够同时设计并开发一些非常优雅的作品,并对 Web 设计社区中的人们有所帮助(希望如此)。”

查看英文原文 Canvas-Based Chart.js Version 0.1 Released

2013-03-26 03:313496
用户头像

发布了 321 篇内容, 共 126.7 次阅读, 收获喜欢 19 次。

关注

评论

发布
暂无评论
发现更多内容

基于 ShardingSphere 的得物数据库中间件平台“彩虹桥”演进之路

SphereEx

数据库 中间件 ShardingSphere 实践

力扣每日一练之字符串Day6

京与旧铺

6月月更

区块哈希竞猜游戏系统开发(dapp)

薇電13242772558

哈希值

ElasticSearch第二弹之分片原理

阿Q说代码

ES shard replica

20省市公布元宇宙路线图

CECBC

Python 设计模式:适配器模式

宇宙之一粟

设计模式 适配器模式 6月月更

深入理解和把握数字经济的基本特征

CECBC

如何利用数仓创建时序表

华为云开发者联盟

数据库 后端 华为云 时序表

混沌工程,了解一下

华为云开发者联盟

云计算 测试 后端 混沌工程 华为云

游戏资产复用:更快找到所需游戏资产的新方法

龙智—DevSecOps解决方案

游戏开发 游戏资产 艾尔登法环 游戏资产复用

SAVE: 软件分析验证和测试平台

华为云开发者联盟

云计算 测试 后端 开发 软件分析

为什么你的数据图谱分析图上只显示一个值?

清林情报分析师

数据分析 可视化 知识图谱 三元组 情报分析

如何轻松快速构建区块链应用?技术大牛带来一线技术实践分享

腾源会

墨天轮访谈 | IvorySQL王志斌—IvorySQL,一个基于PostgreSQL的兼容Oracle的开源数据库

墨天轮

数据库 oracle postgresql 开源

vue快速学习、基础用法

开发微hkkf5566

Helix QAC更新至2022.1版本,将持续提供高标准合规覆盖率

龙智—DevSecOps解决方案

C语言 静态代码分析 Helix QAC 代码合规率 代码合规

基于微信小程序的婚纱影楼小程序开发笔记

CC同学

小程序

直播回顾 | 云原生混部系统 Koordinator 架构详解(附完整PPT)

阿里巴巴云原生

阿里云 架构 云原生 混部 Koordinator

火线沙龙第26期-多云安全专场

腾源会

如何通过7个步骤编写出色的在线用户手册

小炮

泛型的类型擦除后,fastjson反序列化时如何还原?

码农参上

泛型 底层知识 Java 开发

盘点四种WiFi加密标准:WEP、WPA、WPA2、WPA3

wljslmz

wifi 6月月更 无线安全 wpa3 wep

JDBC 在性能测试中的应用

阿里巴巴云原生

阿里云 云原生 JDBC 压测

活动报名 | MongoDB 5.0 时序存储特性介绍

MongoDB中文社区

mongodb

准备好迁移上云了?请收下这份迁移步骤清单

龙智—DevSecOps解决方案

迁移计划 迁移上云计划 迁移上云步骤 上云步骤清单 云迁移策略

FastApi+Vue+LayUI实现前后端分离

Python研究所

6月月更

理论+案例,带你掌握Angular依赖注入模式的应用

华为云开发者联盟

程序员 前端 华为云

直播分享| 腾讯云 MongoDB 智能诊断及性能优化实践

MongoDB中文社区

mongodb

好用的人事管理软件有哪些?人事管理系统软件排名!

优秀

企业管理软件 OA管理系统

你了解shiro吗?手把手教你集成shiro

阿Q说代码

springboot 鉴权 shiro 身份验证

解读2022年度敏捷教练行业现状报告

华为云开发者联盟

后端 开发 华为云

基于Canvas的图表类库Chart.js  0.1发布_JavaScript_Tim Heckel_InfoQ精选文章