# MoonPlot 能力路线图

更新时间：2026-10-25。

目标是一个可用、易接入、可逐步完善的 MoonBit 画图库。Matplotlib 是能力与行为的参考，
不再要求复制其全部 API、Python 动态协议或所有参数。实现可以采用适合 MoonBit 的类型和调用方式。
以“用户能完成一个绘图任务、能复现结果”验收，不用 API 数量或测试数量推算整体百分比。

## 四个大目标

| 目标 | 用户得到什么 | 验收边界与当前状态 |
| --- | --- | --- |
| **G1：基础二维 SVG 可用版（M1）** | 折线、散点、柱状图；标题、轴标签、刻度、网格、图例；可运行多图示例 | 已验收：修复 grid 单轴与柱宽范围错误、补四角图例，实际出图与相关四目标回归通过 |
| **G2：Rabbita 交互 DOM** | 在 Rabbit-TEA/Rabbita 应用中返回可组合的 DOM，响应悬停、点击和数据更新 | G2.1/M2 已验收；0.3.0 补齐六类图表语义命中与自定义提示，见[提示功能](TOOLTIPS.md)；其余交互缺口逐项推进 |
| **G3：常用数据与科学绘图场景** | 日期趋势、分类对比、分布统计、热图及更复杂的组合图 | 已有大量静态实现；[M3](MILESTONE_M3.md) 接续热图交互、分组/堆叠柱与真正环形图 |
| **G4：导出、接入与持续交付** | 清晰的安装和错误信息、稳定的库入口、更多输出方式、小步发布 | SVG、单一 Lampese/mathplotlib module 与独立接入验证；0.5.0 已交付；PNG/PDF与性能按需推进 |

G4 的文档和质量工作随每个里程碑推进。M1 与 G2.1 已完成验收；后续继续按具体场景扩展 G2/G3。
G3 不需要等全部图表参数一致才交付；其内部顺序由实际使用需求决定。

## M1：现在版本加少量特性即可使用

用户已选择“基础出图稳定、少量易用性特性”。本轮范围固定为：

1. 排查并修复先前三图工作流的真实错误。定位结果是默认 `which="both"` 时
   `grid(axis="y")` 被错误拒绝；不需要通过手动刻度绕开。
2. 修复实际视觉检查发现的柱状图越框，范围计算与绘制共享数据宽度规则，包含水平柱和单柱。
3. 为现有图例增加四角位置。默认仍为右上；保留自动/显式条目行为，每个 Axes 独立设置。
4. 提供运行后可直接保存的 Gallery，并检查实际 SVG 和渲染图；保持原有两个例子可用。
5. 通过相关新旧测试、四目标检查、接口检查；用少量现有测试冒烟直方图、图像与日期入口。
6. 记录已验收场景及限制，提交可复现的源码和预览。

逐项结果维护于[能力与验收清单](CAPABILITIES.md)；具体运行命令和结果见[M1 验收记录](MILESTONE_M1.md)。
M1 不要求独立 PNG/PDF 后端、交互 DOM、3D、动画或完整字体/TeX 排版。

## M2：可接入的浏览器交互绘图

在 G2.1 基础上保留已完成的 hover/click、图例、数据更新、响应式与 UI，
补齐 SVG ID/local URL/href 链隔离；用双图渐变/裁剪的同页真实像素验证重绘、换序和重挂载。
发布 v0.2.0 的两个精简模块 ZIP 与显式独立 workspace，仓库外四目标静态及真实浏览器消费验收。
[范围、命令与限制](MILESTONE_M2.md)已固定；缩放、平移、框选和触摸不属于 M2。
0.2.0 原命名空间权限预检失败，已交付 GitHub 源码版本包；用户随后明确要求使用 Lampese/ 前缀发布，
0.2.1 将核心与组件合并为单一 module。当前安装路径与发布状态见 [接入说明](PUBLISHING.md)。

## 后续如何推进

每个后续切片先明确一个用户场景、输入与输出，复用已有能力，提交前验证真实结果。
发现失败就定位并修复，不能把一个未验收的实现当完成，也不因为失败而默默停滞。
公共 API 只在有实际用途时扩充；保留现有调用可用，并在生成接口中审查变更。

当前架构为 Scene → render IR → SVG；`to_drawing()` 在同次绘制中收集命中点，
Rabbita adapter 将 SVG 转成公开节点树，复用现有坐标和布局算法。
Rabbita 组件位于同 module 的 JS-only 子包；模块安装统一解析依赖，核心包不 import UI，静态输出继续支持原平台。

## 当前资料与历史参考

- [当前执行检查点](MIGRATION_STATUS.md)：下一动作、实施与验收状态。
- [现有能力](CAPABILITIES.md)：用户可调用的功能和实际限制。
- [详细使用指南](USAGE.md)与[接口行为参考](COMPATIBILITY.md)。
- [原完整 API 迁移计划](archive/migration-plan-api-history.md)与[历史执行记录](archive/migration-status-through-2026-10-24.md)：保留历史，不作为现行任务清单。
- [历史 API 对比](MIGRATION_PROGRESS.md)：原口径与数据仍可查，不代表当前画图库整体完成率。

## 0.3.0：常用图表的值提示

在同一次绘制中捕获柱形/横柱/直方图的矩形、饼图扇区及其语义数据；
折线增加按屏幕横轴选择真实样本的模式。Rabbita 组件提供默认提示和自定义内容/样式入口，
应用拥有日期、单位与本地化格式。范围、示例和实际验收见 [提示指南](TOOLTIPS.md)。
不为接入这些能力重写 SVG 坐标或恢复全 Matplotlib API 迁移。

## M3：常用图表扩展与矩阵交互

本轮先对 0.3.0 做了[实际调查](CHART_COVERAGE.md)：静态实现与交互覆盖分别记录，
19 个代表性图类输入在四目标均生成可解析 SVG，命中数据的缺口可复现。

M3 三项目标已实现：规则 nearest 标量热图的整格提示、多系列分组/正负堆叠柱、真正透明环孔的环形图。
四目标相关回归与五图真实 DOM 已验收；[范围与结果](MILESTONE_M3.md)、[使用指南](M3_CHARTS.md)记录具体边界。
0.4.0 clean 包、实际 registry 消费与正式发布均已完成。

## M4：统计图与区间交互

[M4](MILESTONE_M4.md) 已合入误差棒、面积/置信带/堆叠面积和箱线图交互，
复用现有统计计算和静态 SVG，同次绘制捕获真实几何与原始数据。
最终全套、五图DOM、正式包/实际registry消费和附件回验均已通过，0.5.0已交付。

小提琴、不规则网格/分箱语义和更复杂科学图保留为明确后续项。
已有静态绘制能力继续复用；只把实际验收的交互场景标为完成。

## M5：矩形网格与二维计数分箱

[M5](MILESTONE_M5.md) 已合入 flat pcolor/pcolormesh、hist2d 双区间计数提示，
以及旧普通柱跨 Logit 有效视图的遗留边界。四目标全套和三图 DOM 已通过，正在交付0.6.0。
