题记与说明
时间截面:2026-11-06
综合自:纵轴章《数据可视化个人工具链:Matplotlib、Plotly 与 Mermaid 选型——纵轴发展史》与横轴章《——横轴对比报告》(均在本课题 parts 目录)。两章的重复叙述已合并,口径分歧已用本会话的注册表复核结果调和,调和记录见文末附录。
核验声明:横轴章的版本号、星数、许可证为撰写会话内经 PyPI / npm / GitHub API 实查所得;本综合稿在 2026-11-06 当日对两章有分歧或置信度存疑的日期做了第二轮复核(curl+ PyPI/npm/GitHub API,命令与结果见文末"核验记录"),并据此修正了纵轴章两处时间线误记(Mermaid v12 发布时间、Dash 4.5.0 时间)。凡属检索摘要、未经直接核验的条目,文中均如实标注。修订稿(本文件)另按独立审读意见,于同日修订会话内补核了 pyecharts 星数、Mermaid 的 npm latest 口径、mermaid-cli 与 mermaid 核心库的依赖对应、plotly.js 4.0.0 本体发布时间与 plotly.py 7.1.0 的 kaleido 依赖约束(核验记录第 7–9 条)。
本课题倾向:静态报告优先。
TL;DR
三件套不是三选一,而是工具链的三个正交层位:Matplotlib 管出版级静态数据图,Plotly 管交互式 Web 数据图,Mermaid 管 Markdown 结构图。选型问题纵轴上被四次改写:MATLAB 搬家→静态还是交互→图进版本控制→人写还是 AI 写。当下三者均活跃维护、许可全宽松,各自是其赛道的事实标准或头部玩家。静态报告优先的推荐组合:Matplotlib+Seaborn 出版输出、Plotly+Kaleido 交互兼静态兜底、Mermaid+mermaid-cli 结构图。最大共性短板:Plotly 与 Mermaid 的静态导出依赖 Chromium,Matplotlib 是唯一天然的出版级出口。
一、纵轴:发展脉络(2003 → 2026-11-06)
1.0 前提:三条并行又交汇的工具线
本课题的"个人工具链"由三个定位互补的库构成:Matplotlib 是 Python 生态的静态绘图基石,面向出版级图形、论文与报告插图;Plotly(plotly.py / plotly.js / Dash)面向交互式 Web 图形与数据应用;Mermaid 是"图表即代码"(diagram-as-code)的结构图渲染器,服务于 Markdown 文档。三条线不是一条直线:Matplotlib 与 Plotly 争夺"数据图"这一层(静态 vs 交互),Mermaid 则开辟了"结构图"这一层(画数据 vs 画结构)。二十多年的选型话语,随三条线的能力扩张而不断被改写。
1.1 前史(1990s–2002):MATLAB 的一统与 Python 的空白
在 Python 可视化成熟之前,科研圈的数据绘图事实上被 MATLAB 垄断。John D. Hunter(1968–2012)本是一位神经生物学家,长期用 MATLAB 分析 EEG 数据;当分析应用复杂到需要操作数据库、HTTP 服务时,MATLAB 作为编程语言的短板暴露,他决定整体迁往 Python——却发现"找不到一个合适的 2D 绘图包"。他在官方历史文档(2008 年写成,至今仍挂在 matplotlib.org)里写道:找不到就自己写,"像任何一个自重的 Python 程序员会做的那样"(Matplotlib 官方历史)。
同一时期,结构图的缺位由 AT&T 的 Graphviz(dot 语言传统)等工具填补——"用文本描述图、由程序渲染"的范式早已有之,这为后来 Mermaid 的出现提供了概念母版。
1.2 阶段一(2003–2011):Matplotlib 单极时代
关键节点:2002–2003 年,Hunter 把 Matplotlib 作为 IPython 的一个补丁起步,目标是让 Python 具备 MATLAB 式绘图;2003 年发布 0.1 并开源(Wikipedia: Matplotlib)。2007 年,Hunter 发表论文 *Matplotlib: A 2D Graphics Environment*(Computing in Science & Engineering),成为日后几乎所有科学出版物的标准引用。2010 年 7 月 1.0 发布,标志库进入成熟期;此时它已绑定 NumPy/SciPy 生态,后来又成为 pandas .plot() 的默认后端。
形态的由来:"出版级质量 + 可嵌入 GUI + 代码可扩展 + MATLAB 式语法"这四个来自 Hunter 本人的需求,定义了库的形态——pylab 接口模仿 MATLAB,Agg/PS/SVG/PDF 等后端负责渲染(官方历史)。
选型话语:这一阶段所谓"选型",实质是"要不要从 MATLAB 搬家"。Matplotlib 的答案是:语法上让你无痛搬家。
1.3 阶段二(2012–2016):三线并起——创始人离世、商业公司入场、文本绘图萌芽
- 2012 年 8 月:Hunter 因癌症去世。Michael Droettboom 在其生前被提名为首席开发,Thomas Caswell 随后加入核心团队;Matplotlib 成为 NumFOCUS 财政赞助项目,并设立 John Hunter Technology Fellowship(Wikipedia;NumFOCUS)。创始人离世没有导致项目停摆,反而催生了更制度化的社区治理。
- 2012 年:Plotly 公司在蒙特利尔成立,四位创始人为 Alex Johnson、Jack Parmer、Chris Parmer、Matthew Sundquist,走"在线图表 + 科学绘图库"路线,2013 年登上 PyCon startup row,随后完成 550 万美元 A 轮(Wikipedia: Plotly)。
- 2013 年:Continuum Analytics(Anaconda 母公司)发布 Bokeh,主打浏览器端交互可视化,成为 Plotly 之外交互路线的又一选项(据检索摘要核对)。
- 2014 年:瑞典软件架构师 Knut Sveidqvist 发布 Mermaid 初版——起因之一是他丢失了一个 Visio 文件,遂决定用 Markdown 式文本定义图表,让图"活在文档里";名字致敬《小美人鱼》的北欧血统(Taskade: History of Mermaid;Wikipedia: Mermaid))。同期 PlantUML(2009 年前后)等文本绘图工具已培养出第一批用户。
- 2015 年:Plotly 将底层渲染引擎 plotly.js 开源(构建于 d3.js 之上),支持 40+ 图表类型,成为 plotly.py / plotly.R / Julia 等语言绑定的共同底座(Wikipedia: Plotly;plotly.com/javascript)。
- 2016 年:华盛顿大学交互数据实验室发布 Vega-Lite 1.0,Jake VanderPlas 与 Brian Granger 随即推出 Python 绑定 Altair——声明式可视化范式进入 Python(Vega-Altair GitHub;Vega-Lite 1.0 公告)。
驱动因素:Jupyter Notebook(2014–2015 年由 IPython 演化而来)把"代码 + 图 + 文字"装进同一个画布,交互图的价值被放大;d3.js(2011)引爆的 Web 可视化浪潮让"图应该能在浏览器里转起来"成为新预期。
选型话语:从"用哪个静态库"变成"静态还是交互"。Plotly 早期要求图表上传云端账户,让不少个人用户敬而远之——这个痛点要到 2019 年才被解决。
1.4 阶段三(2017–2019):现代化改造与 "Express First"
- 2017-01-17:Matplotlib 2.0 发布,重做默认样式与配色(
style机制),正面回应"matplotlib 图丑"这个常年抱怨(What's new in 2.0)。 - 2017 年:Plotly 发布开源框架 Dash,用纯 Python(底层 React)构建分析型 Web 应用,成为公司企业业务的旗舰(Wikipedia: Plotly)。
- 2018-09-18:Matplotlib 3.0 发布,进入 3.x 时代(What's new in 3.0)。
- 2019-03-20:Nicolas Kruchten 发布 Plotly Express 技术预览(独立包
plotly_express)——一个高层、声明式的速绘 API(Introducing Plotly Express)。 - 2019-07-09:plotly.py 4.0 发布,口号是 "Offline Only, Express First":Plotly Express 并入主包成为
plotly.express,同时全面转向本地离线渲染,不再强制云端上传;make_subplots重做(官方 Medium 公告;社区公告)。
选型话语:2019 年是本课题的关键转折——plotly.py 4.0 之后,"matplotlib 快而糙、plotly 好看但要传云"的旧刻板印象同时被两边削弱,两者的对比开始回归本质:静态出版流程选 Matplotlib,探索交互选 Plotly。
1.5 阶段四(2020–2022):文档即代码与 GitHub 转折点
- Matplotlib 沿 3.x 稳定节奏推进(3.5 于 2021-11 发布),并跟进 NEP 29 / SPEC 0 等科学 Python 社区版本支持政策,发布节奏趋于可预期。
- 2021-06-08 / 2021-06-21:plotly.js 2.0 与 plotly.py 5.0 先后发布;plotly.js 2.0 距 1.0 已有五年、177 个版本迭代;plotly.py 5.0 引入联邦式 Jupyter 扩展、冰柱图等(Announcing Plotly.js 2.0;Introducing Plotly.py 5.0.0)。
- 2022-02-14:GitHub 宣布在 Markdown 中原生渲染 Mermaid——代码块标注
mermaid语言即可直接出图,由 GitHub 内部渲染服务 Viewscreen 交给 Mermaid.js 在浏览器端 iframe 中渲染(GitHub Blog)。这是 Mermaid 历史上最重要的单一事件:README、issue、PR 里的图从此可以随代码一起版本化。GitLab、Notion、Obsidian、VS Code、Azure DevOps 等随后跟进原生支持(据检索摘要核对,汇总)。
驱动因素:疫情期远程协作把文档推向"文档即代码"(docs-as-code)主流;架构图必须能 diff、能评审、能随 PR 演进,二进制画图文件(Visio/draw.io 源文件)跟不上这套工作流。
选型话语:"结构图怎么画"的默认答案在 2022 年被改写为:能写 Mermaid 就写 Mermaid。三条工具线的分工自此清晰化——Mermaid 管结构图,Matplotlib/Plotly 管数据图。
1.6 阶段五(2023–2024):AI 前夜、破坏性重构与商业化
- 2023-03:Mermaid v10 发布,转向 ESM-only 打包,放弃 UMD/CommonJS,导致 Electron 应用、mkdocs-material 等下游生态被迫延迟升级;
mermaid.init()弃用、mermaid.run()上位——现代化是有代价的(GitHub discussion #4148;mkdocs-material issue #5217)。 - 2023 年:Mermaid 开源项目据称已拥有超过 800 万用户(据检索摘要,TechCrunch 2024 年 3 月报道口径);Sveidqvist 围绕项目成立商业公司 Mermaid Chart。
- 2024-03:Mermaid Chart 宣布 750 万美元种子轮,投资方含 OCV(Open Core Ventures)、Sequoia Capital 与微软 M12(据检索摘要,本次未直接打开原文核对)。
- 2024-05-15 / 2024-12-13:Matplotlib 3.9 与 3.10 发布;同年 NASA 向 Matplotlib 拨款资助其持续开发,作为其资助广泛使用的开源科学软件计划的一部分(官方发布索引;Wikipedia)。
- 2024-08-23:Mermaid v11 发布,新增 packet 图、时序图双向箭头等类型(官方博客)。
- Plotly 侧:与 Databricks 的深度合作(2024 年度 Customer Impact Partner of the Year),企业业务持续扩张(据检索摘要,Yahoo Finance)。
驱动因素:LLM 的兴起是本阶段最深的暗流。大模型生成文本天然适合生成 Mermaid 的标记语言(简短、声明式、容错),GitHub 上的原生渲染又给了这些文本即开即用的出口;而 Matplotlib/Plotly 代码则成为 AI 编程助手"现场出图"的标准产物。"文本进、图出"的三件套在此完成了一次意外的价值重估。
1.7 阶段六(2025 → 2026-11-06):当前截面——解绑 pandas、字体大修、Mermaid v12 换血
本阶段的日期均经本会话注册表复核(PyPI 上架时间 / GitHub Releases 发布时间),修正了纵轴章原有的两处摘要口径误差,详见文末核验记录。
- 2025-02-04:Plotly 三连发:plotly.js 3.0、plotly.py 6.0、Dash 3.0.0rc1。plotly.py 6.0 的核心变化是基于 Narwhals 重写 DataFrame 支持——pandas、Polars 等 DataFrame 库原生可用,plotly 正式与 pandas 解绑;旧式 Jupyter Notebook 集成被弃用(社区公告;v6 迁移指南;Narwhals 公告)。
- 2025-09-18:Mermaid 11.12.0 发布(GitHub Releases 核验)——11.x 进入收官期。
- 2026-03-09:Mermaid 11.13.0 发布(GitHub Releases 核验),官方博客称其为"最打磨的一次发布",新增雷达图等两种新图类型(官方博客)。
- 2026-06-11:Matplotlib 3.11.0 发布(官方公告口径;PyPI 上架时间为 06-12),主题是文本与字体处理体系的整体翻修(升级捆绑的 FreeType、改善渲染一致性与无障碍配色)——这个"最不性感却最根本"的方向恰恰是出版级工具的护城河(What's new in 3.11.0)。此后 3.11.1(07-17/PyPI 07-18)、3.11.2(09-10/PyPI 09-11)为 bugfix 版,3.11.2 即当前稳定版(发布索引)。
- 2026-08-25:plotly.py 7.0.0 上架 PyPI(本会话核验),内置 plotly.js 4.0.0(plotly.js 4.0.0 本体于 2026-08-24 发布,修订会话经 GitHub Releases 核验,见核验记录第 8 条),引入新 trace 类型、Quiver 图、更新的默认样式与 TypeScript API;官方社区随后发布综合发布说明(plotly.js 4 + plotly.py 7 综合说明;官方博客 12 months in review)。2026-09-15 plotly.py 7.1.0 上架(本会话核验),为当前 PyPI 最新版。
- 2026-09-10:Mermaid v12.0.0 发布(GitHub Releases 核验),属破坏性大版本:默认布局引擎从 dagre 切换为 ELK、引入新默认主题、要求 ES2024 / Safari 17.4+ / Node 22.12+;包结构拆分出
@mermaid-js/tiny等轻量子包,@mermaid-js/layout-elk并入核心并自动注册(GitHub Releases;layouts 文档)。此后升级密集:12.1.0(10-02)、12.2.0(10-13)、12.3.0(11-03,当前 npm latest——npm 口径为修订会话经 registry.npmjs.org 复核,见核验记录第 7 条)。 - Plotly 生态侧线:Dash 进入 4.x,最新 release v4.5.0(2026-10-29,本会话经 GitHub API 核验);2026 年还出现 MCP 框架支持、Plotly Cloud 免费分享、Plotly Studio Embedded(2026-08)等 AI 相关动作(plotly.py releases;roadmap changelog;此段产品动作为检索摘要口径)。
驱动因素:DataFrame 生态多元化(Polars 冲击 pandas 默认地位)迫使绘图库做中间层抽象;前端工具链现代化(ESM、新运行时门槛)倒逼两个 JS 系项目(plotly.js、Mermaid)交替进行破坏性升级;AI Agent 与数据应用融合成为 Plotly 的商业化叙事。
1.8 纵轴收束:选型问题的四次改写
把三条线叠在同一条时间轴上,"选型"问题的提法经历了四次改写:
- 2003–2011:"要不要从 MATLAB 搬到 Python?"——Matplotlib 用兼容语法回答了它;
- 2012–2019:"静态还是交互?"——plotly.js 开源 + 4.0 离线化 + Express 并入,让交互路线第一次在个人工具链里"零摩擦";
- 2020–2022:"图能不能进文档的版本控制?"——GitHub 2022-02-14 原生支持 Mermaid 后,结构图全面转入 text-first;
- 2023 至今:"人写还是 AI 写?"——Mermaid 成为 LLM 输出结构图的事实标准,Matplotlib/Plotly 代码则由 AI 现场生成,选型重心从"学哪个语法"转向"哪条产线的下游渲染最可靠"。
关键版本速查表(标 \* 的日期经 PyPI / GitHub API 复核;其中 Mermaid 12.3.0 的 npm latest 口径另经修订会话 npm registry 复核,见核验记录第 7 条):
| 时间 | 事件 | 意义 |
|---|---|---|
| 2003 | Matplotlib 0.1 开源 | Python 静态绘图起点 |
| 2007 | Hunter 论文发表 | 科学出版标准引用 |
| 2010-07 | Matplotlib 1.0 | 成熟化 |
| 2012-08 | Hunter 去世;Plotly 公司成立 | 社区治理制度化 / 商业力量入场 |
| 2014 | Mermaid 初版 | 结构图 text-first 范式 |
| 2015 | plotly.js 开源 | 交互图底座成型 |
| 2016 | Vega-Lite 1.0 / Altair | 声明式范式(竞品参照系) |
| 2017-01 | Matplotlib 2.0 | 默认样式现代化 |
| 2017 | Dash 发布 | 图 → 数据应用 |
| 2019-07 | plotly.py 4.0 | Express First + 全离线 |
| 2021-06 | plotly.js 2.0 / plotly.py 5.0 | 交互线大版本清扫 |
| 2022-02-14 | GitHub 原生 Mermaid | Mermaid 爆发的转折点 |
| 2023-03 | Mermaid v10(ESM-only) | 第一次破坏性现代化 |
| 2024-05 / 2024-12 | Matplotlib 3.9 / 3.10 | NASA 资助、无障碍推进 |
| 2024-08-23 | Mermaid v11 | 新图类型 |
| 2025-02 | plotly.js 3.0 / plotly.py 6.0 / Dash 3.0 | Narwhals 解绑 pandas |
| 2026-03-09 | Mermaid 11.13.0 \* | 11.x 收官打磨 |
| 2026-06-11 | Matplotlib 3.11(字体大修) | 出版级质量再加固 |
| 2026-08-25 | plotly.py 7.0(内置 plotly.js 4.0)\* | 交互线再大版本 |
| 2026-09-10 | Mermaid v12.0(ELK 默认布局)\* | 第二次破坏性现代化 |
| 2026-11-03 | Mermaid 12.3.0 \*(npm latest) | 当前版本 |
局限说明:Mermaid Chart 融资金额、Mermaid 用户数、Plotly 的 Databricks 合作与 2026 年产品动作来自检索结果摘要,未能逐一打开原文核对,已在文中标注;纵轴章原记"Mermaid v12 于 2025 下半年发布"经本会话 GitHub Releases 核验修正为 2026-09-10;纵轴章原记"Dash 最新 4.5.0(2026-07)"修正为 release 发布于 2026-10-29。
二、横轴:横向对比(2026-11-06 时间截面)
2.1 对比方法与竞品地图
课题本质不是"三选一",而是三个互补层位的组合,因此横轴采取"分赛道对比 + 统一维度":为 Matplotlib 找同赛道竞品(Seaborn、Bokeh、Altair、ECharts/pyecharts、D3.js),为 Plotly 找同赛道竞品(Bokeh、Altair、ECharts/pyecharts、D3.js),为 Mermaid 找同赛道竞品(PlantUML、D2、Graphviz);统一用五个维度横切:能力、成本、生态、成熟度、适用场景。
数据图表(数值驱动)
├── 静态/出版向:Matplotlib(+Seaborn)、Gnuplot、TikZ(PGF)
├── 交互/Web 向:Plotly、Bokeh、Altair(Vega-Lite)、ECharts(pyecharts)、D3.js、Observable Plot
└── 语法桥接层:pandas.DataFrame.plot(底层即 Matplotlib)
示意图/结构图(文本驱动,Diagram-as-Code)
├── Mermaid:Markdown 生态默认,GitHub/GitLab/Notion/Obsidian 原生渲染
├── PlantUML:UML 全家桶老将,表达力最强,Java 依赖
├── D2:新一代声明式,主打美观与布局引擎(ELK/TALA),MPL-2.0
└── Graphviz(DOT):40+ 年历史的自动布局基石,低层语法范围说明:这张地图刻意画得比下文的对比范围宽——Gnuplot、TikZ(PGF)、Observable Plot 属于全景参照系(分别代表传统静态出版与 Web 原生可视化的一席),但不进入 2.3–2.6 的逐项对比、短评与场景速查;下文只对"个人工具链"决策真正有影响的条目做逐项比较。
2.2 三主角画像(星数与推送时间经本会话 GitHub API 复核,数值与横轴章一致)
| 工具 | 当前版本(核验来源) | 许可证 | GitHub 星数 | 最近推送 |
|---|---|---|---|---|
| Matplotlib | 3.11.2(PyPI) | PSF 基础的 BSD 兼容许可证 | 23,427 | 2026-11-05 |
| Plotly(plotly.py / plotly.js) | 7.1.0(PyPI)/ plotly.js 4.x | MIT | 18,376(plotly.js 仓库) | 2026-10-29 |
| Mermaid | 12.3.0(npm latest,修订会话经 npm registry 复核,见核验记录第 7 条);mermaid-cli 12.2.0(npm) | MIT | 91,020 | 2026-11-05 |
核验方式:curl https://pypi.org/pypi/<pkg>/json、curl https://registry.npmjs.org/<pkg>/latest、curl https://api.github.com/repos/<org>/<repo>(本会话内执行,见文末核验记录)。
mermaid-cli 与 mermaid 核心库的版本对应(回应"锁定 CLI 是否等于锁定渲染行为"):mermaid-cli 12.2.0 在 npm 上声明的核心依赖是 mermaid@^12.2.0(修订会话经 registry.npmjs.org/@mermaid-js/mermaid-cli/12.2.0 实查,见核验记录第 7 条)。按 semver 语义,^12.2.0 允许 12.3.0 进入——也就是说,不带锁文件地安装 CLI 12.2.0,实际会拉到当前最新的 mermaid 12.3.0;"锁 CLI"只锁住了 CLI 自身的代码,渲染行为仍随核心库漂移。要真正锁定渲染行为,需用 package-lock.json 等锁文件把 mermaid 的解析版本一并钉死(落地做法见第三节末"最小可用配置")。
2.3 总对比表
总对比表按赛道拆成两张子表(原单表 11 列过宽,不利阅读)。
(一)数据图赛道
| 维度 | Matplotlib | Plotly | Seaborn | Altair | Bokeh | ECharts/pyecharts | D3.js |
|---|---|---|---|---|---|---|---|
| 定位 | 出版级静态绘图 | 交互式 Web 图表 | 统计图形语法增强 | 声明式 Grammar of Graphics | 浏览器端大数据交互 | 中文社区活跃的交互图表 | Web 可视化底层库 |
| 渲染形态 | PNG/PDF/SVG/PGF | HTML/Canvas/WebGL | 同 Matplotlib | HTML(Vega-Lite) | HTML/Canvas | HTML(Canvas/SVG) | SVG/Canvas/WebGL |
| 交互性 | 无(静态) | 强(缩放/悬浮/框选) | 无 | 强 | 强 | 强 | 自定义极强 |
| 静态导出 | 原生最强 | 需 Kaleido(1.5.0,MIT) | 原生 | 需 vl-convert | 弱 | 需截图/后端渲染 | 需截图 |
| 依赖体量 | numpy+pillow,纯 Python 栈 | numpy + kaleido(Chromium) | 依赖 matplotlib | 依赖 vega 渲染栈 | 依赖 Node/Web 栈 | 依赖 Node/Web 栈 | 浏览器即可 |
| 许可证 | PSF/BSD 兼容 | MIT | BSD-3 | BSD-3 | BSD-3 | Apache-2.0 | ISC |
| GitHub 星数\* | 23,427 | 18,376 | 14,100 | 10,511 | 20,468 | 67,683 | 113,875 |
| 学习曲线 | 中陡(API 面大) | 中(Plotly Express 平缓) | 低 | 低-中(声明式思维) | 中 | 低-中 | 高 |
| 典型场景 | 论文/报告/出版 | 仪表盘/探索/3D | 快速统计图 | 快速交互原型 | 流式大数据应用 | 商业报表大屏 | 定制可视化产品 |
(二)结构图赛道(Diagram-as-Code)
| 维度 | Mermaid | PlantUML | D2 | Graphviz |
|---|---|---|---|---|
| 定位 | 文本渲染示意图 | UML/时序全家桶 | 现代声明式示意图 | 通用自动布局 |
| 渲染形态 | SVG(浏览器/CLI) | PNG/SVG(Java) | SVG/PNG | SVG/PNG |
| 交互性 | 轻交互(点击折叠等) | 弱 | 弱 | 弱 |
| 静态导出 | 需 mermaid-cli | 原生 | 原生 CLI | 原生 CLI |
| 依赖体量 | npm 包或 mermaid-cli(Chromium) | Java | 单二进制/CLI | 单二进制 |
| 许可证 | MIT | LGPL-3.0 | MPL-2.0 | EPL/Apache |
| GitHub 星数\* | 91,020 | 13,401 | 25,798 | ~13,000+ |
| 学习曲线 | 低(MD 风格) | 中(UML 知识) | 低-中 | 中 |
| 典型场景 | README/文档/笔记 | 软件工程建模 | 现代架构图 | 依赖图/网络图 |
\* 星数口径分层说明:三主角(Matplotlib、plotly.js、Mermaid)为 2026-11-06 综合会话经 GitHub API 复核,数值与横轴章一致(见核验记录第 4 条);pyecharts 的 15,781 为修订会话补核(见核验记录第 7 条);其余竞品(Seaborn、Altair、Bokeh、D3.js、PlantUML、D2)沿用横轴章撰写会话的 GitHub API 实查值,本综合稿未逐一复核;Graphviz 未逐一核验仓库,不作为结论依据。
2.4 逐维度对比
能力。Matplotlib 是 Python 生态里可控性最高的绘图库:从折线柱状到 3D、等高线、矢量场全都能画,且可以通过 rcParams、style、pgf/LaTeX 后端把一张图打磨到出版社排版要求。它的哲学是"每个像素都听你的",代价是常用 API 冗长、figure/axes/artist 多对象模型需要学习;3.11 系列刚完成文本渲染管线大改(What's new 3.11.0),说明它仍在活跃迭代底层能力。Plotly 的强项是交互与 3D:缩放、悬浮提示、图例开关、子图联动开箱即用,WebGL 支撑散点图大数据量渲染,且提供 Dash 框架把图表升级为 Web 应用——有评测认为"Plotly 的 3D 与交互是 Python 生态里做得最好的"(Beyond Matplotlib and Seaborn);另一篇面向科学绘图的对比也把 Plotly 的 3D 能力评为 "Native & Powerful",而 Bokeh 仅为 "Very Limited"(ajmani.dev)。弱项是静态出版质量:Kaleido(MIT,当前 1.5.0)可导出 PNG/SVG/PDF(官方文档),但字体微调与出版级排版控制仍不如 Matplotlib,且 Kaleido v1 重构后 API 有过不兼容变化(6.1 变更说明)。Mermaid 的能力边界与另外两者不在一个量纲——它不画数据图,而是把文本渲染成流程图、时序图、甘特图、ER 图、状态图等 20+ 种结构示意图(官方文档);独特能力是"嵌在 Markdown 里自动渲染":GitHub、GitLab、Notion、Obsidian 均原生支持 `mermaid 代码块,无需任何插件(GitHub 官方文档;2026 平台支持盘点);限制是复杂布局控制弱于专门工具,图大了容易乱。同赛道看:Seaborn(0.13.2)是 Matplotlib 的统计图形高层封装,脱不开 Matplotlib 天花板;Altair(6.3.0)走 Vega-Lite 声明式路线,几十行代码得到带交互的图;Bokeh(3.10.2)主打大数据量与流式更新,多篇评测认为其在大数据/流式上强于 Plotly——pauliacomi 之外,ajmani.dev 也把百万点级大数据场景评给 Bokeh("Excellent (via Server)",Plotly 仅 "Moderate (WebGL required)")(Plotly vs. Bokeh;ajmani.dev),但 Bokeh 生态与上手面更窄;ECharts(6.1.0,Apache-2.0,67,683 星)是商业图表能力最全的开源库之一,pyecharts(2.1.0)是其 Python 封装;D3.js 是 Web 可视化的"汇编语言",上限最高、成本也最高。
成本。许可成本:三者全部宽松许可——Matplotlib 为基于 PSF 的 BSD 兼容许可证(官方许可页),且绘出的图不受许可约束(官方论坛确认);plotly.py 与 Kaleido 均 MIT(社区确认、PyPI);Mermaid MIT。Plotly 公司的商业产品线(Dash Enterprise、Plotly Studio)是另一回事,不影响开源库本身。学习成本:Mermaid < Seaborn/Altair < Plotly Express < Matplotlib < D3,Matplotlib 是三主角中最高的。运行依赖成本:Matplotlib 最轻(pip 即装);Plotly 若要静态导出需 Kaleido 拉起 Chromium,这是"静态报告优先"视角下最需权衡的成本点;Mermaid 的官方静态导出工具 mermaid-cli(12.2.0)同样依赖 Puppeteer/Chromium;PlantUML 需要 Java 运行时,在个人工具链里是额外负担(2026 图表即代码对比)。
生态。Matplotlib 是整个 Python 数据栈的地基——pandas 的 .plot()、Seaborn、xarray、scikit-learn 内置可视化全部构建于其上;有评测据此认为它的兼容性是 Python 绘图库里最好的(Reflex Top 10(2026))。Plotly 的生态重心在"交互交付链"——Plotly Express 语法糖、Dash 应用框架、Kaleido 静态导出,2026 年还推出 AI 辅助的 Plotly Studio(官方 changelog)。Mermaid 的生态重心在"文档平台渗透率"——GitHub/GitLab/Notion/Obsidian/VS Code/Confluence 原生或插件支持(集成指南),91,020 星的量级远超两个 Python 竞品,反映它已成长为 Markdown 世界的"示意图事实标准"。横向观察:星数维度上 D3(113,875)与 ECharts(67,683)的全球影响力大于 plotly.js(18,376),但它们不提供 Python 原生 API 或远不够顺手;pyecharts(15,781 星,修订会话经 GitHub API 复核,见核验记录第 7 条)在中文社区的活跃度值得作为 Plotly 的备选记入工具链。
成熟度。三主角均为 10 年以上项目且在 2026-11-06 截面当日仍在高频提交(matplotlib 与 mermaid 最近推送 2026-11-05,plotly.js 为 2026-10-29,本会话复核一致),无维护风险。版本节奏:Matplotlib 3.11.x 在 2026 年内发了三个版本;Plotly 在 2026 年 8–9 月完成 plotly.js 4.0 + plotly.py 7.0 的大版本同步;Mermaid 一年内从 11.13 推进到 12.3,节奏偏快——对个人工具链意味着升级时需留意渲染行为变化。"升级后旧图渲染/观感变化"在 Mermaid 的升级史上屡有实例:v12 官方把默认布局引擎从 dagre 换成 ELK,旧流程图会被重排(GitHub Releases;layouts 文档);v10 的 ESM/API 破坏曾迫使下游推迟升级(discussion #4148;mkdocs-material #5217);下游社区亦有升级后 Mermaid 图配色失效的反馈(Obsidian 论坛)。把这一模式概括为"著称",是作者基于上述案例的经验判断,而非系统统计。替代方案中,Graphviz/PlantUML 是二十年级老将;D2(现迁移至 d2lang/d2 组织,25,798 星,MPL-2.0)年轻但增长快,2026 年评测已将其列入主流推荐(D2 官方 FAQ;Diagrams as Code 2026 landscape)。
2.5 替代方案逐项短评
- Seaborn(0.13.2,BSD-3):Matplotlib 的"统计皮肤",不是替代而是上层;个人工具链建议与 Matplotlib 绑定使用。
- Altair(6.3.0,BSD-3):声明式语法的优雅之选,交互零成本;但社区资料与定制上限不如 Plotly(Aleksei Aleinikov 2026-09 评测)。
- Bokeh(3.10.2,BSD-3):交互应用与大数据场景强手。对"能否替代 Plotly",pauliacomi(2020)给出的答案是"分场景,无全局最优";后来的对比文章持同一立场——Plotly 适合作为通用默认("the better starting point"),Bokeh 则在流式数据、自定义科学工具等服务端场景占优("Bokeh shines in specific niches: streaming data…")(Fastero;ajmani.dev)。
- ECharts 6.1 / pyecharts 2.1:交互图表能力最全的开源库之一;Python 封装成熟度略逊于 Plotly 官方维护力度。
- D3.js(ISC):可视化世界的"乐高积木",个人工具链中仅在有定制产品需求时引入。
- PlantUML(LGPL-3.0):Mermaid 的最大功能竞品;共识是"Mermaid 因无处不在而成为默认,PlantUML 是 UML/时序密集图的主力"(beauty-diagram 2026)。
- D2(MPL-2.0):Mermaid 的"美观升级"选项;当输出面向人看的设计文档时优于 Mermaid,但平台原生渲染支持远不及 Mermaid(codepic 2026 对比;Text-to-Diagram 同题对比)。
- Graphviz(DOT):自动布局的基石,许多工具(含 PlantUML 部分、D2 的可选引擎)构建其上;裸用语法低层,个人工具链一般不直接面对。
2.6 场景 → 首选速查(静态报告优先视角)
| 场景 | 首选 | 理由 |
|---|---|---|
| 论文/静态报告插图(PNG/PDF/SVG) | Matplotlib | 出版级控制力原生最强,生态兼容性佳(usedatabrain 2026 评测) |
| 快速统计探索图 | Seaborn / Matplotlib | 一行调用的统计图,底层兼容 |
| HTML 交互交付、3D 数据、仪表盘 | Plotly | 交互与 3D 强项突出(评测见 2.4),静态导出走 Kaleido 兜底 |
| 大数据量/流式 Web 应用 | Bokeh | 多篇对比认为其在该细分场景强于 Plotly(pauliacomi 2020、ajmani.dev、Fastero) |
| 商业风格大屏/报表(中文语境) | ECharts(pyecharts) | 图表类型全、中文社区资料多 |
| 从零定制可视化产品 | D3.js | 上限最高,成本最高 |
| README/笔记/文档里的流程图、时序图 | Mermaid | 平台原生渲染零配置(GitHub 文档) |
| 复杂 UML、时序密集建模 | PlantUML | 词汇量最大 |
| 要现代美感的架构图 | D2 | 布局引擎(ELK/TALA)与美观度最佳 |
三、交叉洞察:两轴结合说明了什么
洞察一:"三件套"是二十多年收敛出的正交分层,不是拼凑
纵轴显示,三条线分别在三个不同年代解决三个不同问题:2003 年的 Matplotlib 解决"Python 没有出版级绘图",2015 年开源的 plotly.js 解决"交互图没有语言无关底座",2014 年诞生、2022 年被 GitHub 收编的 Mermaid 解决"结构图无法随文档版本化"。横轴则显示,2026 年截面上每一层都找不到"同时替代两者"的竞品:Seaborn/Altair/Bokeh 没有一个同时给出"出版级控制力 + Python 全生态兼容",PlantUML/D2 再强也进不了 GitHub 原生渲染。两轴互证的结论是:这组选型不是三个工具的偶然相遇,而是市场在三个正交层位上各自收敛出的"事实标准或头部玩家"——所以正确的心智模型是"分层路由",而不是"主备替换"。
洞察二:平台渗透率压倒技术上限——选型的第一变量在工具之外
纵轴的每次范式改写,触发器都不是工具本身的能力升级,而是平台事件:Jupyter 把"代码+图+文字"装进同一画布,交互图的价值才被放大;GitHub 2022-02-14 的一次功能发布,就让 Mermaid 从"又一个文本绘图工具"跃升为 Markdown 世界的默认;LLM 的兴起则让"文本进、图出"的三件套整体价值重估。横轴给出了同一规律的最直观数据:表达力更强、UML 词汇量更大的 PlantUML(13,401 星)和美观度更高的 D2(25,798 星),都输给了"哪里都能渲染"的 Mermaid(91,020 星)。对个人用户的推论很直接:选型时先问"我的图最终在哪里被看",再问"哪个工具画得好"——下游渲染平台的渗透率,比工具的技术上限更能决定长期收益。
洞察三:静态导出是全链路的共同软肋,恰是"静态报告优先"者的主战场
把两章的能力表叠在一起看,会发现一个被分开叙述时各自不明显、合并后立刻凸显的事实:三件套里只有 Matplotlib 的静态导出是一等公民。Plotly 的静态导出要走 Kaleido(额外拉起一份 Chromium,且 v1 重构后 API 出过不兼容变化),Mermaid 的静态导出要走 mermaid-cli(同样基于 Puppeteer/Chromium);换言之,整条工具链要产出印刷级 PNG/PDF/SVG,有两条路都压在"无头浏览器"这个又重又脆的依赖上。Matplotlib 3.11 在 2026 年做的"字体与文本管线大修"则是在持续加固它天然的那一段。这对"静态报告优先"的本课题倾向是决定性的:Matplotlib 不是三件套之一,而是三件套的锚——任何图(包括 Plotly 图和 Mermaid 图的导出物)最终都要落到"能可靠打印"的静态形态上,而链上只有 Matplotlib 这一段是从未需要借道浏览器的。
洞察四:升级节奏差异决定版本策略——Matplotlib 慢、Plotly 中、Mermaid 快
横轴的成熟度数据放到纵轴上看,三个工具的风险画像完全不同:Matplotlib 二十余年间破坏性大版本跨越仅 3 次(0.x→1.0→2.0→3.0,其中 2.0 重做默认样式、3.0 进入 3.x 时代),其余年份保持小步节奏,且受 NEP 29 / SPEC 0 政策约束,个人用户几乎可以无脑跟随;Plotly 2021/2025/2026 三年三大版(5.0/6.0/7.0),破坏点集中在 Jupyter 集成与 Kaleido,核心绘图 API 相对稳定,跟随升级的成本可控;Mermaid 则在三年内做了两次破坏性现代化(v10 弃 UMD/CommonJS、v12 换默认布局引擎 ELK 并抬高运行时门槛),且"升级后旧图渲染/观感变化"屡有实例(证据见 2.4 成熟度节;"著称"云云为作者经验判断)。据此,个人工具链的版本策略应当差异化:Matplotlib 跟随最新,Plotly 跟随大版本并同步看 Kaleido 变更说明,Mermaid 锁定大版本、升级前先批量重渲染旧图做 diff。
洞察五:AI 把选型重心从"学语法"改写为"管产线"
纵轴第四次改写("人写还是 AI 写")与横轴的学习成本数据交叉后,得到一个对投入方向很有指导性的结论:三个工具恰好都是"文本进、图出"的产物,都处在 LLM 最擅长生成的那类输出上——Mermaid 语法面最窄、声明式、容错,因此是 AI 生成成功率最高、事实上已经标准化的结构图输出格式;Matplotlib/Plotly 代码则是 AI 编程助手"现场出图"的标准产物。这意味着个人用户继续重仓"背 API"的边际收益正在快速下降(AI 随时能写出正确的 plt.subplots 或 px.scatter),而上升的是另两件事:一是判断力——能一眼看出 AI 生成的图哪里在撒谎(截断的 y 轴、误导的配色、错误的聚合);二是产线管理能力——版本锁定、静态导出兜底、渲染 diff 这些"下游可靠性"工作,恰恰是 AI 不会替你做的。
对用户的判断与建议(静态报告优先)
- 采用横轴章的推荐组合,并按洞察三加一条锚定原则:
Matplotlib + Seaborn(数据图静态产出)、Plotly + Kaleido(交互探索,可导出静态兜底)、Mermaid + mermaid-cli(文档示意图与静态导出)。三者许可均为宽松型(BSD 兼容/MIT),零许可成本,维护主体全部活跃(最近推送均在最近一个月内,见核验记录)。原则:任何新图先通过"静态导出测试"——验证它能无损落成 PNG/PDF/SVG,再决定是否进入工具链。 - 默认路由规则:论文/PDF/印刷插图 → Matplotlib(快速统计图叠 Seaborn);HTML 交付、3D、仪表盘 → Plotly;README/笔记/PR 里的流程图与时序图 → Mermaid;Mermaid 画乱了的复杂结构图 → 降级 PlantUML(重 UML)或 D2(重美感);大数据流式应用 → Bokeh;中文商业大屏 → ECharts/pyecharts。
- 版本策略按洞察四差异化:Matplotlib 跟随 3.11.x;plotly.py 大版本升级时同步核对 Kaleido 与 Jupyter 集成的变更说明;Mermaid 锁定 12.x——注意"锁 CLI ≠ 锁渲染核心":mermaid-cli 12.2.0 声明依赖
mermaid@^12.2.0,semver 上允许 12.3.0 进入,须用锁文件把核心库一并钉死(见 2.2 与下文"最小可用配置");升级前对存量图做批量重渲染 diff(12.x 的 ELK 默认布局会重排旧图)。 - 成本上接受但要知情:Kaleido 与 mermaid-cli 各自带一份 Chromium,磁盘与内存开销是这条工具链的主要"隐性税";PlantUML 需要 Java,不建议作为个人链的默认携带项,按需临时使用即可。
- 投入方向按洞察五调整:与其精修 API 记忆,不如投资两类能力——读图判断力(识别误导性可视化),以及渲染产线管理(锁定、导出、diff、评审),后者正是"静态报告优先"工作流里无法外包给 AI 的部分。
最小可用配置(读完即可落地)
Matplotlib:出版级静态输出 + 中文字体
import matplotlib.pyplot as plt
plt.rcParams["figure.dpi"] = 120 # 屏幕预览清晰度
plt.rcParams["savefig.dpi"] = 300 # 导出印刷级分辨率
plt.rcParams["font.sans-serif"] = ["Microsoft YaHei"] # Windows 中文;macOS 用 PingFang SC,Linux 用 Noto Sans CJK SC
plt.rcParams["axes.unicode_minus"] = False # 中文字体下负号显示修复
fig.savefig("out.png") # 或 .pdf / .svg——导出不经过浏览器,这正是 Matplotlib 作"锚"的原因3.11 的字体管线翻修改善了一致性,但"显式声明字体"仍是中文环境的第一原则:不写这两行,默认 DejaVu Sans 会在汉字位置显示方框、负号丢失。
Plotly + Kaleido:交互 + 静态兜底
pip install "plotly==7.1.0" "kaleido>=1.3" # plotly.py 7.1.0 的 kaleido extra 要求 kaleido>=1.3.0(PyPI requires_dist 实查),当前 1.5.0 满足
plotly_get_chrome # Kaleido v1 起不再捆绑 Chrome,需一次性安装(Python 内等价写法:pio.get_chrome())import plotly.express as px
fig = px.scatter(px.data.iris(), x="sepal_width", y="sepal_length", color="species")
fig.show() # 交互视图:需 Jupyter Notebook ≥ 7 / JupyterLab(plotly.py 6 起不再支持更旧的 Notebook,FigureWidget 改基于 anywidget、需 pip install anywidget——见官方 v6 迁移指南)
fig.write_image("out.png", scale=2) # 静态兜底:由 Kaleido 调本机 Chrome 渲染Mermaid + mermaid-cli:结构图 + 锁版本
npm init -y
npm install -D @mermaid-js/mermaid-cli@12.2.0 # package.json + 锁文件把 CLI 与 mermaid 核心一起钉死
npx mmdc -i diagram.mmd -o diagram.svg -c mermaid.config.jsonmermaid.config.json 里显式声明中文字体(导出由无头 Chromium 调用系统字体完成):
{ "themeVariables": { "fontFamily": "Microsoft YaHei" } }注意:不带锁文件时,CLI 12.2.0 声明的 mermaid@^12.2.0 会拉到当前最新的 12.3.0,渲染核心随之漂移——这正是 2.2 所说"锁 CLI ≠ 锁渲染核心"的落地含义。
四、参考来源
Matplotlib
- 官方历史(Hunter 2008 年自述):https://matplotlib.org/stable/project/history.html
- 官方发布索引:https://matplotlib.org/stable/release/release_notes.html
- What's new in 2.0 / 3.0 / 3.11.0:https://matplotlib.org/stable/release/prev_whats_new/whats_new_2.0.0.html 、https://matplotlib.org/stable/release/prev_whats_new/whats_new_3.0.html 、https://matplotlib.org/stable/release/prev_whats_new/whats_new_3.11.0.html
- 官方许可页:https://matplotlib.org/stable/project/license.html
- 官方论坛(图输出的版权):https://discourse.matplotlib.org/t/license-copyright-conditions-for-matplotlib-figure-output/22745
- GitHub Releases:https://github.com/matplotlib/matplotlib/releases
- Wikipedia: Matplotlib:https://en.wikipedia.org/wiki/Matplotlib
Plotly
- Wikipedia: Plotly:https://en.wikipedia.org/wiki/Plotly
- Plotly Express 公告(2019-03):https://community.plotly.com/t/introducing-plotly-express/21165
- plotly.py 4.0 公告(2019-07):https://medium.com/plotly/plotly-py-4-0-is-here-offline-only-express-first-displayable-anywhere-fc444e5659ee 、https://community.plotly.com/t/introducing-plotly-py-4-0-0/25639
- plotly.js 2.0 / plotly.py 5.0(2021-06):https://community.plotly.com/t/announcing-plotly-js-2-0/53675 、https://community.plotly.com/t/introducing-plotly-py-5-0-0-a-new-federated-jupyter-extension-icicle-charts-and-bar-chart-patterns/54039
- plotly.js 3.0 / plotly.py 6.0 / Dash 3.0(2025-02):https://community.plotly.com/t/new-releases-plotly-js-3-0-plotly-py6-0-dash-3-0-0rc1/90292
- plotly.js 4 + plotly.py 7 综合发布说明(2026):https://community.plotly.com/t/comprehensive-release-notes-for-plotly-js-4-plotly-py-7/97691
- 官方博客 12 months in review(2026-09):https://plotly.com/blog/12-months-in-review-september-2026
- v6 迁移指南(Narwhals、Notebook ≥ 7、anywidget):https://plotly.com/python/v6-migration 、https://community.plotly.com/t/major-releases-of-plotly-and-dash-narwhals-dash-hooks-and-more/89272
- plotly.py GitHub Releases:https://github.com/plotly/plotly.py/releases
- 静态导出:https://plotly.com/python/static-image-export 、https://plotly.com/blog/kaleido-the-next-generation 、https://plotly.com/python/static-image-generation-changes
- Kaleido:https://github.com/plotly/Kaleido 、https://pypi.org/project/kaleido
- 许可社区确认:https://community.plotly.com/t/question-about-licenses-for-plotly-and-dash-documentation/90252
- Roadmap changelog(Plotly Studio 等):https://roadmap.plotly.com/changelog
- Databricks 合作(2024):https://finance.yahoo.com/news/plotly-wins-2024-databricks-customer-143000347.html
Mermaid 与 Diagram-as-Code
- GitHub Blog:Include diagrams in your Markdown files with Mermaid(2022-02-14):https://github.blog/2022-02-14-include-diagrams-markdown-files-mermaid/
- Taskade: History of Mermaid:https://www.taskade.com/blog/history-of-mermaid
- Wikipedia: Mermaid (software):https://en.wikipedia.org/wiki/Mermaid_(software)
- Mermaid v11 官方博客(2024-08-23):https://mermaid.ai/blog/posts/mermaid-v11-is-out
- Mermaid v11.13 官方博客(2026):https://mermaid.ai/blog/posts/mermaid-v11-13-0-two-new-diagram-types-and-our-most-polished-release-yet
- Mermaid v10 ESM 破坏性变更讨论:https://github.com/orgs/mermaid-js/discussions/4148 、https://github.com/squidfunk/mkdocs-material/issues/5217
- Mermaid GitHub Releases(12.x):https://github.com/mermaid-js/mermaid/releases
- Mermaid ELK 布局文档:https://github.com/mermaid-js/mermaid/blob/develop/docs/config/layouts.md
- Obsidian 论坛:1.8.3 升级后 Mermaid 图配色失效反馈(2025-01):https://forum.obsidian.md/t/mermaid-js-diagram-colors-are-now-broken-since-update-1-8-3/95690
- Mermaid 官方站:https://mermaid.js.org
- GitHub 官方文档(Mermaid 渲染):https://docs.github.com/en/get-started/writing-on-github/working-with-advanced-formatting/creating-diagrams
- 原生渲染平台盘点(2026):https://mermandraw.com/blog/where-mermaid-renders-natively
- 平台支持汇总:https://www.beauty-diagram.com/blog/which-tools-support-mermaid
- Mermaid 集成指南:https://www.mermaideditor.io/integrations
- Diagram-as-Code 横向对比:https://text-to-diagram.com/?example=text 、https://infrasketch.net/blog/best-diagram-as-code-tools-2026 、https://codepic.cc/blog/mermaid-vs-plantuml-vs-d2 、https://www.beauty-diagram.com/blog/diagrams-as-code-2026-landscape 、https://d2lang.com/tour/faq
竞品与第三方评测
- Vega-Altair GitHub:https://github.com/vega/altair
- Vega-Lite 1.0 公告:https://medium.com/hci-design-at-uw/introducing-vega-lite-438f9215f09e
- NumFOCUS John Hunter Technology Fellowship:https://numfocus.org/programs/john-hunter-technology-fellowship
- Plotly vs Bokeh 对比(ajmani.dev):https://ajmani.dev/plotly-vs-bokeh-for-scientific-plotting
- Plotly vs Bokeh 对比(Fastero):https://fastero.com/blog/plotly-vs-bokeh-interactive-python-charts
- Python 可视化横向评测:https://www.alekseialeinikov.com/en/blog/topics/programming/python-data-visualization-libraries 、https://reflex.dev/blog/top-10-data-visualization-libraries 、https://www.usedatabrain.com/blog/data-visualization-python-libraries 、https://pauliacomi.com/2020/06/07/plotly-v-bokeh.html 、https://medium.com/codex/beyond-matplotlib-and-seaborn-python-data-visualization-tools-that-work-3ef7f8d1500e
附录:本综合稿核验记录(2026-11-06,综合会话与修订会话内执行)
执行方式:curl + Python(-I 模式)解析注册表 JSON。目的:调和两章的口径分歧、修正纵轴章基于检索摘要的时间线误记;修订会话另按独立审读意见补核若干此前无出处或口径含混的条目(第 7–9 条)。
- plotly.py 7.x 发布日(两章口径不一:纵轴章记 7.0.0 于 2026-08-25 上 PyPI、横轴章记"7.0 与 plotly.js 4.0 于 2026-09-18 前后同步发布")
- 命令:
curl https://pypi.org/pypi/plotly/7.0.0/json、curl https://pypi.org/pypi/plotly/7.1.0/json - 输出:
plotly 7.0.0 -> 2026-08-25T17:47:24Z;plotly 7.1.0 -> 2026-09-15T19:21:18Z - 结论:采用 PyPI 口径,7.0.0 于 2026-08-25 上架;横轴章"9 月 18 日前后"应为官方社区综合发布说明的成文时间,不是 7.0.0 的上架时间。
- 命令:
- Mermaid v12 时间线(纵轴章记"v12 于 2025 下半年发布",且自称确切日期未核实)
- 命令:
curl "https://api.github.com/repos/mermaid-js/mermaid/releases?per_page=100&page=1"(并取第 2 页,按 tagmermaid@x.y.z匹配) - 输出:
mermaid@11.12.0 -> 2025-09-18;mermaid@11.13.0 -> 2026-03-09;mermaid@12.0.0 -> 2026-09-10;mermaid@12.1.0 -> 2026-10-02;mermaid@12.2.0 -> 2026-10-13;mermaid@12.3.0 -> 2026-11-03 - 结论:v12.0.0 实际发布于 2026-09-10,纵轴章"2025 下半年"为误记;11.13.0(2026-03)在 v12 之前,11.x 收官后 12.x 接棒,时间线理顺。
- 命令:
- Matplotlib 3.11.x 日期口径:
curl https://pypi.org/pypi/matplotlib/{3.11.0,3.11.1,3.11.2}/json→ 上架时间分别为 2026-06-12 / 07-18 / 09-11,比横轴章所记公告日(06-11 / 07-17 / 09-10)统一晚一天,属"公告日 vs PyPI 上架日"的口径差,不是矛盾;正文采用公告日并注明 PyPI 口径。 - 三主角星数/推送复核:
curl https://api.github.com/repos/{matplotlib/matplotlib, plotly/plotly.js, mermaid-js/mermaid}→ 23,427(推送 2026-11-05)/ 18,376(2026-10-29,MIT)/ 91,020(2026-11-05,MIT),与横轴章核验值完全一致。 - Dash 版本(纵轴章记"4.5.0,2026-07",检索摘要口径):
curl https://api.github.com/repos/plotly/dash/releases/latest→ v4.5.0,发布于 2026-10-29;正文已按此修正。 - 配套工具版本复核:
curl https://pypi.org/pypi/kaleido/json→ 1.5.0;curl https://registry.npmjs.org/@mermaid-js/mermaid-cli/latest→ 12.2.0,与横轴章一致。 - pyecharts 星数与 npm 口径补核(修订会话执行,回应审读意见):
curl https://api.github.com/repos/pyecharts/pyecharts→ 15,781 星、最近推送 2026-10-26、MIT——证实正文 2.4 所引"15,781 星"数值无误,并补上此前缺失的出处;curl https://registry.npmjs.org/mermaid/latest→ 12.3.0,证实正文"当前 npm latest"口径(此前附录第 2 条只覆盖 GitHub Releases 的发布日期,未覆盖 npm 口径);curl https://registry.npmjs.org/@mermaid-js/mermaid-cli/12.2.0→ dependencies 含"mermaid": "^12.2.0"(以及 chalk、katex 等),用于 2.2 的 CLI↔核心版本对应说明。
- plotly.js 4.0.0 本体发布时间(修订会话执行,回应审读意见):
curl "https://api.github.com/repos/plotly/plotly.js/releases?per_page=100"→ tagv4.0.0的 published_at 为 2026-08-24T20:57:00Z,即 plotly.py 7.0.0 上架 PyPI(2026-08-25)前一天;同页可见 plotly.js 当前最新为 v4.2.0(2026-10-29)。 - plotly.py 7.1.0 与 Kaleido 的版本配对(修订会话执行,回应审读意见):
curl https://pypi.org/pypi/plotly/7.1.0/json→ requires_dist 含kaleido>=1.3.0(extra "kaleido");kaleido 当前 1.5.0 满足该约束。另据官方静态导出文档:Kaleido v1 起不再捆绑 Chrome,需经plotly_get_chrome(CLI)或pio.get_chrome()(Python)一次性安装(https://plotly.com/python/static-image-export)。
仍未核验的事项:Mermaid Chart 融资金额(750 万美元种子轮)、Mermaid 用户数(800 万)、Plotly 的 Databricks 合作细节、Plotly 2026 年产品动作(MCP 支持、Plotly Cloud、Plotly Studio Embedded)均为检索摘要口径,文中已标注;Graphviz 星数未核验;本报告为文献综述与注册表核验,未运行绘图类功能测试(课题性质不要求)。