首页
/ Mermaid.js饼图与柱状图:数据可视化的轻量级解决方案

Mermaid.js饼图与柱状图:数据可视化的轻量级解决方案

2026-02-05 04:37:15作者:裘晴惠Vivianne

你是否还在为复杂数据报表的可视化发愁?是否觉得专业图表工具学习成本太高?本文将介绍如何使用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提供了简洁而强大的饼图绘制功能,让你能够快速创建专业的饼图。

基本语法

创建饼图的基本语法非常简单,只需遵循以下步骤:

  1. pie关键字开始定义饼图
  2. 可选:使用showData关键字显示具体数据值
  3. 可选:使用title关键字添加标题
  4. 定义数据项,格式为:"数据标签" : 数据值
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模块支持柱状图绘制,同时还支持折线图等其他类型,提供了丰富的数据可视化能力。

基本语法

创建柱状图的基本语法如下:

  1. xychart-beta关键字开始定义图表
  2. 可选:使用horizontal关键字创建水平柱状图
  3. 使用title关键字添加标题
  4. 使用x-axisy-axis定义坐标轴
  5. 使用bar关键字定义柱状图数据系列
xychart-beta
    title "月度销售额"
    x-axis [1月, 2月, 3月, 4月, 5月, 6月]
    y-axis "销售额(元)" 0 --> 12000
    bar [5000, 6000, 7500, 8200, 9500, 10500]

语法参考:docs/syntax/xyChart.md

高级功能

组合图表

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个(过多会导致图表难以阅读)
  • 需要突出显示某个占比较大的部分
  • 不需要精确比较不同类别数值

适合使用柱状图的场景

  • 比较不同类别之间的具体数值
  • 数据类别较多
  • 需要展示数据随时间的变化趋势
  • 需要比较多个数据系列
  • 需要展示负值数据

数据可视化最佳实践

  1. 保持简洁:避免过度装饰,让数据成为焦点
  2. 明确标注:确保坐标轴、数据系列有清晰的标签
  3. 一致比例:保持数值比例一致,避免误导性展示
  4. 适当排序:对数据进行合理排序,提升可读性
  5. 颜色搭配:选择合适的颜色方案,确保可访问性

快速上手指南

引入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来可视化你的数据吧!

登录后查看全文
热门项目推荐
相关项目推荐