写点什么

基于 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:313524
用户头像

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

关注

评论

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

开源一夏 | 如何使用谷歌浏览器 Chrome 更好地调试

海拥(haiyong.site)

JavaScript chrome 开源 Google 8月月更

兆骑科创创业大赛,线上直播路演,高层次人才引进服务平台

兆骑科创凤阁

刘伟光:超大型金融机构国产数据库全面迁移成功实践

OceanBase 数据库

前端培训班排名口碑怎么样

小谷哥

毕业设计

Asha

大数据毕业设计

Geek_Q

大数据编程培训课程怎么选择

小谷哥

元老级的存储类型:块存储,性能很强!

wljslmz

8月月更 块存储

OceanBase发布“珊瑚计划”,让合作伙伴成为OceanBase成功的关键

OceanBase 数据库

建木持续集成平台v2.5.3发布

Jianmu

DevOps 持续集成 CI/CD 持续交付 gitops

RabbitMQ面试29连问,看完还过不了面试,我给你一Jio

小柴说Java

Java 编程 程序员 面试 架构师

提升LED显示屏散热效果的7种方式

Dylan

LED显示屏 led显示屏厂家

深圳web前端培训费用多少?

小谷哥

华为被迫开源!从认知到落地SpringBoot企业级实战手册(完整版)

Java编程日记

Java 编程 程序员 面试 架构师

2022 OceanBase 年度发布会:发布四大策略,迈入4.0时代

OceanBase 数据库

22年Java面试真题整理,一共343道,每一题都很经典,堪称秋招必备

Java编程日记

Java 编程 程序员 面试 架构师

RocketMQ面试33连问,答完面试官主动要给我提薪资待遇...

Java编程日记

Java 编程 程序员 面试 架构师

QCN9074 WiFi 6E Card OpenWRT, IPQ6010,802.11ax,wallys,QCN9074 802.11ax 4x4 MU-MIMO 6GHz wifi6E

wallys-wifi6

IPQ6010 QCN9074

X-mask神秘面具NFT挖矿dapp系统开发逻辑详情

开发微hkkf5566

学习总结-网关 架构演进

C++后台开发

网络编程 API 网关 C/C++后台开发 C/C++开发

墙裂安利!用腾讯云AI语音合成打造自己的第一本有声书

牵着蜗牛去散步

腾讯云 腾讯 语音合成 技术实践 有声读物

【计算讲谈社】第九讲|“碳中和”时代下:计算的机会在哪里?

大咖说

计算 碳中和

哪家web前端培训班比较好

小谷哥

科普达人丨一图看懂阿里云ECS

阿里云弹性计算

云计算 IaaS 弹性计算 ECS

网易伏羲实验室入选信通院首批大模型优秀应用案例

网易伏羲

人工智能 网易伏羲

解码微盟集团2022中报:SaaS收入5.81亿逆势增长,高质量增长路径更清晰

ToB行业头条

元宇宙里的下个社交时代

智捷云

元宇宙

武汉java培训技术学习对学历的要求

小谷哥

兆骑科创创业赛事活动服务平台,投融资服务对接,政策申报

兆骑科创凤阁

私有化部署的低代码平台 更安全的信息化解决方案

力软低代码开发平台

Vuex与前端表格施展“组合拳”,实现大屏展示应用的交互增强

葡萄城技术团队

Vue 前端 表格 vuex

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