uPlot

uPlot

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

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

μPlot时间序列图表Canvas 2D性能优化JavaScript库Github开源项目

📈 μPlot

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


简介

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

<h3 align="center">166,650点基准测试:<a href="https://leeoniya.github.io/uPlot/bench/uPlot.html">https://leeoniya.github.io/uPlot/bench/uPlot.html</a></h3>

然而,如果你需要处理大规模流数据集并实现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

<pre> | 库 | 大小 | 完成 | js,渲染,绘制,系统 | 堆峰值,最终 | 鼠标移动 (10秒) | | ---------------------- | ------- | ------- | ----------------- | --------------- | ------------------- | | <a href="https://leeoniya.github.io/uPlot/bench/uPlot.html">uPlot v1.6.24</a> | 47.9 KB | 34 ms | 51 2 1 34 | 21 MB 3 MB | 218 360 146 196 | | <a href="https://leeoniya.github.io/uPlot/bench/Chart.js4.html">Chart.js v4.2.1</a> | 254 KB | 38 ms | 90 2 1 40 | 29 MB 10 MB | 1154 46 165 235 | | <a href="https://leeoniya.github.io/uPlot/bench/Flot.html">Flot v3.0.0</a> | 494 KB | 60 ms | 105 5 1 52 | 41 MB 21 MB | --- | | <a href="https://leeoniya.github.io/uPlot/bench/ECharts5.html">ECharts v5.4.1</a> | 1000 KB | 55 ms | 148 3 1 35 | 17 MB 3 MB | 1943 444 203 208 | | <a href="https://leeoniya.github.io/uPlot/bench/dygraphs.html">dygraphs v2.2.1</a> | 132 KB | 90 ms | 163 2 1 33 | 88 MB 42 MB | 1438 371 174 268 | | <a href="https://leeoniya.github.io/uPlot/bench/LightningChart.html">LightningChart® v4.0.2</a> | 1300 KB | --- ms | 250 2 1 33 | 33 MB 13 MB | 5390 120 128 325 | | <a href="https://leeoniya.github.io/uPlot/bench/CanvasJS.html">CanvasJS v3.7.5</a> | 489 KB | 130 ms | 266 4 1 35 | 98 MB 69 MB | 1030 445 90 246 | | <a href="https://leeoniya.github.io/uPlot/bench/dvxCharts.html">dvxCharts v5.1.0</a> | 373 KB | 160 ms | 264 23 1 62 | 100 MB 61 MB | 687 779 206 197 | | <a href="https://leeoniya.github.io/uPlot/bench/Highcharts.html">Highcharts v10.3.3</a> | 413 KB | --- ms | 416 7 1 38 | 97 MB 55 MB | 1286 824 205 242 | | <a href="https://leeoniya.github.io/uPlot/bench/Plotly.js.html">Plotly.js v2.18.2</a> | 3600 KB | 310 ms | 655 14 1 40 | 104 MB 70 MB | 1814 163 25 208 | | <a href="https://leeoniya.github.io/uPlot/bench/ApexCharts.html">ApexCharts v3.37.1</a> | 503 KB | 685 ms | 694 9 1 33 | 175 MB 46 MB | 1708 421 106 207 | | <a href="https://leeoniya.github.io/uPlot/bench/ZingChart.html">ZingChart v2.9.10</a> | 871 KB | 681 ms | 717 7 1 105 | 290 MB 195 MB | 9021 305 41 71 | | <a href="https://leeoniya.github.io/uPlot/bench/amCharts5.html">amCharts v5.3.7</a> | 625 KB | --- ms | 1601 3 3 46 | 147 MB 121 MB | 9171 71 460 167 | </pre>
  • 库按照初始冷启动渲染性能排序(不包括下载库的网络传输时间)
  • "大小"包括库本身以及渲染基准测试所需的任何依赖项,如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设置上,切换相同的标志将工作移至另一个进程(仍然是好事),但对帧率没有显著影响。

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


致谢

编辑推荐精选

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

酷表ChatExcel

酷表ChatExcel

大模型驱动的Excel数据处理工具

基于大模型交互的表格处理系统,允许用户通过对话方式完成数据整理和可视化分析。系统采用机器学习算法解析用户指令,自动执行排序、公式计算和数据透视等操作,支持多种文件格式导入导出。数据处理响应速度保持在0.8秒以内,支持超过100万行数据的即时分析。

AI工具酷表ChatExcelAI智能客服AI营销产品使用教程
TRAE编程

TRAE编程

AI辅助编程,代码自动修复

Trae是一种自适应的集成开发环境(IDE),通过自动化和多元协作改变开发流程。利用Trae,团队能够更快速、精确地编写和部署代码,从而提高编程效率和项目交付速度。Trae具备上下文感知和代码自动完成功能,是提升开发效率的理想工具。

AI工具TraeAI IDE协作生产力转型热门
AIWritePaper论文写作

AIWritePaper论文写作

AI论文写作指导平台

AIWritePaper论文写作是一站式AI论文写作辅助工具,简化了选题、文献检索至论文撰写的整个过程。通过简单设定,平台可快速生成高质量论文大纲和全文,配合图表、参考文献等一应俱全,同时提供开题报告和答辩PPT等增值服务,保障数据安全,有效提升写作效率和论文质量。

AI辅助写作AI工具AI论文工具论文写作智能生成大纲数据安全AI助手热门
博思AIPPT

博思AIPPT

AI一键生成PPT,就用博思AIPPT!

博思AIPPT,新一代的AI生成PPT平台,支持智能生成PPT、AI美化PPT、文本&链接生成PPT、导入Word/PDF/Markdown文档生成PPT等,内置海量精美PPT模板,涵盖商务、教育、科技等不同风格,同时针对每个页面提供多种版式,一键自适应切换,完美适配各种办公场景。

AI办公办公工具AI工具博思AIPPTAI生成PPT智能排版海量精品模板AI创作热门
潮际好麦

潮际好麦

AI赋能电商视觉革命,一站式智能商拍平台

潮际好麦深耕服装行业,是国内AI试衣效果最好的软件。使用先进AIGC能力为电商卖家批量提供优质的、低成本的商拍图。合作品牌有Shein、Lazada、安踏、百丽等65个国内外头部品牌,以及国内10万+淘宝、天猫、京东等主流平台的品牌商家,为卖家节省将近85%的出图成本,提升约3倍出图效率,让品牌能够快速上架。

iTerms

iTerms

企业专属的AI法律顾问

iTerms是法大大集团旗下法律子品牌,基于最先进的大语言模型(LLM)、专业的法律知识库和强大的智能体架构,帮助企业扫清合规障碍,筑牢风控防线,成为您企业专属的AI法律顾问。

SimilarWeb流量提升

SimilarWeb流量提升

稳定高效的流量提升解决方案,助力品牌曝光

稳定高效的流量提升解决方案,助力品牌曝光

Sora2视频免费生成

Sora2视频免费生成

最新版Sora2模型免费使用,一键生成无水印视频

最新版Sora2模型免费使用,一键生成无水印视频

下拉加载更多