// SVG 文档
let doc = @lib.SvgDocument::new(800, 600)
let doc2 = doc.add_element("<rect x=\"10\" y=\"10\" width=\"100\" height=\"50\" fill=\"#4E79A7\"/>")
let svg_string = doc2.render()
// 主题
let light = @lib.Theme::new_light()
let dark = @lib.Theme::new_dark()
let color = @lib.get_palette_color(light, 3) // 调色板循环
// 颜色
let c = @lib.Color::red()
let css = c.to_css() // "rgba(255,0,0,1.0)"
// 坐标轴
let config = @lib.AxisConfig::new()
.with_max(300.0)
.with_tick_count(5)
图表组件
// 柱状图
let series = @bar.BarSeries::new("Sales", [120.0, 200.0, 150.0], colors[0])
let chart = @bar.BarChart::new(600.0, 400.0, ["Jan", "Feb", "Mar"], [series], theme, false)
let svg = chart.with_title("Monthly Sales").render()
// 折线图
let pts = [@line.DataPoint::new(0.0, 200.0), @line.DataPoint::new(1.0, 150.0)]
let ds = @line.LineSeries::new("Series A", pts, colors[0])
let chart = @line.LineChart::new(500.0, 350.0, [ds], theme)
let svg = chart.with_title("Line Chart").render()
// 饼图
let slices = [@pie.PieSlice::new("A", 35.0, colors[0]), @pie.PieSlice::new("B", 25.0, colors[1])]
let chart = @pie.PieChart::new(450.0, 400.0, slices, theme)
let svg = chart.with_title("Pie Chart").render()
// 雷达图
let s1 = @radar.RadarSeries::new("Team A", [90.0, 80.0, 70.0], colors[0])
let chart = @radar.RadarChart::new(450.0, 420.0, ["Speed", "Quality", "Cost"], [s1], theme)
let svg = chart.with_title("Radar Chart").render()
xinxin/moonbit-chart
MoonBit 原生可视化图表库,基于 SVG 渲染,支持浅色/深色双主题。可发布到 mooncakes.io 的标准 MoonBit 包。
项目架构
快速上手
前置条件
安装 MoonBit 工具链:
构建与测试
命令行工具
将 Markdown 文件(含图表配置块)转换为完整 HTML 可视化页面:
图表配置语法
在 Markdown 中嵌入图表,使用
@chart:标记块:支持的图表类型:
bar(柱状图)、line(折线图)、pie(饼图)、radar(雷达图)。配置项说明: | 配置项 | 必选 | 说明 | |——–|——|——| |
title| 否 | 图表标题 | |width/height| 否 | 画布尺寸,默认 600×400 | |theme| 否 |light(默认)/dark| |stacked| 否 | 柱状图是否堆叠,默认 false | |categories| 是 | X轴标签,逗号分隔 | |dataset| 是 | 数据系列:标签, 颜色, 数值...|API 参考
底层绘图基座
图表组件
演示示例
运行全部 18 个 Demo:
包括:单组/分组/堆叠柱状图、单组/多组折线图、饼图、雷达图,以及暗色主题、负值、大数据量、空数据等边界示例。
两种输出产物
SVG 字符串
通过各图表组件的
.render()方法获取符合 SVG 标准的 XML 字符串,可直接嵌入 HTML 或保存为.svg文件。MD 转 HTML 可视化页面
通过命令行工具将 Markdown 文件转换为完整的 HTML 页面,所有图表以 SVG 内嵌:
发布到 mooncakes.io
CI 自动化
GitHub Actions 流水线(
.github/workflows/ci.yml),每次推送自动执行:moon check+moon fmt --check+moon infomoon buildmoon test边界兼容
Theme::new_dark()许可证
MIT License — 详见 LICENSE