python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python生成关系图表

Python使用Mermaid与Graphviz实现关系图表生成的实战指南

作者:weixin_46244623

这篇文章主要为大家详细介绍了两种Python生成关系图表的方法,即Mermaid和Graphviz,下面小编就和大家详细介绍一下具体的实现方法吧

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

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

一、准备工作

1. 安装依赖

pip install pydantic graphviz

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

Ubuntu/Debian:

sudo apt-get install graphviz

macOS:

brew install graphviz

Windows:请从 Graphviz 官网 下载并安装。

二、定义关系模型

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

from pydantic import BaseModel, Field

class Relationship(BaseModel):
    subject: str = Field(...)
    predicate: str = Field(...)
    object: str = Field(...)

三、生成 Mermaid 图表

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

from graphviz_render import relationships_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 输出示例

四、生成 Graphviz 图表

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

from pathlib import Path
from graphviz_render import relationships_to_png

output_path = Path("./test_relationships.png")

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

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

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

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

dot.attr(fontname="Microsoft YaHei")

五、完整测试脚本

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from pydantic import BaseModel, Field
from pathlib import Path
from graphviz_render import relationships_to_mermaid, relationships_to_png

class Relationship(BaseModel):
    subject: str = Field(...)
    predicate: str = Field(...)
    object: str = Field(...)

def test_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)
    return relationships

def test_graphviz_generation(relationships):
    output_path = Path("./test_relationships.png")
    try:
        relationships_to_png(relationships, output_path)
        print(f"Graphviz图表已保存到: {output_path.absolute()}")
    except Exception as e:
        print(f"生成Graphviz图表时出错: {e}")

if __name__ == "__main__":
    rels = test_mermaid_generation()
    test_graphviz_generation(rels)

六、小结

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

到此这篇关于Python使用Mermaid与Graphviz实现关系图表生成的实战指南的文章就介绍到这了,更多相关Python生成关系图表内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文