moon run examples/basic_line > line_chart.svg
moon run examples/basic_bar > bar_chart.svg
moon run examples/benchmark_summary > iris-benchmark.svg
moon run examples/advanced_report > advanced-report.svg
PowerShell 用户可以显式指定 UTF-8 输出:
moon run examples/basic_line | Set-Content -Encoding utf8 line_chart.svg
moon run examples/basic_bar | Set-Content -Encoding utf8 bar_chart.svg
MoonPlot 🌔📊
MoonPlot 是一个完全由 MoonBit 编写的声明式数据图表生成与可视化库。它把比例尺、图表布局、数据系列和渲染后端拆开,让同一份图表声明可以输出 SVG,也可以生成 Canvas 2D 命令。
特性
Backendtrait:内置SVGBackend和 Canvas 2D 命令后端。ChartBuilder+ChartLayout声明式布局:标题、图例、网格和绘图区边界由同一个布局对象计算。Dashboard提供命名多面板布局。安装
从 Mooncakes 安装
包发布后,按模块包路径导入,例如
dgmxjj/moonplot/src/chart、dgmxjj/moonplot/src/series和dgmxjj/moonplot/src/backend。如果要使用仓库中的示例或参与开发,请直接克隆源码。从源码运行
请先安装 MoonBit 工具链。项目以 MoonBit 0.10.3 作为验收基线,建议使用官方安装器获取与 CI 一致的版本;验收 CI 会在 Linux、macOS 和 Windows 上安装工具链及 native 编译依赖。
可执行示例
示例都是可直接运行的 MoonBit executable package,会把 SVG 写到标准输出:
PowerShell 用户可以显式指定 UTF-8 输出:
也可以使用 Make:
line_chart.svg应包含折线<line>、坐标轴、网格和图例;bar_chart.svg应包含柱形<rect>、分类刻度和图例。生成的本地 SVG 不纳入版本控制。基准示例使用仓库内的 UCI Iris 18 行数据子集,执行完整的 CSV 解析、统计摘要、比例尺和 SVG 渲染链路。数据来源、CC BY 4.0 署名和预期结果见
docs/BENCHMARKS.md。advanced_report展示表格剖析、区域分组、线性回归和热力图组合流程,输出开头应包含rows=4;columns=3、groups=east=11.5,west=17和slope=-0.18。为保证 WASM 不依赖文件系统,该示例使用版本化的内嵌 CSV;仓库中的 CSV 文件仍作为可审计基准夹具。最小使用方式
下面的调用顺序展示了真实 API:先声明后端和图表,再从布局对象读取绘图区,最后绘制网格、坐标轴和数据系列。
完整的 API 说明见
docs/API.md,布局设计见docs/ARCHITECTURE.md。组委会验收驳回意见与仓库证据的逐项映射见
docs/ACCEPTANCE.md。项目结构
每个子目录都是独立的 MoonBit package;公开 API 的
.mbti接口文件由moon info生成并纳入版本控制。验证与 CI
本地常用检查命令:
GitHub Actions 使用官方 MoonBit 安装器,在
ubuntu-latest、macos-latest和windows-latest上执行同样的全目标检查、构建、测试、格式检查和接口漂移检查。Windows native 构建使用 MSYS2 UCRT64 GCC;本机没有 C 编译器时,可先运行对应平台的 CI 或安装 MSYS2。边界行为
空数据系列不输出图形;空 CSV 返回明确错误;CSV 列数不一致报告行号;非法数字列报告数据行号;透视表和分组聚合跳过缺失单元并保留错误行号;常数比例尺回退到有效起点;负值柱状图和面积图以零线/基线处理;负半径、负柱宽、非法窗口、倒置区间和极小画布会被安全钳制;SVG/Canvas 文本会转义 XML/JavaScript 特殊字符。
当前范围与非目标
当前版本覆盖 SVG 离线输出和 Canvas 2D 命令生成;Canvas 后端不直接持有浏览器上下文,调用方负责把
to_js_code("ctx")注入页面。当前不包含动画、交互式坐标轴、自动文本测量和完整 Web UI 组件。布局模块提供稳定的绘图区/图例边界,后续可以在不改变数据系列 API 的情况下扩展这些能力。参考与致谢
MoonPlot 未复制上述项目的源代码;参考范围仅限公开 API 设计和图形渲染概念。项目自身使用 MIT License,基准数据保留独立的 CC BY 4.0 署名要求,详见
LICENSE和docs/REFERENCES.md。项目链接
许可证
Copyright (c) 2026 Dgmxjj。MoonPlot 使用 MIT License 发布。