Project Icon

uPlot

轻量级高性能时间序列图表库

uPlot是一个基于Canvas 2D的轻量级图表库,专为绘制时间序列、线条、面积、OHLC和柱状图而设计。它能快速渲染大量数据点,并提供流畅的缩放和光标交互体验。uPlot支持多系列、多Y轴和对数刻度等功能,同时保持API的简洁性。作为一个专注于核心功能的解决方案,uPlot在性能和文件大小方面都表现出色。

📈 μPlot

一个小型(约45 KB压缩后)、快速的时间序列、线条、面积、开高低收和柱状图表(MIT许可


简介

μPlot是一个快速、内存高效的基于Canvas 2D的图表,用于绘制时间序列、线条、面积、开高低收和柱状图。从冷启动开始,它可以在90毫秒内创建一个包含150,000个数据点的交互式图表,线性扩展至每毫秒约31,000个点。除了快速的初始渲染外,其缩放和光标性能远远优于任何类似的图表库。大小约为50 KB,它可能是最小和最快的时间序列绘图器,不使用上下文受限的WebGL着色器或WASM,这两者都有更高的启动成本和代码大小。

166,650点基准测试:https://leeoniya.github.io/uPlot/bench/uPlot.html

然而,如果你需要处理大规模流数据集并实现60帧每秒的性能,uPlot只能做到这种程度。如果你决定在这方面使用uPlot,请确保疏通你的渲染管道。对于实时信号或波形可视化等应用,WebGL仍应是首选工具:参见danchitnis/webgl-plothuww98/TimeChartepezent/implot,或商业产品如LightningChart®


uPlot图表


特性


非特性

为了保持精简、快速和专注,以下特性不会被添加:


文档(进行中)

文档似乎是一项持续进行的工作。 从 /docs/README.md 开始,可以获得概念性的概述。 完整的 API 在 /dist/uPlot.d.ts 中通过注释进行了进一步的文档说明。 此外,不断扩展的可运行 /demos 集合涵盖了 uPlot API 的绝大部分内容。


第三方集成


性能

基准测试在以下硬件上完成:

  • 日期:2023-03-11
  • AMD Ryzen 7 PRO 5850U @ 1.9GHz,32GB RAM
  • EndeavourOS/Arch(KDE/Plasma),Chrome 113.0.5638.0(64位)
  • 4K 显示器缩放至 1440p(1.5 设备像素比)

uPlot 性能

完整大小:https://leeoniya.github.io/uPlot/demos/multi-bars.html

原始数据:https://github.com/leeoniya/uPlot/blob/master/bench/results.json

| 库                     | 大小    | 完成    | js,渲染,绘制,系统 | 堆峰值,最终    | 鼠标移动 (10秒)     |
| ---------------------- | ------- | ------- | ----------------- | --------------- | ------------------- |
| uPlot v1.6.24          | 47.9 KB |   34 ms |   51   2   1   34 |  21 MB   3 MB   |  218  360  146  196 |
| Chart.js v4.2.1        |  254 KB |   38 ms |   90   2   1   40 |  29 MB  10 MB   | 1154   46  165  235 |
| Flot v3.0.0            |  494 KB |   60 ms |  105   5   1   52 |  41 MB  21 MB   | ---                 |
| ECharts v5.4.1         | 1000 KB |   55 ms |  148   3   1   35 |  17 MB   3 MB   | 1943  444  203  208 |
| dygraphs v2.2.1        |  132 KB |   90 ms |  163   2   1   33 |  88 MB  42 MB   | 1438  371  174  268 |
| LightningChart® v4.0.2 | 1300 KB |  --- ms |  250   2   1   33 |  33 MB  13 MB   | 5390  120  128  325 |
| CanvasJS v3.7.5        |  489 KB |  130 ms |  266   4   1   35 |  98 MB  69 MB   | 1030  445   90  246 |
| dvxCharts v5.1.0       |  373 KB |  160 ms |  264  23   1   62 | 100 MB  61 MB   |  687  779  206  197 |
| Highcharts v10.3.3     |  413 KB |  --- ms |  416   7   1   38 |  97 MB  55 MB   | 1286  824  205  242 |
| Plotly.js v2.18.2      | 3600 KB |  310 ms |  655  14   1   40 | 104 MB  70 MB   | 1814  163   25  208 |
| ApexCharts v3.37.1     |  503 KB |  685 ms |  694   9   1   33 | 175 MB  46 MB   | 1708  421  106  207 |
| ZingChart v2.9.10      |  871 KB |  681 ms |  717   7   1  105 | 290 MB 195 MB   | 9021  305   41   71 |
| amCharts v5.3.7        |  625 KB |  --- ms | 1601   3   3   46 | 147 MB 121 MB   | 9171   71  460  167 |
  • 库按照初始冷启动渲染性能排序(不包括下载库的网络传输时间)
  • "大小"包括库本身以及渲染基准测试所需的任何依赖项,如Moment、jQuery等
  • Flot不提供任何压缩资源,他们所有的示例都使用未压缩的源代码;他们还使用未压缩版本的jQuery :/

一些库提供了自己的性能演示:

待办事项(这些都使用SVG,所以性能应该与Highcharts相似):

  • Chartist.js
  • 基于d3的
    • C3.js
    • dc.js
    • MetricsGraphics
    • rickshaw

疏通你的渲染管道

你的浏览器性能高度依赖于你的硬件、操作系统和GPU驱动程序。

如果你使用的是基于Chromium的浏览器,有一些隐藏设置可以为Canvas2D渲染解锁显著的性能改进。 这些大多与光栅化在哪里以及如何执行有关。

前往 https://leeoniya.github.io/uPlot/demos/sine-stream.html 并打开Chrome的开发者工具(F12),然后切换到性能监视器。

Chrome开发者工具性能监视器

对我来说:

  • 在Windows 10台式机,Core i7-8700,16GB内存,AMD RX480 GPU,2048 x 1080分辨率 = 57% CPU使用率
  • 在Manjaro笔记本(Arch Linux),AMD Ryzen 7 PRO 5850U,48GB内存,AMD Radeon RX Vega 8(集成GPU),4K分辨率 = 99% CPU使用率

如果你的CPU接近100%,可能是在同一CPU进程中进行所有光栅化。

打开 chrome://gpu 看看哪些是橙色或红色的。

Chrome gpu

然后打开 chrome://flags 并搜索"raster",看看可以强制启用哪些选项。

Chrome flags

  • 在我的Manjaro/Ryzen/集成GPU设置上,强制启用Canvas out-of-process rasterization导致帧率显著提高。
  • 在我的Windows/i7/独立GPU设置上,切换相同的标志将工作移至另一个进程(仍然是好事),但对帧率没有显著影响。

你的体验可能会有所不同!


致谢

项目侧边栏1项目侧边栏2
推荐项目
Project Cover

豆包MarsCode

豆包 MarsCode 是一款革命性的编程助手,通过AI技术提供代码补全、单测生成、代码解释和智能问答等功能,支持100+编程语言,与主流编辑器无缝集成,显著提升开发效率和代码质量。

Project Cover

AI写歌

Suno AI是一个革命性的AI音乐创作平台,能在短短30秒内帮助用户创作出一首完整的歌曲。无论是寻找创作灵感还是需要快速制作音乐,Suno AI都是音乐爱好者和专业人士的理想选择。

Project Cover

有言AI

有言平台提供一站式AIGC视频创作解决方案,通过智能技术简化视频制作流程。无论是企业宣传还是个人分享,有言都能帮助用户快速、轻松地制作出专业级别的视频内容。

Project Cover

Kimi

Kimi AI助手提供多语言对话支持,能够阅读和理解用户上传的文件内容,解析网页信息,并结合搜索结果为用户提供详尽的答案。无论是日常咨询还是专业问题,Kimi都能以友好、专业的方式提供帮助。

Project Cover

阿里绘蛙

绘蛙是阿里巴巴集团推出的革命性AI电商营销平台。利用尖端人工智能技术,为商家提供一键生成商品图和营销文案的服务,显著提升内容创作效率和营销效果。适用于淘宝、天猫等电商平台,让商品第一时间被种草。

Project Cover

吐司

探索Tensor.Art平台的独特AI模型,免费访问各种图像生成与AI训练工具,从Stable Diffusion等基础模型开始,轻松实现创新图像生成。体验前沿的AI技术,推动个人和企业的创新发展。

Project Cover

SubCat字幕猫

SubCat字幕猫APP是一款创新的视频播放器,它将改变您观看视频的方式!SubCat结合了先进的人工智能技术,为您提供即时视频字幕翻译,无论是本地视频还是网络流媒体,让您轻松享受各种语言的内容。

Project Cover

美间AI

美间AI创意设计平台,利用前沿AI技术,为设计师和营销人员提供一站式设计解决方案。从智能海报到3D效果图,再到文案生成,美间让创意设计更简单、更高效。

Project Cover

稿定AI

稿定设计 是一个多功能的在线设计和创意平台,提供广泛的设计工具和资源,以满足不同用户的需求。从专业的图形设计师到普通用户,无论是进行图片处理、智能抠图、H5页面制作还是视频剪辑,稿定设计都能提供简单、高效的解决方案。该平台以其用户友好的界面和强大的功能集合,帮助用户轻松实现创意设计。

投诉举报邮箱: service@vectorlightyear.com
@2024 懂AI·鲁ICP备2024100362号-6·鲁公网安备37021002001498号