news 2026/5/7 20:35:00

使用 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/5/2 10:45:19

union 和 union all的区别

1、union和union all UNION对两个结果集进行并集操作,不包括重复行,相当于使用distinct关键字。而UNION ALL则对两个结果集进行并集操作,包括重复行,即所有结果全部显示,不管是否重复。 UNION操作会去除重复的记录&…

作者头像 李华
网站建设 2026/4/30 21:25:35

爱心公益 PPT 一键生成平台 TOP6,无需设计基础也能做

6款好用工具推荐,新手也能搞定爱心公益PPT一键生成 作为经常帮公益组织和校园社团做PPT的过来人,我太懂新手做爱心公益PPT的痛点了:找模板耗半天、排版没思路、素材怕侵权,最后熬夜做出来的效果还不尽如人意。其实现在有很多实用工…

作者头像 李华
网站建设 2026/5/2 12:24:32

中小企业必看!RFID资产管理系统,不用大投入也能高效管资产

跟不少中小企业老板和运维聊过,发现大家对资产管理都有个矛盾心理:想做好管理,又怕投入太多成本,最后得不偿失;放任不管,又总被资产混乱、盘点耗时、流失浪费等问题拖后腿。尤其是对于人员精简、预算有限的…

作者头像 李华
网站建设 2026/5/7 22:27:19

互联网大厂Java面试场景:从Spring到微服务的技术探讨

互联网大厂Java面试场景:从Spring到微服务的技术探讨 场景:互联网大厂面试现场 面试官是一位经验丰富的技术专家,而求职者“超好吃”则是一位刚刚准备进入互联网大厂的Java小白程序员。面试官开始了严肃而循序渐进的面试。 第一轮提问&…

作者头像 李华
网站建设 2026/5/2 5:18:45

智能体持久性记忆实战:从0到1构建双路记忆堆栈

本文介绍如何为智能体构建持久性记忆系统,通过双路记忆堆栈(情节记忆语义记忆)解决智能体健忘问题。情节记忆使用向量数据库存储对话历史,语义记忆使用图数据库存储结构化事实。文章详细展示了实现方法、代码构建及实际应用&#…

作者头像 李华
网站建设 2026/4/25 16:48:32

大模型学习全攻略:从零基础到AI专家的系统路线,【2026首发】AI大模型学习路线:适合新手和大学生

本文提供了从入门到高级的大模型学习完整路线,涵盖Python编程、数学基础、机器学习、深度学习等基础知识,以及自然语言处理、计算机视觉等进阶内容,并提供实战案例和学习资源,帮助小白和程序员系统掌握大模型技术,实现…

作者头像 李华