Skip to main content

Graphviz 的 Dot 的 Python 接口

项目描述

构建状态 派皮

关于

pydot

并且networkx可以将其图形转换为pydot.

开发在GitHub进行,您可以在其中报告问题并贡献代码。

例子

这里的示例将向您展示最常见的输入、编辑和输出方法。

输入

无论您想做什么pydot,都需要一些输入才能开始。以下是 3 个常见选项:

  1. 从现有的 DOT 文件导入图形。

    如果您已经有一个描述图形的 DOT 文件,例如作为另一个程序的输出,请使用此方法。假设您已经有了这个example.dot(基于Wikipedia 的示例):

    graph my_graph {
       bgcolor="yellow";
       a [label="Foo"];
       b [shape=circle];
       a -- b -- c [color=blue];
    }
    

    只需从 DOT 文件中读取图表:

    import pydot
    
    graphs = pydot.graph_from_dot_file('example.dot')
    graph = graphs[0]
    
  2. 或:从现有的 DOT 字符串解析图形。

    如果您已经有一个 DOT 字符串描述 Python 变量中的图形,请使用此方法:

    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]
    
  3. 或者:使用 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图形对象开始,然后在添加节点和边的同时遍历数据。使用数据中的值作为标签,以确定形状、边缘等。这样,您可以轻松构建数千个相互关联的项目的可视化。

  4. 或:将 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)
    

编辑

您现在可以使用 pydot 方法进一步操作您的图表:

  • 添加更多节点和边:

    graph.add_edge(pydot.Edge('b', 'd', style='dotted'))
    
  • 编辑图形、节点和边的属性:

    graph.set_bgcolor('lightyellow')
    graph.get_node('b')[0].set_shape('box')
    

输出

以下是 3 种不同的输出选项:

  1. 生成图像。

    要生成图形的图像,请使用create_*()write_*()方法之一。

    • 如果您需要在 Python 中进一步处理输出,这些 create_*方法将为您提供 Python 字节对象:

      output_graphviz_svg = graph.create_svg()
      
    • 如果您只想将图像保存到文件中,请使用以下write_*方法之一:

      graph.write_png('output.png')
      
  2. 检索 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')
      
  3. 转换为 NetworkX 图。

    在这里,NetworkX 也有一个 pydot 图的转换方法:

    my_networkx_graph = networkx.drawing.nx_pydot.from_pydot(graph)
    

更多帮助

如需更多帮助,请参阅各种 pydot 对象和方法的文档字符串。例如help(pydot)help(pydot.Graph)help(pydot.Dot.write)

欢迎更多文档贡献

安装

PyPI使用pip

pip install pydot

从来源:

python setup.py install

依赖项

执照

根据MIT 许可分发

联系人

维护者:

原作者:埃罗·卡雷拉ero.carrera@gmail.com

项目详情


下载文件

下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。

源分布

pydot-1.4.2.tar.gz (137.7 kB 查看哈希

已上传 source

内置分布

pydot-1.4.2-py2.py3-none-any.whl (21.9 kB 查看哈希

已上传 py2 py3