Mermaid.js饼图与柱状图:数据可视化的轻量级解决方案
你是否还在为复杂数据报表的可视化发愁?是否觉得专业图表工具学习成本太高?本文将介绍如何使用Mermaid.js这一轻量级图表库,通过简单的文本描述快速创建专业的饼图和柱状图,让你的数据展示变得轻松高效。读完本文,你将能够掌握Mermaid.js饼图和柱状图的基本语法、高级配置以及实际应用场景,轻松应对日常工作中的数据可视化需求。
Mermaid.js简介
Mermaid.js是一个基于JavaScript的开源图表绘制工具,它允许用户使用简单的文本描述来生成各种图表,包括流程图、序列图、甘特图等多种类型。与传统的图表绘制工具相比,Mermaid.js具有轻量化、易集成、代码即图表等优点,特别适合在文档、博客、演示文稿等场景中快速插入高质量图表。
官方文档:docs/intro/getting-started.md
为什么选择Mermaid.js进行数据可视化
- 简单易学:使用直观的文本语法,无需复杂的图形界面操作
- 高度可定制:支持多种主题和样式配置,满足不同场景需求
- 轻量级:核心库体积小,加载速度快
- 易于集成:可与各种文档工具、博客平台无缝集成
- 开源免费:基于MIT许可证,可自由使用和修改
饼图(Pie Chart)详解
饼图(Pie Chart)是一种 circular statistical graphic(圆形统计图形),通过将圆形分割成不同大小的扇形来展示数据的比例关系。Mermaid.js提供了简洁而强大的饼图绘制功能,让你能够快速创建专业的饼图。
基本语法
创建饼图的基本语法非常简单,只需遵循以下步骤:
- 以
pie关键字开始定义饼图 - 可选:使用
showData关键字显示具体数据值 - 可选:使用
title关键字添加标题 - 定义数据项,格式为:"数据标签" : 数据值
pie showData
title 产品X的关键成分
"钙" : 42.96
"钾" : 50.05
"镁" : 10.01
"铁" : 5
语法参考:docs/syntax/pie.md
高级配置
Mermaid.js饼图支持多种高级配置选项,让你可以根据需要定制图表的外观和行为。
文本位置调整
通过textPosition参数可以控制饼图中标签文本的位置,取值范围为0.0(中心)到1.0(外圈):
%%{init: {"pie": {"textPosition": 0.9}, "themeVariables": {"pieOuterStrokeWidth": "5px"}}}%%
pie
title 靠近边界的标签:产品X
"钙" : 42.96
"钾" : 50.05
"镁" : 10.01
"铁" : 5
主题变量配置
可以通过主题变量自定义饼图的外观,如外边框宽度、颜色等:
%%{init: {"pie": {"textPosition": 0.45}, "themeVariables": {"pieOuterStrokeWidth": "5px", "pieSectionColors": ["#ff6347", "#4682b4", "#32cd32", "#ffa500"]}}}%%
pie
title 自定义颜色的饼图:编程语言分布
"JavaScript" : 30
"Python" : 25
"Java" : 20
"C#" : 15
"其他" : 10
完整配置选项:docs/config/configuration.md
实际应用示例
饼图适用于展示分类数据的占比关系,以下是几个常见的应用场景:
市场份额分析
pie showData
title 2023年智能手机市场份额
"三星" : 21.8
"苹果" : 17.6
"小米" : 14.1
"传音" : 10.5
"OPPO" : 9.8
"vivo" : 8.2
"其他" : 18.0
资源分配展示
pie
title 项目预算分配
"人力成本" : 45
"硬件设备" : 25
"软件许可" : 15
"培训费用" : 10
"应急储备" : 5
饼图演示页面:demos/pie.html
柱状图(Bar Chart)详解
Mermaid.js通过XY Chart模块支持柱状图绘制,同时还支持折线图等其他类型,提供了丰富的数据可视化能力。
基本语法
创建柱状图的基本语法如下:
- 以
xychart-beta关键字开始定义图表 - 可选:使用
horizontal关键字创建水平柱状图 - 使用
title关键字添加标题 - 使用
x-axis和y-axis定义坐标轴 - 使用
bar关键字定义柱状图数据系列
xychart-beta
title "月度销售额"
x-axis [1月, 2月, 3月, 4月, 5月, 6月]
y-axis "销售额(元)" 0 --> 12000
bar [5000, 6000, 7500, 8200, 9500, 10500]
高级功能
组合图表
Mermaid.js支持在同一图表中组合柱状图和折线图,便于数据对比分析:
xychart-beta
title "销售额与利润对比"
x-axis [1月, 2月, 3月, 4月, 5月, 6月]
y-axis "金额(元)" 0 --> 15000
bar "销售额" [5000, 6000, 7500, 8200, 9500, 10500]
line "利润" [1500, 1800, 2250, 2460, 2850, 3150]
水平柱状图
通过添加horizontal关键字可以创建水平方向的柱状图:
xychart-beta horizontal
title "各部门预算"
x-axis "预算金额(万元)" 0 --> 100
y-axis 部门 [研发部, 市场部, 销售部, 人力资源部, 财务部]
bar [65, 25, 45, 15, 10]
多系列柱状图
支持在同一图表中展示多个数据系列,便于比较分析:
xychart-beta
title "2022-2023年季度销售额对比"
x-axis [Q1, Q2, Q3, Q4]
y-axis "销售额(万元)" 0 --> 800
bar "2022年" [450, 520, 680, 720]
bar "2023年" [580, 650, 780, 820]
样式自定义
Mermaid.js提供了丰富的样式自定义选项,可以通过配置参数调整图表的外观。
基本样式配置
---
config:
xyChart:
width: 800
height: 500
titleFontSize: 20
xAxis:
labelFontSize: 14
titleFontSize: 16
yAxis:
labelFontSize: 14
titleFontSize: 16
---
xychart-beta
title "年度销售趋势"
x-axis 月份 [1月, 2月, 3月, 4月, 5月, 6月, 7月, 8月, 9月, 10月, 11月, 12月]
y-axis "销售额(元)" 0 --> 12000
bar [5000, 6000, 7500, 8200, 9500, 10500, 11000, 10200, 9200, 8500, 7000, 6000]
主题变量配置
通过主题变量可以更精细地控制图表样式:
---
config:
themeVariables:
xyChart:
titleColor: "#ff0000"
backgroundColor: "#f0f8ff"
plotColorPalette: "#008000, #faba63, #4682b4"
---
xychart-beta
title "自定义样式的柱状图"
x-axis [A产品, B产品, C产品, D产品]
y-axis "销量" 0 --> 100
bar [65, 45, 80, 30]
bar [35, 75, 40, 60]
主题配置参考:docs/config/theming.md
实际应用示例
销售业绩分析
xychart-beta
title "各地区销售业绩"
x-axis [华东, 华南, 华北, 西南, 西北, 东北, 中部]
y-axis "销售额(万元)" 0 --> 800
bar "2022年" [650, 590, 800, 450, 490, 380, 420]
bar "2023年" [720, 680, 850, 520, 550, 420, 480]
用户增长趋势
xychart-beta
title "月度活跃用户增长"
x-axis [1月, 2月, 3月, 4月, 5月, 6月]
y-axis "用户数(千人)" 0 --> 120
bar "新增用户" [25, 32, 41, 38, 52, 65]
line "总活跃用户" [80, 105, 130, 155, 180, 210]
柱状图演示页面:demos/xychart.html
饼图与柱状图的选择指南
在实际应用中,选择饼图还是柱状图需要根据数据特点和展示目的来决定:
适合使用饼图的场景
- 展示各部分占总体的比例关系
- 数据类别不超过6个(过多会导致图表难以阅读)
- 需要突出显示某个占比较大的部分
- 不需要精确比较不同类别数值
适合使用柱状图的场景
- 比较不同类别之间的具体数值
- 数据类别较多
- 需要展示数据随时间的变化趋势
- 需要比较多个数据系列
- 需要展示负值数据
数据可视化最佳实践
- 保持简洁:避免过度装饰,让数据成为焦点
- 明确标注:确保坐标轴、数据系列有清晰的标签
- 一致比例:保持数值比例一致,避免误导性展示
- 适当排序:对数据进行合理排序,提升可读性
- 颜色搭配:选择合适的颜色方案,确保可访问性
快速上手指南
引入Mermaid.js
在HTML页面中引入Mermaid.js非常简单,推荐使用国内CDN以确保访问速度:
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
基本初始化
<script>
mermaid.initialize({
theme: 'default',
logLevel: 3,
securityLevel: 'loose'
});
</script>
详细安装指南:docs/intro/getting-started.md
完整示例代码
<!DOCTYPE html>
<html>
<head>
<title>Mermaid数据可视化示例</title>
<script src="https://cdn.jsdelivr.net/npm/mermaid@10/dist/mermaid.min.js"></script>
<script>
mermaid.initialize({ theme: 'forest' });
</script>
</head>
<body>
<h1>销售数据可视化</h1>
<h2>产品类别占比</h2>
<pre class="mermaid">
pie showData
title 产品类别销售占比
"电子产品" : 45
"服装鞋帽" : 25
"家居用品" : 15
"食品饮料" : 15
</pre>
<h2>月度销售趋势</h2>
<pre class="mermaid">
xychart-beta
title 月度销售额
x-axis [1月, 2月, 3月, 4月, 5月, 6月]
y-axis "销售额(万元)" 0 --> 120
bar [55, 62, 78, 85, 92, 105]
</pre>
</body>
</html>
总结与展望
Mermaid.js提供了强大而简洁的数据可视化能力,通过简单的文本描述就能创建专业的饼图和柱状图,极大降低了数据可视化的门槛。无论是在技术文档、博客文章还是演示报告中,Mermaid.js都能帮助你快速有效地展示数据。
随着Mermaid.js的不断发展,其数据可视化功能也在持续增强。未来我们可以期待更多图表类型的支持和更丰富的交互功能,让数据可视化变得更加简单和高效。
社区贡献指南:CONTRIBUTING.md
通过本文的介绍,相信你已经掌握了Mermaid.js饼图和柱状图的基本使用方法。现在就开始尝试用Mermaid.js来可视化你的数据吧!
Kimi-K2.5Kimi K2.5 是一款开源的原生多模态智能体模型,它在 Kimi-K2-Base 的基础上,通过对约 15 万亿混合视觉和文本 tokens 进行持续预训练构建而成。该模型将视觉与语言理解、高级智能体能力、即时模式与思考模式,以及对话式与智能体范式无缝融合。Python00- QQwen3-Coder-Next2026年2月4日,正式发布的Qwen3-Coder-Next,一款专为编码智能体和本地开发场景设计的开源语言模型。Python00
xw-cli实现国产算力大模型零门槛部署,一键跑通 Qwen、GLM-4.7、Minimax-2.1、DeepSeek-OCR 等模型Go06
PaddleOCR-VL-1.5PaddleOCR-VL-1.5 是 PaddleOCR-VL 的新一代进阶模型,在 OmniDocBench v1.5 上实现了 94.5% 的全新 state-of-the-art 准确率。 为了严格评估模型在真实物理畸变下的鲁棒性——包括扫描伪影、倾斜、扭曲、屏幕拍摄和光照变化——我们提出了 Real5-OmniDocBench 基准测试集。实验结果表明,该增强模型在新构建的基准测试集上达到了 SOTA 性能。此外,我们通过整合印章识别和文本检测识别(text spotting)任务扩展了模型的能力,同时保持 0.9B 的超紧凑 VLM 规模,具备高效率特性。Python00
KuiklyUI基于KMP技术的高性能、全平台开发框架,具备统一代码库、极致易用性和动态灵活性。 Provide a high-performance, full-platform development framework with unified codebase, ultimate ease of use, and dynamic flexibility. 注意:本仓库为Github仓库镜像,PR或Issue请移步至Github发起,感谢支持!Kotlin08
VLOOKVLOOK™ 是优雅好用的 Typora/Markdown 主题包和增强插件。 VLOOK™ is an elegant and practical THEME PACKAGE × ENHANCEMENT PLUGIN for Typora/Markdown.Less00