当前位置: 首页 > news >正文

使用 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 图表,并进行中文支持处理。

http://www.jsqmd.com/news/263688/

相关文章:

  • AI大模型学习完整路线图:AI大模型学习全攻略,程序员必备的五阶段学习路线图
  • 企业内部模型上线前,必须补上的一项测试:执行态稳定性
  • TDengine C# 语言连接器进阶指南
  • 人工智能之数据分析 Pandas:第二章 Series - 实践
  • 为什么大多数 LLM 在金融和医疗中会“系统性偏保守”
  • 通用 LLM 执行态稳定性标准(Draft v1.0)Universal LLM Execution State Stability Standard · U-ESS v1.0 发布
  • CCF T3
  • 调色板示例颜色数据获取-基于 Flutter × OpenHarmony
  • 【多智能体控制】多智能体点对点转移的分布式模型预测控制【含Matlab源码 14976期】
  • UE 增强输入(2)
  • dify制作的工作流如何通过API调用
  • (5-2)UCLASS(..) 的参数
  • (6-2)常见类的继承关系
  • 远程Ubantu Mysql安装 + 本地Windows Navicat连接
  • Ubuntu安装Lamp
  • 2026年国产时序数据库市场全景:从技术突破到行业落地
  • SpringMVC的处理流程
  • (6-1)常见类的继承关系
  • How to do A/B test?
  • 铁轨轨道安全障碍物检测数据集VOC+YOLO格式620张6类别
  • CodeArts Doer代码智能体
  • 大模型驱动的知识图谱构建全攻略:从传统方法到前沿进展,一篇读懂LLM如何重塑知识工程
  • (6-3)常见类的继承关系
  • Python中的异常处理
  • 马斯克2026采访详解:中国AI算力将远超世界,世界变化的奇点即将到来!
  • 学长亲荐2026 TOP8 AI论文网站:专科生毕业论文神器测评
  • 强烈安利8个AI论文软件,MBA毕业论文轻松搞定!
  • 语音识别大模型原理 - 详解
  • AI+时代:程序员必知的就业转型与技能提升指南
  • YOLOv11性能暴涨方案:Mamba-MLLA注意力机制实战集成,精度与速度双提升