Graphviz的Dot的Python接口
项目描述
Pydot
pydot
是一个用于 Graphviz 及其 DOT 语言的 Python 接口。您可以使用 pydot
创建、读取、编辑和可视化图。
- 它是用纯 Python 编写的,除了 Graphviz 本身外,只有一个依赖项 – pyparsing。
- 它与
networkx
兼容,可以将其图转换为pydot
。
要了解 Graphviz 能做什么,请查看 Graphviz 画廊!
依赖项
pyparsing
:仅用于 加载 DOT 文件,在pydot
安装过程中自动安装。- GraphViz:用于以多种格式(包括 PNG、SVG、PDF 等)渲染图。应单独安装,使用您的系统 包管理器、类似工具(例如,MacPorts)或从 其源代码 安装。
安装
-
最新版本,来自 PyPI
pip install pydot
-
当前开发代码,来自此存储库
pip install git+https://github.com/pydot/pydot.git
-
开发安装,以修改代码或贡献更改
# Clone the repository git clone https://github.com/pydot/pydot cd pydot # (Optional: create a virtual environment) python3 -m venv _venv . ./_venv/bin/activate # Make an editable install of pydot from the source tree pip install -e .
快速入门
1. 输入
无论您想用 pydot
做什么,您都需要一些输入来开始。以下是获取数据的一些常见方法。
从现有的 DOT 文件导入图
假设您已经有一个文件 example.dot
(基于 Wikipedia 的示例)
graph my_graph {
bgcolor="yellow";
a [label="Foo"];
b [shape=circle];
a -- b -- c [color=blue];
}
您可以使用这种方式从文件中读取图
import pydot
graphs = pydot.graph_from_dot_file("example.dot")
graph = graphs[0]
从现有的 DOT 字符串解析图
如果您已经有一个描述 DOT 图的字符串,请使用此方法。
import pydot
dot_string = """graph my_graph {
bgcolor="yellow";
a [label="Foo"];
b [shape=circle];
a -- b -- c [color=blue];
}"""
graphs = pydot.graph_from_dot_data(dot_string)
graph = graphs[0]
使用 pydot 对象从头开始创建图
从这里开始就是有趣的部分。如果您想用 Python 代码构建新的图,请使用此方法。
import pydot
graph = pydot.Dot("my_graph", graph_type="graph", bgcolor="yellow")
# Add nodes
my_node = pydot.Node("a", label="Foo")
graph.add_node(my_node)
# Or, without using an intermediate variable:
graph.add_node(pydot.Node("b", shape="circle"))
# Add edges
my_edge = pydot.Edge("a", "b", color="blue")
graph.add_edge(my_edge)
# Or, without using an intermediate variable:
graph.add_edge(pydot.Edge("b", "c", color="blue"))
您可以在您的 Python 程序中使用这些基本构建块动态生成图。例如,从一个基本的 pydot.Dot
图对象开始,然后随着您添加节点和边来循环处理您的数据。使用您数据中的值作为标签来确定形状、边等。这允许您轻松地创建成千上万个相关对象的可视化。
将 NetworkX 图转换为 pydot 图
NetworkX 为 pydot 图提供了转换方法
import networkx
import pydot
# See NetworkX documentation on how to build a NetworkX graph.
graph = networkx.drawing.nx_pydot.to_pydot(my_networkx_graph)
2. 编辑
您现在可以使用 pydot 方法进一步操作您的图。
添加更多节点和边
graph.add_edge(pydot.Edge("b", "d", style="dotted"))
编辑图、节点和边的属性
graph.set_bgcolor("lightyellow")
graph.get_node("b")[0].set_shape("box")
3. 输出
这里有三种不同的输出选项
生成图像
如果您只想将图像保存到文件,请使用其中一个 write_*
方法。
graph.write_png("output.png")
如果您需要进一步处理图像输出,则 create_*
方法将为您提供 Python bytes
对象。
output_graphviz_svg = graph.create_svg()
检索 DOT 字符串
您可以从以下两种 DOT 字符串中选择
-
“原始” pydot DOT:这是生成速度最快的,通常仍然看起来与您输入的 DOT 非常相似。它由 pydot 本身生成,而不调用 Graphviz。
# As a string: output_raw_dot = graph.to_string() # Or, save it as a DOT-file: graph.write_raw("output_raw.dot")
-
Graphviz DOT:您可以使用它来检查 Graphviz 在生成图像之前如何布局图。它由 Graphviz 生成。
# As a bytes literal: output_graphviz_dot = graph.create_dot() # Or, save it as a DOT-file: graph.write_dot("output_graphviz.dot")
转换为 NetworkX 图
NetworkX 为 pydot 图提供了转换方法
my_networkx_graph = networkx.drawing.nx_pydot.from_pydot(graph)
更多帮助
有关更多信息,请参阅各种 pydot 对象和方法的帮助文档。例如,help(pydot)
、help(pydot.Graph)
和 help(pydot.Dot.write)
。
欢迎更多 文档贡献。
故障排除
启用日志记录
pydot
使用 Python 的标准 logging
模块。要查看日志,假设尚未配置日志记录
>>> import logging
>>> logging.basicConfig(level=logging.DEBUG)
>>> import pydot
DEBUG:pydot:pydot initializing
DEBUG:pydot:pydot <version>
DEBUG:pydot.core:pydot core module initializing
DEBUG:pydot.dot_parser:pydot dot_parser module initializing
警告:当启用 DEBUG
级别日志记录时,pydot
可能会记录它处理的数据,例如图形内容或 DOT 字符串。这可能导致日志变得非常大或包含敏感信息。
高级日志配置
- 查看 Python 日志记录文档 和
logging_tree
可视化工具。 pydot
不会向其日志记录器添加任何处理器,也不会设置或修改您的根日志记录器。pydot
日志记录器使用默认级别NOTSET
创建。pydot
注册以下日志记录器pydot
:父日志记录器。在启动期间发出少量消息。pydot.core
:与 pydot 对象、Graphviz 执行和其他任何其他未由其他日志记录器涵盖的内容相关的消息。pydot.dot_parser
:与 DOT 字符串解析相关的消息。
许可证
遵照 MIT 许可证 发布。
模块 pydot._vendor.tempfile
基于 Python 3.12 标准库模块 tempfile.py
,版权所有 © 2001-2023 Python 软件基金会。保留所有权利。根据 Python-2.0 许可证授权。
联系方式
当前维护者
- Łukasz Łapiński <lukaszlapinski7 (at) gmail (dot) com>
前任维护者
- Sebastian Kalinowski <sebastian (at) kalinowski (dot) eu> (GitHub: @prmtl)
- Peter Nowee <peter (at) peternowee (dot) com> (GitHub: @peternowee)
原作者:Ero Carrera <ero (dot) carrera (at) gmail (dot) com>
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定要选择哪个,请了解更多关于 安装软件包 的信息。
源代码分布
构建分布
pydot-3.0.2.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9180da540b51b3aa09fbf81140b3edfbe2315d778e8589a7d0a4a69c41332bae |
|
MD5 | 0ae2f28420f32164eb37a3cd7d92380d |
|
BLAKE2b-256 | 85104e4da8c271540dc35914e927546cbb821397f0f9477f4079cd8732946699 |