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

Written by

in

文章目录
  • 我们使用 pydantic 定义实体关系模型,每条关系包含三个属性:subject、predicate、object。 from pydantic import BaseModel, Field class Relationship(BaseModel): subject: str = Field(…) predicate: str = Field(…) object: str = Field(…)
  • 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 可以直接生成图片文件(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)
  • Mermaid 适合快速生成文档内的关系图,依赖文本描述。 Graphviz 更专业,适合生成高质量图片,但需要安装系统依赖。 中文显示需要注意字体配置,尤其是 Graphviz。 通过本文,你可以快速测试 Python 生成 Mermaid 和 Graphviz 图表,并进行中文支持处理。 到此这篇关于Python使用Mermaid与Graphviz实现关系图表生成的实战指南的文章就介绍到这了,更多相关Python生成关系图表内容请搜索风君子博客以前的文章或继续浏览下面的相关文章希望大家以后多多支持风君子博客! 您可能感兴趣的文章: python Seaborn绘制统计图全面指南(直方图散点图小提琴图热力图相关系数图多张合并) Python使用Networkx实现复杂的人物关系图 详解Python中四种关系图数据可视化的效果对比 Python实现数据可视化图表生成(适合新手入门) Python如何在Word中生成多种不同类型的图表 Python读取csv、Excel文件生成图表的方法
  • 目录
    • 一、准备工作
      • 1. 安装依赖
    • 二、定义关系模型
      • 三、生成 Mermaid 图表
        • 四、生成 Graphviz 图表
          • 五、完整测试脚本
            • 六、小结

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

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

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

              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 流程图代码。

              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 可以直接生成图片文件(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)
              

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

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

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

              您可能感兴趣的文章:

              • python Seaborn绘制统计图全面指南(直方图散点图小提琴图热力图相关系数图多张合并)
              • Python使用Networkx实现复杂的人物关系图
              • 详解Python中四种关系图数据可视化的效果对比
              • Python实现数据可视化图表生成(适合新手入门)
              • Python如何在Word中生成多种不同类型的图表
              • Python读取csv、Excel文件生成图表的方法

              站内搜索