2026-05-20 | 预计阅读:8 分钟 Read Time: 8 min read | mermaid

高级扩展图表(XY 图、四象限图与思维导图)

Mermaid 的最新版本中持续推出了一系列高级扩展图表。这些图表包括用于基础数值可视化的 XY 坐标图(XY Chart)、用于战略优先级决策的四象限图(Quadrant Chart),以及快速梳理结构和头脑风暴的思维导图(Mindmap)。

一、XY 坐标图表:轻量级曲线与柱状

在不依赖重型图表库的情况下,Mermaid 支持在 Markdown 文档中直接编写简单的二维曲线图和柱状图。

xychart-beta
    title "服务器 QPS 压力与响应时间走势"
    x-axis ["08:00", "10:00", "12:00", "14:00", "16:00", "18:00"]
    y-axis "QPS (K/s)" 0 --> 15
    bar [3.2, 5.8, 12.4, 9.1, 14.2, 8.5]

XY 图表坐标轴与数值定义解析: 在这段代码中,xychart-beta 声明该图表处于 Beta 版本规范。title 给出图表标题。x-axis 通过中括号数组定义了 X 轴的各个分类节点(如时间点)。y-axis 则配置了 Y 轴的单位说明以及坐标范围(从0到15)。最关键的在于,我们使用 bar [数值列表] 定义了对应的柱状高度。除此之外,该图表还全面支持 line [数值列表] 绘制连续的折线图。它能在轻量级的静态技术博客和 PRD 需求文档中,无缝呈现核心指标走势。

二、四象限图:战略分析与优先级判定

四象限图(Quadrant Chart)是进行产品功能优先级评定、战略决策定位的黄金工具:

quadrantChart
    title 2026 核心需求优先级分析
    x-axis 低开发成本 --> 高开发成本
    y-axis 低商业价值 --> 高商业价值
    quadrant-1 战略性必做功能
    quadrant-2 长远战略规划
    quadrant-3 建议暂缓安排
    quadrant-4 快捷增益功能
    功能 A: [0.3, 0.8]
    功能 B: [0.75, 0.4]

四象限图设定与象限标签深度解析: 四象限图由 quadrantChart 声明。通过 x-axisy-axis 定义两个交叉轴线的极端意义,轴线会自动将整个画布划分为四个区域,并依此从右上、左上、左下、右下分别分配 quadrant-1quadrant-4 四个自定义标题。而具体的数据项,如 功能 A: [0.3, 0.8],其数值坐标在 0 到 1 之间(0.5 为几何中轴点)。该功能会精准地把“功能 A”打在右上角(开发成本较低且商业价值极高)的“黄金象限”,帮助研发团队做出最科学的产品排期决定。

三、思维导图:头脑风暴结构化

思维导图(Mindmap)是快速捕捉思维火花、梳理功能树及知识点体系的最佳工具:

mindmap
  root((Carbon Note 内核))
    Markdown 渲染
      多级标题
      GFM 扩展表格
    Mermaid 引擎
      流程图
      时序图

思维导图根节点与层级展开规则: 思维导图使用 mindmap 作为开头。通过缩进来声明知识节点的隶属层级关系。在上方语法中,root((Carbon Note 内核)) 声明了带有双层圆圈样式的根节点。之后的子代分支随着缩进层层铺展。Mermaid 会自动根据分支的多少,分配优雅、和谐的分支曲线和文字防重叠定位。思维导图极其适合写在技术文章的导读、复杂系统架构的组件大纲,让读者能用一秒钟梳理出整篇文章的信息树。

四、常见问题与避坑指南(FAQ)

  1. 问题:XY 图表的折线 line 和柱状 bar 里面的数组元素个数与 x-axis 不匹配导致显示异常?
    • 解决方法:X 轴有多少个分类,您的柱状或折线数组内就必须有完全对应数量的数值。例如 x-axis 有6个时间点,数值列表就必须包含6个元素。
  2. 问题:四象限图的数据点无法精确打到目标区域,数值定义超标?
    • 解决方法:请注意,四象限图的数据点坐标取值范围必须介于 0.01.0 之间。超过 1.0 的数字会导致象限位置溢出或语法报错。

Advanced Charts: XY Chart, Quadrant, and Mindmap

Mermaid supports advanced data and decision visualization tools directly in Markdown, including XY Charts, Quadrant strategic matrices, and structured Mindmaps.

1. XY Charts: Lightweight Curves and Bars

Create instant numerical visual bars and trend curves inside your technical documents:

xychart-beta
    title "Server QPS and Latency Metric 2026"
    x-axis ["08:00", "10:00", "12:00", "14:00", "16:00", "18:00"]
    y-axis "QPS (K/s)" 0 --> 15
    bar [3.2, 5.8, 12.4, 9.1, 14.2, 8.5]

XY Slicing Axis and Parameters: The layout initialized via xychart-beta processes arrays directly. x-axis maps discrete timeline slots, while y-axis sets coordinate heights. You can overlay bar data streams via bar or line charts via line. This is ideal for light, zero-dependency analytics dashboards.

2. Quadrant Charts: Strategic Prioritization

Quadrant Charts map features or investments based on intersecting metric thresholds:

quadrantChart
    title Feature Priority Map 2026
    x-axis Low Effort --> High Effort
    y-axis Low Value --> High Value
    quadrant-1 Quick Wins
    quadrant-2 Strategic Plans
    quadrant-3 Backlog Ideas
    quadrant-4 Low Returns
    Feature A: [0.3, 0.8]
    Feature B: [0.75, 0.4]

Quadrant Layout Mapping Rules: Initiated via quadrantChart, the coordinate grid divides the area into four equal boxes. Data entries are formatted as Label: [X, Y], with values bounded strictly between 0.0 and 1.0.

3. Mindmaps: Structural Brainstorming

Mindmaps allow you to outline and categorize knowledge hierarchies:

mindmap
  root((Carbon Note Core))
    Markdown Parser
      Headings
      GFM Tables
    Mermaid Engine
      Flowcharts
      Sequence Charts

Mindmap Nodes and Hierarchy Formatting: Initiated by mindmap, parent-child links are established using spaces and tab indentations. Node shapes can be stylized using unique brackets (e.g. root((Double Circle)) or root[Rectangle]).

4. FAQ

  1. Why is my XY Chart rendering incorrect numbers or breaking?
    • Solution: Ensure your bar or line arrays have exactly the same length as your x-axis category array.
  2. What happens if a Quadrant Chart data point has a value greater than 1.0?
    • Solution: Bounded coordinates must be between 0.0 and 1.0 (e.g. [0.5, 0.5] is the center intersection point).