news 2026/3/23 13:43:52

使用 Python 测试 Mermaid 与 Graphviz 图表生成(支持中文)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
使用 Python 测试 Mermaid 与 Graphviz 图表生成(支持中文)

在数据分析、系统建模或关系可视化场景中,我们常常需要将实体关系以图表形式展示。Python 社区中有两种流行的方案:

  1. Mermaid:基于文本生成流程图、时序图、关系图,常用于文档和网页。
  2. Graphviz:功能强大的图形可视化工具,支持 PNG、SVG 等多种输出格式。

本文将演示如何用 Python 测试生成 Mermaid 和 Graphviz 图表,并兼容中文显示。


一、准备工作

1. 安装依赖

pipinstallpydantic graphviz

注意:Graphviz 生成图像需要系统安装 Graphviz 可执行文件。

  • Ubuntu/Debian:
sudoapt-getinstallgraphviz
  • macOS:
brewinstallgraphviz
  • Windows:请从 Graphviz 官网 下载并安装。

二、定义关系模型

我们使用pydantic定义实体关系模型,每条关系包含三个属性:subjectpredicateobject

frompydanticimportBaseModel,FieldclassRelationship(BaseModel):subject:str=Field(...)predicate:str=Field(...)object:str=Field(...)

三、生成 Mermaid 图表

Mermaid 图表是文本驱动的,我们可以根据关系列表自动生成 Mermaid 流程图代码。

fromgraphviz_renderimportrelationships_to_mermaid# 示例关系relationships=[Relationship(subject="用户",predicate="登录",object="系统"),Relationship(subject="系统",predicate="验证",object="身份"),Relationship(subject="数据库",predicate="存储",object="用户信息"),Relationship(subject="AI助手",predicate="处理",object="请求"),Relationship(subject="文档",predicate="描述",object="功能")]mermaid_code=relationships_to_mermaid(relationships)print("生成的Mermaid代码:\n")print(mermaid_code)

Mermaid 输出示例

登录

验证

存储

处理

描述

用户

系统

身份

数据库

用户信息

AI助手

请求

文档

功能

你可以将上面的代码复制到 Mermaid Live Editor 查看效果。


四、生成 Graphviz 图表

Graphviz 可以直接生成图片文件(PNG、SVG),适合嵌入文档或网页。

frompathlibimportPathfromgraphviz_renderimportrelationships_to_png output_path=Path("./test_relationships.png")try:relationships_to_png(relationships,output_path)print(f"Graphviz图表已保存到:{output_path.absolute()}")exceptExceptionase:print(f"生成Graphviz图表时出错:{e}")print("可能原因:未安装Graphviz或中文字体缺失")

运行后,你将得到如下关系图:

用户 --登录--> 系统 系统 --验证--> 身份 数据库 --存储--> 用户信息 AI助手 --处理--> 请求 文档 --描述--> 功能

如果中文显示异常,可以在 Graphviz 中设置字体,例如:

dot.attr(fontname="Microsoft YaHei")

五、完整测试脚本

#!/usr/bin/env python# -*- coding: utf-8 -*-frompydanticimportBaseModel,FieldfrompathlibimportPathfromgraphviz_renderimportrelationships_to_mermaid,relationships_to_pngclassRelationship(BaseModel):subject:str=Field(...)predicate:str=Field(...)object:str=Field(...)deftest_mermaid_generation():relationships=[Relationship(subject="用户",predicate="登录",object="系统"),Relationship(subject="系统",predicate="验证",object="身份"),Relationship(subject="数据库",predicate="存储",object="用户信息"),Relationship(subject="AI助手",predicate="处理",object="请求"),Relationship(subject="文档",predicate="描述",object="功能")]mermaid_code=relationships_to_mermaid(relationships)print("生成的Mermaid代码:\n",mermaid_code)returnrelationshipsdeftest_graphviz_generation(relationships):output_path=Path("./test_relationships.png")try:relationships_to_png(relationships,output_path)print(f"Graphviz图表已保存到:{output_path.absolute()}")exceptExceptionase:print(f"生成Graphviz图表时出错:{e}")if__name__=="__main__":rels=test_mermaid_generation()test_graphviz_generation(rels)

六、小结

  • Mermaid 适合快速生成文档内的关系图,依赖文本描述。
  • Graphviz 更专业,适合生成高质量图片,但需要安装系统依赖。
  • 中文显示需要注意字体配置,尤其是 Graphviz。

通过本文,你可以快速测试 Python 生成 Mermaid 和 Graphviz 图表,并进行中文支持处理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/15 11:37:16

调色板示例颜色数据获取-基于 Flutter × OpenHarmony

文章目录调色板示例颜色数据获取-基于 Flutter OpenHarmony前言背景Flutter Harmony OpenHarmony 跨端开发介绍开发核心代码代码解析心得总结调色板示例颜色数据获取-基于 Flutter OpenHarmony 前言 在移动端开发中,颜色调色板是 UI 设计和视觉一致性的核心元素…

作者头像 李华
网站建设 2026/3/23 2:12:21

Python中的异常处理

异常 """异常(Exception):1.什么是异常?python运行时,发生的错误,而导致程序最终无法执行,异常!思考:有没有出现错误?编译过程中的错误,红色波浪线运行过程中的错误&…

作者头像 李华
网站建设 2026/3/21 10:27:40

针对Grok接入美国军方奇点先生分析后给出了三封公开信

X54先生抛出观点: 按人工智能底层是设计不得伤害人类,用在军事不就等于让人工智能给出伤害他国最佳方案吗,他国的人类就不是人类吗?今天可以给出威慑他国方案,明天人工智能就会自己得出结论只要为目标也可以伤害非控制…

作者头像 李华