衡阳市网站建设_网站建设公司_AJAX_seo优化
2026/1/18 19:02:15 网站建设 项目流程

在数据分析、系统建模或关系可视化场景中,我们常常需要将实体关系以图表形式展示。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 图表,并进行中文支持处理。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询